[#405207] Does `self` and `scope(local)` operate parallels? — "Kumar R." <lists@...>

I am heavily confused with the topic when thinking `self` and `local

21 messages 2013/03/01
[#405211] Re: Does `self` and `scope(local)` operate parallels? — "Kumar R." <lists@...> 2013/03/01

Just to help experts out there I am clearing my statement once again

[#405242] Confusion in instance method calls of super class from subclass — "Kumar R." <lists@...>

I was just playing to see the instance method calls from the subclass

16 messages 2013/03/02
[#405252] Re: Confusion in instance method calls of super class from subclass — Hans Mackowiak <lists@...> 2013/03/03

YOU DID NOT READ WHAT I WAS WRITTEN:

[#405250] Extending Ruby. Little help or guidance if you are willing! — Cliff Rosson <cliff.rosson@...>

Hi Folk,

21 messages 2013/03/03
[#405393] Re: Extending Ruby. Little help or guidance if you are willing! — nannasin smith <lists@...> 2013/03/06

I've tried to do some reading but some of this is a bit over my head.

[#405549] Re: Extending Ruby. Little help or guidance if you are willing! — Cliff Rosson <cliff.rosson@...> 2013/03/10

Haven't been able to touch this in a week but I had a few minutes to look

[#405550] Re: Extending Ruby. Little help or guidance if you are willing! — Bartosz Dziewoński <matma.rex@...> 2013/03/10

On Sun, 10 Mar 2013 04:41:32 +0100, Cliff Rosson <cliff.rosson@gmail.com> wrote:

[#405600] Re: Extending Ruby. Little help or guidance if you are willing! — Cliff Rosson <cliff.rosson@...> 2013/03/11

Got ya. So it doesn't really matter if I convert things to ID and compare

[#405271] Confusion with Ruby's "case/when" block statement — "Kumar R." <lists@...>

Ruby uses `===` operator on the `case/when` type execution style.Now It

13 messages 2013/03/03

[#405310] How `next` works in ruby with `unless` ? — "Kumar R." <lists@...>

The `next` statement is used to skip a part of the loop and continue

25 messages 2013/03/04
[#405311] Re: How `next` works in ruby with `unless` ? — Joel Pearson <lists@...> 2013/03/04

Learn what semicolons do in Ruby.

[#405312] Re: How `next` works in ruby with `unless` ? — Matthew Kerwin <matthew@...> 2013/03/04

What Joel said.

[#405313] Re: How `next` works in ruby with `unless` ? — "Kumar R." <lists@...> 2013/03/04

Matthew Kerwin wrote in post #1100097:

[#405323] YourLanguageSucks — Kiswono Prayogo <kiswono@...>

Hi, i found this link.. https://wiki.theory.org/YourLanguageSucks

10 messages 2013/03/05

[#405376] When can one call themselves a “Rubyist”? — Rafal Chmiel <lists@...>

I was wondering what that term even meant. Is it something to do with

10 messages 2013/03/05

[#405400] Bignum-Fixnum-Numeric confusion — Pritam Dey <lists@...>

Hi,

13 messages 2013/03/06

[#405444] Question regarding automating some Outlook/IMAP and pdf parsing functions w/ ruby? — Ed Zimmerman <lists@...>

Hello,

20 messages 2013/03/07

[#405477] Compiling Ruby 2.0, problem with OpenSSL — "Piotr P." <lists@...>

Trying to compile Ruby 2.0 from source, having problem with it, getting

10 messages 2013/03/07

[#405495] RubyExcel class. Useful? — Joel Pearson <lists@...>

I've managed to create a (relatively) stable data-processing class which

32 messages 2013/03/08

[#405570] Confusion with block local variable declaration with block variable declaration within the pipe `|` — Love U Ruby <lists@...>

Why are we not allowed to create local variables or new object with

17 messages 2013/03/11

[#405597] Confusion with empty block printing — Love U Ruby <lists@...>

When I typed the below in my IRB:

18 messages 2013/03/11

[#405608] Access values for JSON.parse response — Nicole Villette <lists@...>

Hello, Does anyone know who to get the values from a nested hash in

17 messages 2013/03/11

[#405630] Confusion with some Module methods. — Love U Ruby <lists@...>

Can anyone help me to understand how the below module methods works?

16 messages 2013/03/12

[#405656] Confusion with Strings — Love U Ruby <lists@...>

From the book I read a line about string :

18 messages 2013/03/12

[#405762] Understanding Ruby Classes, Objects and Methods. — Kedar Mhaswade <lists@...>

Dear Rubyists,

12 messages 2013/03/13

[#405931] Finding one's way with 'super' in define_method/alias_emthod — Marcin Rzeźnicki <marcin.rzeznicki@...>

Hi all!

12 messages 2013/03/18
[#405935] Re: Finding one's way with 'super' in define_method/alias_emthod — Robert Klemme <shortcutter@...> 2013/03/18

On Mon, Mar 18, 2013 at 5:50 PM, Marcin Rze=C5=BAnicki

[#405936] Re: Finding one's way with 'super' in define_method/alias_emthod — "Marcin R." <lists@...> 2013/03/18

Robert Klemme wrote in post #1102151:

[#405942] Re: Finding one's way with 'super' in define_method/alias_emthod — Robert Klemme <shortcutter@...> 2013/03/18

On Mon, Mar 18, 2013 at 8:39 PM, Marcin R. <lists@ruby-forum.com> wrote:

[#405986] Ruby tainting on primitives — "Nicolas V." <lists@...>

Hi there,

18 messages 2013/03/20

[#405987] Why was the object_id for true and nil changed in ruby2.0? — Bharadwaj Srigiriraju <lists@...>

irb(main):001:0> true.object_id

11 messages 2013/03/20

[#406015] fixedpnt 0.0.1: Binary Fixed Point Calculations — Axel Friedrich <lists@...>

https://github.com/Axel2/fixedpnt.rb

12 messages 2013/03/20

[#406184] Nokogiri help parsing HTML — Paul Mena <lists@...>

I'm relatively new to Ruby (and therefore Nokogiri) and am trying to

18 messages 2013/03/26

[#406258] Translation Project — Jeremy Henderson <lists@...>

Hello all! This is my first post! I started learning Ruby about 3 weeks

22 messages 2013/03/28

[#406291] Hash with default — Harry Kakueki <list.push@...>

I would like to make a hash like h2 with the default described by h in one

12 messages 2013/03/29

[#406375] Ruby Gotchas presentation slides — Dave Aronson <rubytalk2dave@...>

I recently made available the slides for a presentation I did

13 messages 2013/03/30

[#406387] Private setters can be called by self, why not getters? — Josh Cheek <josh.cheek@...>

class Counter

9 messages 2013/03/31

Re: cannot get blocks working

From: Josh Cheek <josh.cheek@...>
Date: 2013-03-13 13:01:27 UTC
List: ruby-talk #405730
On Wed, Mar 13, 2013 at 7:58 AM, Josh Cheek <josh.cheek@gmail.com> wrote:

> On Wed, Mar 13, 2013 at 7:30 AM, Aashish Kiran <lists@ruby-forum.com>wrote:
>
>> Hi,
>> Below is the piece of code. Can anyone help in getting expected output.
>>
>>
>> ------------------------------------------------------------
>>
>> class XmlDoc
>>   def method_missing(name, *args, &block)
>>     self.class.class_eval do
>>       define_method(name) do |*args, &block|
>>         if block_given?
>>           temp = "<#{name}#{temp}>" + block.call + "</#{name}>"
>>         else
>>           "<#{name}></#{name}>"
>>         end
>>       end
>>     end
>>     send(name, *args, &block)
>>   end
>> end
>>
>> x = XmlDoc.new
>>
>>
>> p '1111111111111111111'
>> p x.hello
>> #expected output "<hello></hello>"
>>
>> p x.hello{"dolly"}
>> #expected output   "<hello>dolly</hello>"
>>
>> -----------------------------------------------------------------------
>>
>> Thanks,
>> Aashish
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>>
> Change `block_given?` to `block`. The block_given? macro is checking if
> method_missing received a block. Since it didn't the first time you called
> x.hello, it never will (that scope was enclosed).
>
> Also, you should move the method definition out to a helper method,
> because the methods that this defines will capture the block sent to
> method_missing, which in turn capture their environments. Since they're
> becoming methods, they won't be garbage collected, so you run the risk of
> memory leaks. Moving it to a helper method will prevent capturing of the
> block.
>
> Also, when doing metaprogramming, it's usually best to use __send__
> instead of send (to avoid potential namespace conflicts).
>
> I would probably write it like this (well, at this point in my life, I
> probably wouldn't write anything this dynamic, but whatever)
>
>
> class XmlDoc
>   def self.define_node(name)
>     define_method name do |*args, &block|
>       block ||= lambda { '' }
>       "<#{name}>" + block.call + "</#{name}>"
>     end
>   end
>
>   def method_missing(name, *args, &block)
>     self.class.define_node name
>     __send__ name, *args, &block
>   end
> end
>
> x = XmlDoc.new
> x.hello           # => "<hello></hello>"
> x.hello{"dolly"}  # => "<hello>dolly</hello>"
>
>
> -Josh
>

I guess I would also interpolate the block.call, which would allow nil to
be returned, which would allow you to get rid of the reassignment to the
empty lambda.

    define_method name do |*args, &block|
      "<#{name}>#{block.call if block}</#{name}>"
    end

In This Thread