class Tnql::Parser

This class simplifies TNQL queries by wrapping them in a little syntactic sugar.

Attributes

parser[R]

Public Class Methods

new(query) click to toggle source
# File lib/tnql/parser.rb, line 9
def initialize(query)
  raise ArgumentError unless query.is_a?(String)

  @parser = TnqlParser.new
  @result = @parser.parse(query.downcase)

  return if valid?
  # FIXME: should log "Parser failed parsing \"#{query}\": #{@parser.failure_reason} " \
  #                   "(line: #{@parser.failure_line}, column: #{@parser.failure_column})"
end

Public Instance Methods

diagnosis_range() click to toggle source
# File lib/tnql/parser.rb, line 36
def diagnosis_range
  tumour_diagnosisdate = meta_data['tumour.diagnosisdate']
  return nil unless tumour_diagnosisdate

  starts, ends = tumour_diagnosisdate[Tnql::LIMITS]
  Daterange.new(Date.parse(starts), Date.parse(ends))
end
failure_column() click to toggle source
# File lib/tnql/parser.rb, line 32
def failure_column
  valid? ? nil : @parser.failure_column
end
failure_line() click to toggle source
# File lib/tnql/parser.rb, line 28
def failure_line
  valid? ? nil : @parser.failure_line
end
failure_reason() click to toggle source
# File lib/tnql/parser.rb, line 24
def failure_reason
  valid? ? nil : @parser.failure_reason
end
messages() click to toggle source
# File lib/tnql/parser.rb, line 44
def messages # check if any query conditions been ignored or modified
  msg = ''.html_safe
  meta_data.each do |_canonical_name, filter|
    msg += filter[Tnql::MESSAGE] if filter.key?(Tnql::MESSAGE)
  end
  msg
end
meta_data() click to toggle source
# File lib/tnql/parser.rb, line 52
def meta_data
  valid? ? @result.meta_data : {}
end
valid?() click to toggle source
# File lib/tnql/parser.rb, line 20
def valid?
  !@result.nil?
end