class ERLE::Term
Attributes
close[RW]
open[RW]
patterns[RW]
input[RW]
output[RW]
Public Class Methods
enclosure(one, two=one)
click to toggle source
# File lib/erle/elements/term.rb, line 22 def self.enclosure(one, two=one) @open = one.freeze @close = two.freeze ERLE::Registry.enclosure(self, one, two) end
new(input)
click to toggle source
# File lib/erle/elements/term.rb, line 28 def initialize(input) @input = input end
parse(parser)
click to toggle source
# File lib/erle/elements/term.rb, line 49 def self.parse(parser) patterns.find do |pattern| parser.scan(pattern) end result = parser.matched if close && !parser.scan(close) raise parser.raise_unexpected_token("Expected term closure \" #{close.source} \"") end # # Make sure we kill any trailing close # # TODO: Consider raising if no match? # # TODO: Consider doing only if we started with an opening... # parser.scan(ERLE::Registry.closings_regex) # # binding.pry new(result) end
pattern(p)
click to toggle source
# File lib/erle/elements/term.rb, line 17 def self.pattern(p) patterns.add(p) ERLE::Registry.pattern(self, p) end
to_ruby(value)
click to toggle source
# File lib/erle/elements/term.rb, line 36 def self.to_ruby(value) case value when Term value.to_ruby else value end end
until_any_closing()
click to toggle source
# File lib/erle/elements/term.rb, line 45 def self.until_any_closing @until_any_closing ||= Regexp.new("[^#{ERLE::Registry.closings_regex.source}]*") end
Public Instance Methods
to_ruby()
click to toggle source
# File lib/erle/elements/term.rb, line 32 def to_ruby @input end