From: Joel VanderWerf Date: 2005-06-26T05:10:01+09:00 Subject: Re: DSL question Joe Van Dyk wrote: > Hi, > > require 'traits' > $applications = {} > > class Application > has %w{ application_id title executable options} > end > > def application(application_id, &block) > a = Application.new > ###### What goes here? ############# > $applications[application_id] = a > end > > application :joe_app do > title "Joe's Application" > executable "My executable" > options "my options" > end > > application :another_app do > title "Another App" > executable "another exec" > options "the options" > end > > > It should be pretty apparent to what I'm trying to do. Any ideas? > Can I restructure this better somehow? instance_eval can help: class Application def title(*args) case args.size when 1 @title = args[0] when 0 @title end end def initialize(&block) instance_eval(&block) end end a = Application.new do title "Foo" end puts a.title # ==> Foo