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 implicitly 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
19
20
21
|
# File 'lib/babl/nodes/terminal_value.rb', line 19
def dependencies
Utils::Hash::EMPTY
end
|
44
45
46
|
# File 'lib/babl/nodes/terminal_value.rb', line 44
def optimize
self
end
|
#pinned_dependencies ⇒ Object
23
24
25
|
# File 'lib/babl/nodes/terminal_value.rb', line 23
def pinned_dependencies
Utils::Hash::EMPTY
end
|
#render(frame) ⇒ Object
27
28
29
30
31
|
# File 'lib/babl/nodes/terminal_value.rb', line 27
def render(frame)
render_object(frame.object)
rescue TerminalValueError => e
raise Errors::RenderingError, "#{e.message}\n" + frame.formatted_stack(e.babl_stack), e.backtrace
end
|
#render_object(obj, stack = nil) ⇒ Object
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/babl/nodes/terminal_value.rb', line 33
def render_object(obj, stack = nil)
case obj
when ::String, ::Integer, ::NilClass, ::TrueClass, ::FalseClass then obj
when ::Numeric then obj.to_f
when ::Symbol then obj.to_s
when ::Hash then render_hash(obj, stack || [])
when ::Array then render_array(obj, stack || [])
else raise TerminalValueError.new("Only primitives can be serialized: #{obj.inspect}", stack || [])
end
end
|
15
16
17
|
# File 'lib/babl/nodes/terminal_value.rb', line 15
def schema
Schema::Anything.instance
end
|