Module: PatternMatching::DSL_MODULE
- Included in:
- PatternMatching
- Defined in:
- lib/patternmatching/pattern.rb
Overview
Domain Specific Language style methods for inside module
Instance Method Summary collapse
-
#func(name, &block) ⇒ Object
Define method as partial style === Usage func(NAME).seems as PATTERN_1 do ACTION_1 end func(NAME).seems as PATTERN_2 do ACTION_2 end func(NAME).seems something do ACTION_DEFAULT end.
Instance Method Details
#func(name, &block) ⇒ Object
Define method as partial style
Usage
func(NAME).seems as PATTERN_1 do ACTION_1 end func(NAME).seems as PATTERN_2 do ACTION_2 end func(NAME).seems something do ACTION_DEFAULT end
or
func NAME do
seems as {PATTERN_1} do ACTION_1 end
seems as {PATTERN_2} do ACTION_2 end
seems something do ACTION_DEFAULT end
end
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/patternmatching/pattern.rb', line 44 def func(name, &block) pattern_name = ("@_pattern_" + name.to_s ).to_sym unless method_defined?(name) patterns = [] instance_variable_set(pattern_name, patterns) define_method(name) do |target| result = MatchExec.exec_as(target, patterns, self) if result result[0].instance_eval(&result[1]) else nil end end end patterns = instance_variable_get(pattern_name) fragments = PatternFragments.new(patterns) if block fragments.instance_eval(&block) end fragments end |