Class: Babl::Nodes::TerminalValue
- Inherits:
-
Object
- Object
- Babl::Nodes::TerminalValue
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
#dependencies ⇒ Object
17
18
19
|
# File 'lib/babl/nodes/terminal_value.rb', line 17
def dependencies
{}
end
|
#pinned_dependencies ⇒ Object
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
|
13
14
15
|
# File 'lib/babl/nodes/terminal_value.rb', line 13
def schema
Schema::Anything.instance
end
|