lib/dsl-block-engine.rb in dsl-block-engine-0.0.3 vs lib/dsl-block-engine.rb in dsl-block-engine-0.1.0

- old
+ new

@@ -1,54 +1,60 @@ -$:.unshift(File.dirname(__FILE__)) unless - $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__))) - -module DslBlockEngine - VERSION = '0.0.4' - - class Context - def attr_accessor *names - names.each do |name| - self.class.send :attr_accessor, name - end - end - end - - class DslBlockEngine - attr_accessor :categories - - def initialize - @blocks = {} - @categories = [] - end - - def load code - self.instance_eval code - end - - def blocks - @blocks - end - - def create_context *attrs - o = Object.new - attrs.each do |attr| - o.class.send :attr_accessor, attr - end - o - end - - def execute_in_context ctx, category, event - b = @blocks[category][event] - ctx.instance_eval &b - end - - def method_missing name, *args, &block - category = name - event = args[0] - super.method_missing(name, args, &block) unless @categories.include? category - @blocks[category] ||= {} - @blocks[category][event] = block - end - - end - -end +$:.unshift(File.dirname(__FILE__)) unless + $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__))) + +module DslBlockEngine + VERSION = '0.0.4' + + class Context + def attr_accessor *names + names.each do |name| + self.class.send :attr_accessor, name + end + end + end + + class DslBlockEngine + attr_accessor :categories + + def initialize + @blocks = {} + @categories = [] + end + + def load code + self.instance_eval code + end + + def blocks + @blocks + end + + def create_context *attrs + o = Object.new + + def o.add_attribute name + self.class.send :attr_accessor, name + end + + attrs.each do |attr| + o.add_attribute attr + end + + o + end + + def execute_in_context ctx, category, event + b = @blocks[category][event] + ctx.instance_eval &b + end + + def method_missing name, *args, &block + category = name + event = args[0] + super.method_missing(name, args, &block) unless @categories.include? category + @blocks[category] ||= {} + @blocks[category][event] = block + end + + end + +end