Class: Textus::Protocol::Produce::Render

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/protocol/produce/render.rb,
lib/textus/protocol/produce/render/context.rb

Defined Under Namespace

Classes: Context

Instance Method Summary collapse

Constructor Details

#initialize(template_loader:, manifest: nil, source_publish_path: nil, entry_key: nil, edge_store: nil) ⇒ Render

Returns a new instance of Render.



5
6
7
8
9
10
11
# File 'lib/textus/protocol/produce/render.rb', line 5

def initialize(template_loader:, manifest: nil, source_publish_path: nil, entry_key: nil, edge_store: nil)
  @template_loader     = template_loader
  @manifest            = manifest
  @source_publish_path = source_publish_path
  @entry_key           = entry_key
  @edge_store          = edge_store
end

Instance Method Details

#bytes_for(target:, data:, boot:) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/textus/protocol/produce/render.rb', line 13

def bytes_for(target:, data:, boot:)
  raise ArgumentError.new("Produce::Render called for a verbatim target #{target.to.inspect}") unless target.renders?

  locals   = target.inject_boot ? data.merge("boot" => boot) : data
  resolver = @manifest ? Textus::Protocol::Links::Resolver.new(manifest: @manifest) : nil
  ctx      = Render::Context.for(
    locals: locals,
    resolver: resolver,
    from_path: target.to,
    from_key: @entry_key,
    edge_store: @edge_store,
  )
  raw = ERB.new(@template_loader.call(target.template), trim_mode: "-").result(ctx.to_erb_binding)
  rewrite(raw, target.to, resolver)
end