Class: JsonQL::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/json_q_l/parser.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(query) ⇒ Parser

Returns a new instance of Parser.



7
8
9
# File 'lib/json_q_l/parser.rb', line 7

def initialize(query)
  @tokens = Tolkienizer.run(query)
end

Class Method Details

.run(query) ⇒ Object



3
4
5
# File 'lib/json_q_l/parser.rb', line 3

def self.run(query)
  new(query)
end

Instance Method Details

#column_selectObject



11
12
13
14
15
16
17
18
19
# File 'lib/json_q_l/parser.rb', line 11

def column_select
  Proc.new { |table|
    selected_columns.call(table).map do |column|
      {
        column => table.map { |row| row[column] }
      }
    end.flatten
  }
end

#filter_conditions_from_tokensObject



31
32
33
# File 'lib/json_q_l/parser.rb', line 31

def filter_conditions_from_tokens
  Condition.create_from_tokens(condition_tokens)
end

#table_selectObject



21
22
23
24
25
# File 'lib/json_q_l/parser.rb', line 21

def table_select
  Proc.new { |json_object|
    json_object[tokens.slice(from_index + 1)]
  }
end

#where_indexObject



27
28
29
# File 'lib/json_q_l/parser.rb', line 27

def where_index
  tokens.index('WHERE')
end