class Maccro::Matched
placeholders: name => code_range (in method)
Attributes
matches[R]
Public Class Methods
get_replace_pairs(entire_source, placeholders)
click to toggle source
# File lib/maccro/matched.rb, line 14 def self.get_replace_pairs(entire_source, placeholders) # name => code_ranges replace_pairs = {} placeholders.each_pair do |name, code_range| replace_pairs[name] = CodeUtil.code_range_to_code(entire_source, code_range) end replace_pairs # name => snippets end
new(matches)
click to toggle source
# File lib/maccro/matched.rb, line 10 def initialize(matches) @matches = matches.sort{|a, b| a.range <=> b.range } end
Public Instance Methods
rewrite(source)
click to toggle source
# File lib/maccro/matched.rb, line 22 def rewrite(source) # TODO: implement @safe_reference source = source.dup # move tail to head, not to break code positions of unprocessed matches @matches.reverse.each do |match| replace_pairs = self.class.get_replace_pairs(source, match.placeholders) range = CodeUtil.code_range_to_range(source, match.range) source[range] = match.rule.after_code(replace_pairs) end source end