module DeepCover::Node::Mixin::Rewriting

Public Class Methods

included(base) click to toggle source
# File lib/deep_cover/node/mixin/rewriting.rb, line 6
def self.included(base)
  base.has_child_handler('rewrite_%{name}')
end

Public Instance Methods

resolve_rewrite(rule, context) click to toggle source

Replaces all the '%{local}' or '%{some_tracker}' in rewriting rules

# File lib/deep_cover/node/mixin/rewriting.rb, line 19
def resolve_rewrite(rule, context)
  return if rule == nil
  sources = context.tracker_sources
  format(rule, local: covered_code.local_var, node: '%{node}', **sources)
end
rewrite() click to toggle source

Code to add before and after the node for covering purposes

# File lib/deep_cover/node/mixin/rewriting.rb, line 11
def rewrite
end
rewrite_child(child, name = nil) click to toggle source

Default child rewriting rule

# File lib/deep_cover/node/mixin/rewriting.rb, line 15
def rewrite_child(child, name = nil)
end
rewriting_rules() click to toggle source

Returns an array of [range, rule], where rule is a string containing '%{node}' Rules must be ordered inner-most first

# File lib/deep_cover/node/mixin/rewriting.rb, line 27
def rewriting_rules
  [
    resolve_rewrite(rewrite, self),
    resolve_rewrite(parent.rewrite_child(self), parent),
  ].compact.map { |rule| [expression, rule] }
end