class Riml::Compiler::ScopedVisitor
common visiting methods for nodes that are scope modified with variable name prefixes
Private Instance Methods
scope_modifier_for_node(node)
click to toggle source
# File lib/riml/compiler.rb, line 279 def scope_modifier_for_node(node) if node.respond_to?(:name) && node.name == 'self' return node.scope_modifier = '' end if node.scope && node.scope.function? if DefNode === node && !node.defined_on_dictionary? return "s:" elsif GetVariableNode === node && node.scope.function.shadowed_argument?(node.full_name) return "" elsif node.respond_to?(:name) && node.scope.argument_variable_names.include?(node.name) && !(AssignNode === node.parent && node.parent.lhs == node) return "a:" elsif !node.is_a?(CallNode) return "" end end return "" if node.respond_to?(:autoload?) && node.autoload? "s:" end
set_modifier(node)
click to toggle source
# File lib/riml/compiler.rb, line 269 def set_modifier(node) # Ex: n:myVariable = "override riml default scoping" compiles into: # myVariable = "override riml default scoping" if node.scope_modifier == "n:" node.scope_modifier = "" end return node.scope_modifier if node.scope_modifier node.scope_modifier = scope_modifier_for_node(node) end