Class: Babl::Nodes::TerminalValue

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/babl/nodes/terminal_value.rb

Overview

A TerminalValue node is always implicitely added to the end of the chain during compilation. It basically ensures that the output contains only primitives, arrays and hashes.

Defined Under Namespace

Classes: TerminalValueError

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



17
18
19
# File 'lib/babl/nodes/terminal_value.rb', line 17

def dependencies
    {}
end

#pinned_dependenciesObject



21
22
23
# File 'lib/babl/nodes/terminal_value.rb', line 21

def pinned_dependencies
    {}
end

#render(ctx) ⇒ Object



25
26
27
28
29
# File 'lib/babl/nodes/terminal_value.rb', line 25

def render(ctx)
    render_object(ctx.object)
rescue TerminalValueError => e
    raise Errors::RenderingError, "#{e.message}\n" + ctx.formatted_stack(e.babl_stack), e.backtrace
end

#render_object(obj, stack = []) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/babl/nodes/terminal_value.rb', line 31

def render_object(obj, stack = [])
    case obj
    when String, Numeric, NilClass, TrueClass, FalseClass then obj
    when Hash then render_hash(obj, stack)
    when Array then render_array(obj, stack)
    else raise TerminalValueError.new("Only primitives can be serialized: #{obj}", stack)
    end
end

#schemaObject



13
14
15
# File 'lib/babl/nodes/terminal_value.rb', line 13

def schema
    Schema::Anything.instance
end