Class: Riml::AST_Rewriter::ClassDefinitionToFunctions::DefNodeToPrivateFunction

Inherits:
Riml::AST_Rewriter
  • Object
show all
Defined in:
lib/riml/ast_rewriter.rb

Constant Summary

Constants included from Constants

Constants::BUILTIN_COMMANDS, Constants::BUILTIN_FUNCTIONS, Constants::COMPARISON_OPERATORS, Constants::COMPILED_STRING_LOCATION, Constants::DEFINE_KEYWORDS, Constants::END_KEYWORDS, Constants::IGNORECASE_CAPABLE_OPERATORS, Constants::KEYWORDS, Constants::REGISTERS, Constants::RIML_CLASS_COMMANDS, Constants::RIML_COMMANDS, Constants::RIML_END_KEYWORDS, Constants::RIML_FILE_COMMANDS, Constants::RIML_KEYWORDS, Constants::SPECIAL_VARIABLE_PREFIXES, Constants::SPLAT_LITERAL, Constants::UNKNOWN_LOCATION_INFO, Constants::VIML_COMMANDS, Constants::VIML_END_KEYWORDS, Constants::VIML_KEYWORDS

Instance Attribute Summary

Attributes inherited from Riml::AST_Rewriter

#ast, #classes, #options

Instance Method Summary collapse

Methods inherited from Riml::AST_Rewriter

#add_SID_function!, #add_SID_function?, #do_establish_parents, #do_rewrite_on_match, #establish_parents, #initialize, #reorder_includes_based_on_class_dependencies!, #resolve_class_dependencies!, #resolve_class_dependencies?, #rewrite, #rewrite_included_and_sourced_files!, #rewrite_on_match, #watch_for_class_pickup

Constructor Details

This class inherits a constructor from Riml::AST_Rewriter

Instance Method Details

#match?(node) ⇒ Boolean

Returns:

  • (Boolean)


472
473
474
475
# File 'lib/riml/ast_rewriter.rb', line 472

def match?(node)
  return unless node.instance_of?(DefNode) && node.name != 'initialize'
  node.private_function = true
end

#max_recursion_lvlObject



492
493
494
# File 'lib/riml/ast_rewriter.rb', line 492

def max_recursion_lvl
  1
end

#replace(node) ⇒ Object



477
478
479
480
481
482
483
484
485
486
487
488
489
490
# File 'lib/riml/ast_rewriter.rb', line 477

def replace(node)
  class_node = ast.parent
  class_name = class_node.name
  node.scope_modifier = 's:'
  node.original_name = node.name
  node.name = "#{class_name}_#{node.name}"
  node.sid = nil
  node.keywords -= ['dict']
  node.parameters.unshift(class_node.constructor_obj_name)
  # rewrite `self` in function body to a:#{class_name}Obj
  self_to_obj_argument = SelfToObjArgumentInPrivateFunction.new(node, classes, class_node)
  self_to_obj_argument.rewrite_on_match
  reestablish_parents(node)
end