Class: Html2rss::Item
- Inherits:
-
Object
show all
- Defined in:
- lib/html2rss/item.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(xml, config) ⇒ Item
Returns a new instance of Item.
10
11
12
13
|
# File 'lib/html2rss/item.rb', line 10
def initialize(xml, config)
@xml = xml
@config = config
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *_args) ⇒ Object
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/html2rss/item.rb', line 21
def method_missing(method_name, *_args)
return super unless respond_to_missing?(method_name)
attribute_options = config.attribute_options(method_name)
= ItemExtractors.(attribute_options['extractor'])
value = .new(xml, attribute_options).get
post_process(value, attribute_options.fetch('post_process', false))
end
|
Class Method Details
.from_url(url, config) ⇒ Array
56
57
58
59
60
61
62
|
# File 'lib/html2rss/item.rb', line 56
def self.from_url(url, config)
body = get_body_from_url(url, config)
Nokogiri::HTML(body).css(config.selector('items')).map do |xml_item|
new xml_item, config
end
end
|
Instance Method Details
#available_attributes ⇒ Object
32
33
34
35
|
# File 'lib/html2rss/item.rb', line 32
def available_attributes
@available_attributes ||= (%w[title link description author comments updated] &
@config.attribute_names) - ['categories']
end
|
#categories ⇒ Array
47
48
49
50
51
52
|
# File 'lib/html2rss/item.rb', line 47
def categories
categories = config.categories
categories.map!(&method(:method_missing))
categories.uniq!
categories.keep_if { |category| category.to_s != '' }
end
|
#respond_to_missing?(method_name, _include_private = false) ⇒ Boolean
17
18
19
|
# File 'lib/html2rss/item.rb', line 17
def respond_to_missing?(method_name, _include_private = false)
config.attribute?(method_name) || super
end
|
#valid? ⇒ Boolean
At least a title or a description is required to be a valid RSS 2.0 item.
39
40
41
42
43
|
# File 'lib/html2rss/item.rb', line 39
def valid?
title = self.title if config.attribute?(:title)
description = self.description if config.attribute?(:description)
[title, description].join != ''
end
|