class RqlParser::Services::Format

Formats input into parser-understandable string

Constants

RQL_FORMAT

Public Instance Methods

execute() click to toggle source
# File lib/rql_parser/services/format.rb, line 11
def execute
  res = remove_whitespace(rql)
  replace_shorthands(res) unless errors.any?
end

Private Instance Methods

remove_whitespace(rql) click to toggle source
# File lib/rql_parser/services/format.rb, line 18
def remove_whitespace(rql)
  if /[0-9a-zA-Z] [0-9a-zA-Z(]/.match?(rql)
    errors.add(:rql, 'has invalid whitespace')
  else
    rql.delete(' ')
  end
end
replace_shorthands(rql) click to toggle source
# File lib/rql_parser/services/format.rb, line 26
def replace_shorthands(rql)
  res = without_shorthands(rql)
  if /[!<>=]/.match?(res)
    errors.add(:rql, 'has invalid shorthands')
  else
    res
  end
end
without_shorthands(rql) click to toggle source
# File lib/rql_parser/services/format.rb, line 35
def without_shorthands(rql)
  rql.gsub(/([0-9A-Za-z_]+)=(eq|ne|lt|le|gt|ge)=([0-9A-Za-z_]+)/, '\2(\1,\3)')
     .gsub(/([0-9A-Za-z_]+)!=([0-9A-Za-z_]+)/, 'ne(\1,\2)')
     .gsub(/([0-9A-Za-z_]+)<([0-9A-Za-z_]+)/, 'lt(\1,\2)')
     .gsub(/([0-9A-Za-z_]+)<=([0-9A-Za-z_]+)/, 'le(\1,\2)')
     .gsub(/([0-9A-Za-z_]+)>([0-9A-Za-z_]+)/, 'gt(\1,\2)')
     .gsub(/([0-9A-Za-z_]+)>=([0-9A-Za-z_]+)/, 'ge(\1,\2)')
     .gsub(/([0-9A-Za-z_]+)=([0-9A-Za-z_]+)/, 'eq(\1,\2)')
end