Class: Minidusen::Query

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/minidusen/query.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(initial_tokens = []) ⇒ Query

Returns a new instance of Query.



8
9
10
# File 'lib/minidusen/query.rb', line 8

def initialize(initial_tokens = [])
  @tokens = initial_tokens
end

Instance Attribute Details

#tokensObject (readonly)

Returns the value of attribute tokens.



6
7
8
# File 'lib/minidusen/query.rb', line 6

def tokens
  @tokens
end

Instance Method Details

#<<(token) ⇒ Object



12
13
14
# File 'lib/minidusen/query.rb', line 12

def <<(token)
  tokens << token
end

#[](index) ⇒ Object



16
17
18
# File 'lib/minidusen/query.rb', line 16

def [](index)
  tokens[index]
end

#condensedObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/minidusen/query.rb', line 32

def condensed
  include_texts = include.select(&:text?).collect(&:value)
  exclude_texts = exclude.select(&:text?).collect(&:value)
  field_tokens = tokens.reject(&:text?)

  condensed_tokens = field_tokens
  if include_texts.present?
    options = { :field => 'text', :value => include_texts, :exclude => false }
    condensed_tokens << Token.new(options)
  end
  if exclude_texts.present?
    options = { :field => 'text', :value => exclude_texts, :exclude => true }
    condensed_tokens << Token.new(options)
  end
  self.class.new(condensed_tokens)
end

#each(&block) ⇒ Object



28
29
30
# File 'lib/minidusen/query.rb', line 28

def each(&block)
  tokens.each(&block)
end

#excludeObject



53
54
55
# File 'lib/minidusen/query.rb', line 53

def exclude
  self.class.new tokens.select(&:exclude?)
end

#includeObject



49
50
51
# File 'lib/minidusen/query.rb', line 49

def include
  self.class.new tokens.reject(&:exclude?)
end

#sizeObject



20
21
22
# File 'lib/minidusen/query.rb', line 20

def size
  tokens.size
end

#to_sObject



24
25
26
# File 'lib/minidusen/query.rb', line 24

def to_s
  collect(&:to_s).join(" + ")
end