class ConceptQL::Nodifier

Attributes

scope[RW]

Public Class Methods

new(opts={}) click to toggle source
# File lib/conceptql/nodifier.rb, line 7
def initialize(opts={})
  @scope = opts[:scope] || Scope.new(opts)
  @data_model = opts[:data_model] || :omopv4
  @database_type = opts[:database_type] || :impala
  @algorithm_fetcher = opts[:algorithm_fetcher] || (proc do |alg|
    nil
  end)
end

Public Instance Methods

create(operator, *values) click to toggle source
# File lib/conceptql/nodifier.rb, line 16
def create(operator, *values)
  if operator.to_s == 'algorithm'
    statement, desc = algorithm_fetcher.call(values.first)
    if statement
      create(*statement)
    else
      invalid_op(operator, values, "invalid algorithm", values.first)
    end
  elsif klass = operators[operator.to_s]
    klass.new(self, *values)
  else
    invalid_op(operator, values, "invalid operator", operator)
  end
end
to_metadata(opts = {}) click to toggle source
# File lib/conceptql/nodifier.rb, line 31
def to_metadata(opts = {})
  Hash[operators.map { |k, v| [k, v.to_metadata(k, opts)]}.select { |k, v| !v[:categories].empty? }.sort_by { |k, v| v[:name] }]
end

Private Instance Methods

invalid_op(operator, values, *error_args) click to toggle source
# File lib/conceptql/nodifier.rb, line 41
def invalid_op(operator, values, *error_args)
  options = values.extract_options!.merge(errors: [error_args])
  values << options
  Operators::Invalid.new(self, operator, *values)
end
operators() click to toggle source
# File lib/conceptql/nodifier.rb, line 37
def operators
  @operators ||= Operators.operators[@data_model]
end