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
|
2015-11-28 00:26:46 +01:00
|
|
|
@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
|