Class: DefMastership::ChangeRefLineModifier

Inherits:
LineModifierBase show all
Defined in:
lib/defmastership/change_ref_line_modifier.rb

Overview

Change references from temporary to definitive with multiple RefChangers

Instance Attribute Summary

Attributes inherited from LineModifierBase

#changes, #config

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from LineModifierBase

#from_config, #method_missing, #respond_to_missing?

Constructor Details

#initializeChangeRefLineModifier

Returns a new instance of ChangeRefLineModifier.



24
25
26
27
28
29
30
31
32
# File 'lib/defmastership/change_ref_line_modifier.rb', line 24

def initialize
  super
  @config = {
    from_regexp: '',
    to_template: '',
    next_ref: 0
  }
  @in_literal = false
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class DefMastership::LineModifierBase

Class Method Details

.from_config(hash) ⇒ Object



7
8
9
# File 'lib/defmastership/change_ref_line_modifier.rb', line 7

def self.from_config(hash)
  new.from_config(hash)
end

Instance Method Details

#replace(method, line) ⇒ Object



34
35
36
# File 'lib/defmastership/change_ref_line_modifier.rb', line 34

def replace(method, line)
  public_send("replace_#{method}".to_sym, line)
end

#replace_irefs(line) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/defmastership/change_ref_line_modifier.rb', line 46

def replace_irefs(line)
  changes.reduce(line) do |res_line, (from, to)|
    res_line.gsub(regexp_from(:iref, from)) do
      text_with(Regexp.last_match, to)
    end
  end
end

#replace_refdef(line) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/defmastership/change_ref_line_modifier.rb', line 38

def replace_refdef(line)
  if in_literal(line)
    line
  else
    do_replace_refdef(line)
  end
end