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