Module: DeepCover::Node::Mixin::Rewriting

Defined in:
lib/deep_cover/node/mixin/rewriting.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



6
7
8
# File 'lib/deep_cover/node/mixin/rewriting.rb', line 6

def self.included(base)
  base.has_child_handler('rewrite_%{name}')
end

Instance Method Details

#resolve_rewrite(rule, context) ⇒ Object

Replaces all the ‘%local’ or ‘%some_tracker’ in rewriting rules



19
20
21
22
23
# 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

#rewriteObject

Code to add before and after the node for covering purposes



11
12
# File 'lib/deep_cover/node/mixin/rewriting.rb', line 11

def rewrite
end

#rewrite_child(child, name = nil) ⇒ Object

Default child rewriting rule



15
16
# File 'lib/deep_cover/node/mixin/rewriting.rb', line 15

def rewrite_child(child, name = nil)
end

#rewriting_rulesObject

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



27
28
29
30
31
32
# 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