Module: FlagSet

Defined in:
lib/flagset.rb,
lib/flagset/version.rb

Defined Under Namespace

Classes: Base, Builder

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.define(*names, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/flagset.rb', line 7

def self.define(*names, &block)
  if names.any? and block
    raise ArgumentError, 'symbols and block cannot be specified at once'
  end
  builder = Builder.new
  unless block
    block = lambda{| *_ |
      names.each{| name |
        flag name
      }
    }
  end
  builder.define(&block)
  Class.new(Base){
    define_singleton_method(:flagset_builder){
      builder
    }
    define_flags_class_methods
    define_flags_instance_methods
  }
end