class Riml::Compiler::GetCurlyBraceNameNodeVisitor
Public Instance Methods
compile(node)
click to toggle source
# File lib/riml/compiler.rb, line 374 def compile(node) set_modifier(node) node.compiled_output = node.scope_modifier node.compiled_output << compile_parts(node.variable.parts) end
compile_nested_parts(parts, root_part)
click to toggle source
# File lib/riml/compiler.rb, line 401 def compile_nested_parts(parts, root_part) nested = 0 parts.each do |part| if !part.respond_to?(:value) part.accept(visitor_for_node(part, :propagate_up_tree => false)) root_part.compiled_output << "{#{part.compiled_output}" nested += 1 next end if part.value.is_a?(Array) compile_nested_parts(part.value, root_part) next end part.value.accept(visitor_for_node(part.value, :propagate_up_tree => false)) root_part.compiled_output << "{#{part.value.compiled_output}}#{'}' * nested}" end end
compile_parts(parts)
click to toggle source
# File lib/riml/compiler.rb, line 380 def compile_parts(parts) parts.map do |part| if CurlyBraceVariable === part compile_parts(part) elsif part.nested? compile_nested_parts(part.value, part) part.compiled_output elsif part.interpolated? part.value.accept(visitor_for_node(part.value)) "{#{part.value.compiled_output}}" else if String === part.value part.value else part.value.accept(visitor_for_node(part.value)) "{#{part.value.compiled_output}}".gsub(/\n/, '') end end end.join end