Module: StateHandler::Mixing::ClassMethods

Defined in:
lib/state-handler/mixing.rb

Instance Method Summary collapse

Instance Method Details

#class_attribute(*attrs) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/state-handler/mixing.rb', line 75

def class_attribute(*attrs)
  attrs.each do |name|
    class_eval "      def self.\#{name}() nil end\n      def self.\#{name}?() !!\#{name} end\n\n      def self.\#{name}=(val)\n        singleton_class.class_eval do\n          define_method(:\#{name}) { val }\n        end\n        val\n      end\n    RUBY\n  end\nend\n", __FILE__, __LINE__ + 1

#code(*codes, &block) ⇒ Object



103
104
105
106
107
108
109
# File 'lib/state-handler/mixing.rb', line 103

def code(*codes, &block)
  if codes.first.kind_of?(Hash)
    create(codes.first.values.first, codes.first.keys.first)
  elsif block_given?
    create(yield, codes)
  end
end

#group(name, &block) ⇒ Object



111
112
113
114
115
# File 'lib/state-handler/mixing.rb', line 111

def group(name, &block)
  @current_group = name.to_sym
  class_eval(&block)
  @current_group = nil
end

#map(&block) ⇒ Object



91
92
93
94
95
# File 'lib/state-handler/mixing.rb', line 91

def map(&block)
  # TODO: refactor
  # Create Dsl class
  class_eval(&block)
end

#match(regexp) ⇒ Object



97
98
99
100
101
# File 'lib/state-handler/mixing.rb', line 97

def match(regexp)
  state = regexp.values.first
  self.patterns[state] = regexp.keys.first
  add_to_group(state)
end