Module: DeepCover::Node::Mixin::Rewriting
- Defined in:
- lib/deep_cover/node/mixin/rewriting.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#resolve_rewrite(rule, context) ⇒ Object
Replaces all the ‘%local’ or ‘%some_tracker’ in rewriting rules.
-
#rewrite ⇒ Object
Code to add before and after the node for covering purposes.
-
#rewrite_child(child, name = nil) ⇒ Object
Default child rewriting rule.
-
#rewriting_rules ⇒ Object
Returns an array of [range, rule], where rule is a string containing ‘%node’ Rules must be ordered inner-most first.
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 |
#rewrite ⇒ Object
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_rules ⇒ Object
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 |