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