Class: HotelBeds::Parser::ClassMethods::Attribute

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, parser: nil, selector: nil, attr: :content, multiple: false, &block) ⇒ Attribute

Returns a new instance of Attribute.



13
14
15
16
17
18
19
20
21
# File 'lib/hotel_beds/parser.rb', line 13

def initialize(name, parser: nil, selector: nil, attr: :content, multiple: false, &block)
  self.name = name.to_sym
  self.parser = parser
  self.selector = selector
  self.attr = attr
  self.multiple = !!multiple
  self.custom = block
  freeze
end

Instance Attribute Details

#attrObject

Returns the value of attribute attr.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def attr
  @attr
end

#customObject

Returns the value of attribute custom.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def custom
  @custom
end

#multipleObject

Returns the value of attribute multiple.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def multiple
  @multiple
end

#nameObject

Returns the value of attribute name.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def name
  @name
end

#parserObject

Returns the value of attribute parser.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def parser
  @parser
end

#selectorObject

Returns the value of attribute selector.



10
11
12
# File 'lib/hotel_beds/parser.rb', line 10

def selector
  @selector
end

Instance Method Details

#retrieve(doc) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/hotel_beds/parser.rb', line 23

def retrieve(doc)
  return nil if doc.nil?
  if custom
    custom.yield(doc)
  elsif multiple
    doc.css(selector).map(&method(:read_element))
  elsif selector
    (element = doc.at_css(selector)) && element && read_element(element) or nil
  else
    read_element(doc)
  end
end