class Tr8n::RulesEngine::Parser

Attributes

expression[R]
tokens[R]

Public Class Methods

new(expression) click to toggle source
# File lib/tr8n/rules_engine/parser.rb, line 39
def initialize(expression)
  @expression = expression
  if expression =~ /^\(/
    @tokens = expression.scan(/[()]|\w+|@\w+|[\+\-\!\|\=>&<\*\/%]+|".*?"|'.*?'/)
  end
end

Public Instance Methods

parse() click to toggle source
# File lib/tr8n/rules_engine/parser.rb, line 46
def parse
  return @expression unless tokens
  token = tokens.shift
  return nil if token.nil?
  return parse_list if (token) == '('
  return token[1..-2].to_s if token =~ /^['"].*/
  return token.to_i if token =~ /\d+/
  token.to_s
end
parse_list() click to toggle source
# File lib/tr8n/rules_engine/parser.rb, line 56
def parse_list
  list = []
  list << parse until tokens.empty? or tokens.first == ')'
  tokens.shift
  list
end