Class: Amazon::Element
- Inherits:
-
Object
- Object
- Amazon::Element
- Defined in:
- lib/crown/amazon/ecs.rb
Overview
Internal wrapper class to provide convenient method to access Nokogiri element value.
Class Method Summary collapse
-
.get(element, path = '.') ⇒ Object
Return the text value of an element.
-
.get_array(element, path = '.') ⇒ Object
Return an array of values based on the given path.
-
.get_hash(element, path = '.') ⇒ Object
Return child element text values of the given path.
-
.get_unescaped(element, path = '.') ⇒ Object
Return an unescaped text value of an element.
Instance Method Summary collapse
-
#/(path) ⇒ Object
Returns a Nokogiri::XML::NodeSet of elements matching the given path.
- #attributes ⇒ Object
-
#elem ⇒ Object
Returns Nokogiri::XML::Element object.
-
#get(path = '.') ⇒ Object
Get the text value of the given path, leave empty to retrieve current element value.
-
#get_array(path = '.') ⇒ Object
Get the array values of the given path.
-
#get_element(path) ⇒ Object
Similar with search_and_convert but always return first element if more than one elements found.
-
#get_elements(path) ⇒ Object
Return an array of Amazon::Element matching the given path.
-
#get_hash(path = '.') ⇒ Object
Get the children element text values in hash format with the element names as the hash keys.
-
#get_unescaped(path = '.') ⇒ Object
Get the unescaped HTML text of the given path.
-
#initialize(element) ⇒ Element
constructor
Pass Nokogiri::XML::Element object.
- #to_s ⇒ Object
Constructor Details
#initialize(element) ⇒ Element
Pass Nokogiri::XML::Element object
327 328 329 |
# File 'lib/crown/amazon/ecs.rb', line 327 def initialize(element) @element = element end |
Class Method Details
.get(element, path = '.') ⇒ Object
Return the text value of an element.
285 286 287 288 289 290 |
# File 'lib/crown/amazon/ecs.rb', line 285 def get(element, path='.') return unless element result = element.at_xpath(path) result = result.inner_html if result result end |
.get_array(element, path = '.') ⇒ Object
Return an array of values based on the given path.
299 300 301 302 303 304 305 306 307 308 |
# File 'lib/crown/amazon/ecs.rb', line 299 def get_array(element, path='.') return unless element result = element/path if (result.is_a? Nokogiri::XML::NodeSet) || (result.is_a? Array) result.collect { |item| self.get(item) } else [self.get(result)] end end |
.get_hash(element, path = '.') ⇒ Object
Return child element text values of the given path.
311 312 313 314 315 316 317 318 319 320 321 322 323 |
# File 'lib/crown/amazon/ecs.rb', line 311 def get_hash(element, path='.') return unless element result = element.at_xpath(path) if result hash = {} result = result.children result.each do |item| hash[item.name] = item.inner_html end hash end end |
.get_unescaped(element, path = '.') ⇒ Object
Return an unescaped text value of an element.
293 294 295 296 |
# File 'lib/crown/amazon/ecs.rb', line 293 def get_unescaped(element, path='.') result = self.get(element, path) CGI::unescapeHTML(result) if result end |
Instance Method Details
#/(path) ⇒ Object
Returns a Nokogiri::XML::NodeSet of elements matching the given path. Example: element/“author”.
337 338 339 340 341 |
# File 'lib/crown/amazon/ecs.rb', line 337 def /(path) elements = @element/path return nil if elements.size == 0 elements end |
#attributes ⇒ Object
376 377 378 379 |
# File 'lib/crown/amazon/ecs.rb', line 376 def attributes return unless self.elem self.elem.attributes end |
#elem ⇒ Object
Returns Nokogiri::XML::Element object
332 333 334 |
# File 'lib/crown/amazon/ecs.rb', line 332 def elem @element end |
#get(path = '.') ⇒ Object
Get the text value of the given path, leave empty to retrieve current element value.
357 358 359 |
# File 'lib/crown/amazon/ecs.rb', line 357 def get(path='.') Element.get(@element, path) end |
#get_array(path = '.') ⇒ Object
Get the array values of the given path.
367 368 369 |
# File 'lib/crown/amazon/ecs.rb', line 367 def get_array(path='.') Element.get_array(@element, path) end |
#get_element(path) ⇒ Object
Similar with search_and_convert but always return first element if more than one elements found
351 352 353 354 |
# File 'lib/crown/amazon/ecs.rb', line 351 def get_element(path) elements = get_elements(path) elements[0] if elements end |
#get_elements(path) ⇒ Object
Return an array of Amazon::Element matching the given path
344 345 346 347 348 |
# File 'lib/crown/amazon/ecs.rb', line 344 def get_elements(path) elements = self./(path) return unless elements elements = elements.map{|element| Element.new(element)} end |
#get_hash(path = '.') ⇒ Object
Get the children element text values in hash format with the element names as the hash keys.
372 373 374 |
# File 'lib/crown/amazon/ecs.rb', line 372 def get_hash(path='.') Element.get_hash(@element, path) end |
#get_unescaped(path = '.') ⇒ Object
Get the unescaped HTML text of the given path.
362 363 364 |
# File 'lib/crown/amazon/ecs.rb', line 362 def get_unescaped(path='.') Element.get_unescaped(@element, path) end |
#to_s ⇒ Object
381 382 383 |
# File 'lib/crown/amazon/ecs.rb', line 381 def to_s elem.to_s if elem end |