Sha256: ec39e0bf5d5fb254d7d4d5b963fc88e067295dba357e789f70d3e6911b4890b2

Contents?: true

Size: 617 Bytes

Versions: 7

Compression:

Stored size: 617 Bytes

Contents

class Module
  # taken from http://www.artima.com/rubycs/articles/ruby_as_dsl3.html
  # used for the IRC.new config DSL
  def dsl_accessor(*symbols)
    symbols.each do |sym|
      class_eval %{
        def #{sym}(*val)
          if val.empty?
            @#{sym}
          else
            @#{sym} = val.size == 1 ? val[0] : val
          end
        end
      }
    end
  end
  
  def bool_dsl_accessor(*symbols)
    symbols.each do |sym|
      class_eval %{
        def #{sym}(val = true)
          @#{sym} = !!val
        end
        
        def #{sym}?
          !!@#{sym}
        end
      }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
on_irc-2.1.5 lib/on_irc/dsl_accessor.rb
on_irc-2.1.4 lib/on_irc/dsl_accessor.rb
on_irc-2.1.3 lib/on_irc/dsl_accessor.rb
on_irc-2.1.1 lib/on_irc/dsl_accessor.rb
on_irc-2.1.0 lib/on_irc/dsl_accessor.rb
on_irc-2.0.1 lib/on_irc/dsl_accessor.rb
on_irc-2.0.0 lib/on_irc/dsl_accessor.rb