S
Srijayanth Sridhar
[Note: parts of this message were removed to make it a legal post.]
Hello,
I have the following:
class DSL
def DSL.load filename
dsl = new
dsl.instance_eval(File.read(filename))
dsl
end
def to sym,*args,&block
if block_given?
b=class << self;self;end
b.instance_eval {
define_method(sym,*args,&block)
}
end
end
def method_missing sym,*args
"#{sym}"
end
alias :say puts
end
foo=DSL.load("sample.dsl")
sample.dsl:
to smile do
say ""
end
to be_polite {
say "thank you"
}
smile
be_polite
The resulting output is:
moonwolf@trantor:~/ruby/dsl/todo$ ./dsl.rb
moonwolf@trantor:~/ruby/dsl/todo$
be_polite and indeed, anything enclosded in {} doesn't seem to be eval-ed as
blocks. Why is this?
Jayanth
Hello,
I have the following:
class DSL
def DSL.load filename
dsl = new
dsl.instance_eval(File.read(filename))
dsl
end
def to sym,*args,&block
if block_given?
b=class << self;self;end
b.instance_eval {
define_method(sym,*args,&block)
}
end
end
def method_missing sym,*args
"#{sym}"
end
alias :say puts
end
foo=DSL.load("sample.dsl")
sample.dsl:
to smile do
say ""
end
to be_polite {
say "thank you"
}
smile
be_polite
The resulting output is:
moonwolf@trantor:~/ruby/dsl/todo$ ./dsl.rb
moonwolf@trantor:~/ruby/dsl/todo$
be_polite and indeed, anything enclosded in {} doesn't seem to be eval-ed as
blocks. Why is this?
Jayanth