Class: Textus::Protocol::Produce::Render::Context
- Inherits:
-
Object
- Object
- Textus::Protocol::Produce::Render::Context
- Defined in:
- lib/textus/protocol/produce/render/context.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(locals, resolver, from_path, from_key, edge_store) ⇒ Context
constructor
A new instance of Context.
- #to_erb_binding ⇒ Object
Constructor Details
#initialize(locals, resolver, from_path, from_key, edge_store) ⇒ Context
Returns a new instance of Context.
10 11 12 13 14 15 16 |
# File 'lib/textus/protocol/produce/render/context.rb', line 10 def initialize(locals, resolver, from_path, from_key, edge_store) @locals = locals @resolver = resolver @from_path = from_path @from_key = from_key @edge_store = edge_store end |
Class Method Details
.for(locals:, resolver: nil, from_path: nil, from_key: nil, edge_store: nil) ⇒ Object
6 7 8 |
# File 'lib/textus/protocol/produce/render/context.rb', line 6 def self.for(locals:, resolver: nil, from_path: nil, from_key: nil, edge_store: nil) new(locals, resolver, from_path, from_key, edge_store) end |
Instance Method Details
#to_erb_binding ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/textus/protocol/produce/render/context.rb', line 18 def to_erb_binding mod = Module.new @locals.each { |k, v| mod.define_method(k.to_sym) { v } } obj = Object.new.extend(mod) if @resolver && @from_path resolver = @resolver from_path = @from_path from_key = @from_key edge_store = @edge_store obj.define_singleton_method(:textus_link) do |key| resolved = resolver.resolve(key: key, from_path: from_path) edge_store&.record(from_key: from_key, to_key: key) resolved rescue Textus::Protocol::Links::Resolver::UnknownKeyError "`textus get #{key}`" end end obj.instance_eval { binding } end |