Class: XTF::Result::Element::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/xtf/result/element/group.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(xml = nil, query = "") ⇒ Group

Returns a new instance of Group.



14
15
16
17
18
19
20
# File 'lib/xtf/result/element/group.rb', line 14

def initialize(xml=nil, query="")
  start = Time.now
  @doc_hits = []
  @query = query
  parse_xml(xml) if xml
#     RAILS_DEFAULT_LOGGER.debug("~~~~~ #{self.class.name} initialized #{@doc_hits.size} hits in #{Time.now - start} seconds.")
end

Instance Attribute Details

#doc_hitsObject (readonly) Also known as: hits

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def doc_hits
  @doc_hits
end

#end_docObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def end_doc
  @end_doc
end

#queryObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def query
  @query
end

#start_docObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def start_doc
  @start_doc
end

#total_docsObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def total_docs
  @total_docs
end

#total_sub_groupsObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def total_sub_groups
  @total_sub_groups
end

#valueObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/group.rb', line 4

def value
  @value
end

Instance Method Details

#parse_xml(xml) ⇒ Object

Parses the important bits out of the XTF search results using LibXML-Ruby.



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/xtf/result/element/group.rb', line 23

def parse_xml(xml)
  @xml = xml.to_s.squish #.gsub(/\s+/, " ").strip
  @doc = XML::Document.parse_string(@xml).root

  @value = @doc.at('/group')['value']
  @total_sub_groups = @doc.at('/group')['totalSubGroups']
  @total_docs = @doc.at('/group')['totalDocs']
  @start_doc = @doc.at('/group')['startDoc']
  @end_doc = @doc.at('/group')['endDoc']

  ## TODO subgroups
  @doc_hits = @doc.search('/group/docHit').collect { |h| XTF::Result::Element::DocHit.create(h, @query) }.compact
end