Class: XTF::Search::Element::Term
- Defined in:
- lib/xtf/search/element/term.rb
Overview
Models a single XTF Term. However, if the term is surrounded by double-quotes, then a Phrase will be emitted for to_xml_node().
Constant Summary
Constants inherited from Base
Instance Attribute Summary collapse
-
#parse_phrase ⇒ Object
Should a phrase be parsed? Defaults to
true
. -
#section_type ⇒ Object
Returns the value of attribute section_type.
-
#value ⇒ Object
Returns the value of attribute value.
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(*args) ⇒ Term
constructor
new
accepts an optional first argument forvalue
as well as an optional first or second argumentHash
of theTerm
‘sattributes
. - #to_xml ⇒ Object
-
#to_xml_node ⇒ Object
For convenience, if the Term’s value matches /[-s\/.,;:]+/, it will be parsed as a Phrase.
Methods inherited from Base
Constructor Details
#initialize(*args) ⇒ Term
new
accepts an optional first argument for value
as well as an optional first or second argument Hash
of the Term
‘s attributes
. value
may be passed as the first argument or in attributes Hash
with key :value
. section_type
may be passed in the attributes Hash
with key :section_type
.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/xtf/search/element/term.rb', line 15 def initialize(*args) @tag_name = "term" @value = args.shift if args[0].kind_of?(String) params = args[0] || {} @value = params.delete(:value) unless @value @section_type = params.delete(:section_type) @parse_phrase = params.key?(:parse_phrase) ? params.delete(:parse_phrase) : false super @value.strip! unless @value.nil? end |
Instance Attribute Details
#parse_phrase ⇒ Object
Should a phrase be parsed? Defaults to true
9 10 11 |
# File 'lib/xtf/search/element/term.rb', line 9 def parse_phrase @parse_phrase end |
#section_type ⇒ Object
Returns the value of attribute section_type.
6 7 8 |
# File 'lib/xtf/search/element/term.rb', line 6 def section_type @section_type end |
#value ⇒ Object
Returns the value of attribute value.
5 6 7 |
# File 'lib/xtf/search/element/term.rb', line 5 def value @value end |
Instance Method Details
#to_xml ⇒ Object
48 49 50 |
# File 'lib/xtf/search/element/term.rb', line 48 def to_xml to_xml_node.to_s end |
#to_xml_node ⇒ Object
For convenience, if the Term’s value matches /[-s\/.,;:]+/, it will be parsed as a Phrase. Double quotes on either end will be removed.
“this phrase” woud yield:
<phrase>
<term>this</term
<term>phrase</term
</phrase>
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/xtf/search/element/term.rb', line 36 def to_xml_node if self.parse_phrase && self.value =~ XTF::Search::Constants.phrase_delimiters phrase = XTF::Search::Element::Phrase.new(self.attributes) phrase.phrase = self.value phrase.to_xml_node else xml = XTF::XML::Element.new(self.tag_name) self.attributes.each_pair { |key, value| xml.attributes[key.to_s.camelize(:lower)] = value if value} xml.text = self.value xml end end |