class MrBump::RegexTemplate::Generator

Public Instance Methods

compile(exp) click to toggle source
# File lib/mr_bump/regex_template.rb, line 29
def compile(exp)
  "'#{compile!(exp)}'"
end
ev(s) click to toggle source
# File lib/mr_bump/regex_template.rb, line 26
def ev(s)
  "' + (#{s}) + '"
end
make_group(names, regex) click to toggle source
# File lib/mr_bump/regex_template.rb, line 33
def make_group(names, regex)
  return regex if names.empty?
  "(?<#{names.join('.')}>#{regex})"
end
on_etag(name, _offset) click to toggle source
# File lib/mr_bump/regex_template.rb, line 38
def on_etag(name, _offset)
  make_group(name[2], ev(compile!(name).to_s))
end
on_inverted_section(name, _offset, content, _raw, _delims) click to toggle source
# File lib/mr_bump/regex_template.rb, line 51
def on_inverted_section(name, _offset, content, _raw, _delims)
  one_repeat = ev("v = #{compile!(name)}; ctx.push(v); r = '#{compile!(content)}'; ctx.pop; r;")
  make_group( name[2], "(#{one_repeat})?")
end
on_section(name, _offset, content, _raw, _delims) click to toggle source
# File lib/mr_bump/regex_template.rb, line 46
def on_section(name, _offset, content, _raw, _delims)
  one_repeat = ev("v = #{compile!(name)}; ctx.push(v); r = '#{compile!(content)}'; ctx.pop; r;")
  make_group(name[2], "(#{one_repeat})*")
end
on_utag(name, _offset) click to toggle source
# File lib/mr_bump/regex_template.rb, line 42
def on_utag(name, _offset)
  make_group(name[2], ev(compile!(name).to_s))
end
str(s) click to toggle source
Calls superclass method
# File lib/mr_bump/regex_template.rb, line 22
def str(s)
  Regexp.escape(super)
end