middleman/middleman-core/lib/middleman-core/core_extensions/collections/step_context.rb

29 lines
628 B
Ruby
Raw Normal View History

2015-05-04 02:11:49 +02:00
require 'hamster'
2014-06-29 00:07:43 +02:00
module Middleman
module CoreExtensions
module Collections
class StepContext
def self.add_to_context(name, &func)
send(:define_method, :"_internal_#{name}", &func)
end
attr_reader :descriptors
def initialize
@descriptors = ::Hamster::Set.empty
2014-06-29 00:07:43 +02:00
end
def method_missing(name, *args, &block)
internal = :"_internal_#{name}"
if respond_to?(internal)
2015-05-04 02:11:49 +02:00
@descriptors = @descriptors.add(send(internal, *args, &block))
2014-06-29 00:07:43 +02:00
else
super
end
end
end
end
end
end