Class: Natsuzora::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/natsuzora/renderer.rb

Constant Summary collapse

MAX_RENDER_DEPTH =
1024
MAX_OUTPUT_BYTES =

50 MB

50 * 1024 * 1024

Instance Method Summary collapse

Constructor Details

#initialize(ast, template_loader: nil) ⇒ Renderer

Returns a new instance of Renderer.



8
9
10
11
# File 'lib/natsuzora/renderer.rb', line 8

def initialize(ast, template_loader: nil)
  @ast = ast
  @template_loader = template_loader
end

Instance Method Details

#render(data) ⇒ Object

Raises:



13
14
15
16
17
18
19
20
# File 'lib/natsuzora/renderer.rb', line 13

def render(data)
  @context = Context.new(data)
  @depth = 0
  output = render_nodes(@ast.nodes)
  raise RenderError, "output exceeded #{MAX_OUTPUT_BYTES} bytes" if output.bytesize > MAX_OUTPUT_BYTES

  output
end