Class: Texticle::Parser

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#parse_treeObject

Returns the value of attribute parse_tree.



8
9
10
# File 'lib/texticle/parser.rb', line 8

def parse_tree
  @parse_tree
end

#tqueryObject

Returns the value of attribute tquery.



8
9
10
# File 'lib/texticle/parser.rb', line 8

def tquery
  @tquery
end

Instance Method Details

#parse(str) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/texticle/parser.rb', line 10

def parse(str)
  s = str.strip
  p = TQueryParser.new
  @parse_tree = nil
  @tquery = nil
  return @tquery if s.blank?
  failed = false
  while @parse_tree.nil?
    begin
      @parse_tree = p.parse(s)
      raise p.failure_reason if @parse_tree.nil?
      result = parser_tree_to_tquery(@parse_tree)
      break if effectively_empty?(result)
      @tquery = result
    rescue
      raise $! if failed
      failed = true
      s = s.gsub(/[^A-Za-z0-9\s]/, '').strip
      break if effectively_empty?(s)
    end
  end
  @tquery
end