Class: BrandEins::Pages::Archive
- Inherits:
-
Object
- Object
- BrandEins::Pages::Archive
- Defined in:
- lib/brandeins/pages/archive.rb
Overview
Usage of Archive
page = Archive.new(html) page.magazines_for_year(2000)
> [Magazine, Magazine, …]
page.magazine_for(month: 1, year: 2000)
> Magazine
page.magazine_for(month: 13, year: 9999)
> nil
Instance Attribute Summary collapse
-
#html ⇒ Object
readonly
Returns the value of attribute html.
Instance Method Summary collapse
- #archive_url ⇒ Object
- #brandeins_url ⇒ Object
- #cli ⇒ Object
- #document ⇒ Object
- #extract_magazine_month(figure) ⇒ Object
- #extract_magazine_url(figure) ⇒ Object
- #fetcher ⇒ Object
-
#initialize(opts = {}) ⇒ Archive
constructor
A new instance of Archive.
- #magazine_for(month, year) ⇒ Object
- #magazines_for_year(year) ⇒ Object
- #parse_magazines_for_year(year) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Archive
Returns a new instance of Archive.
25 26 27 28 |
# File 'lib/brandeins/pages/archive.rb', line 25 def initialize(opts = {}) @html = opts.fetch(:html, nil) @magazines = {} end |
Instance Attribute Details
#html ⇒ Object (readonly)
Returns the value of attribute html.
23 24 25 |
# File 'lib/brandeins/pages/archive.rb', line 23 def html @html end |
Instance Method Details
#archive_url ⇒ Object
75 76 77 |
# File 'lib/brandeins/pages/archive.rb', line 75 def archive_url BrandEins::Config['archive_uri'] end |
#brandeins_url ⇒ Object
71 72 73 |
# File 'lib/brandeins/pages/archive.rb', line 71 def brandeins_url BrandEins::Config['base_uri'] end |
#cli ⇒ Object
83 84 85 |
# File 'lib/brandeins/pages/archive.rb', line 83 def cli @cli ||= BrandEins::Utils::CliOutput.instance end |
#document ⇒ Object
47 48 49 |
# File 'lib/brandeins/pages/archive.rb', line 47 def document @document ||= Nokogiri::HTML(html) end |
#extract_magazine_month(figure) ⇒ Object
66 67 68 69 |
# File 'lib/brandeins/pages/archive.rb', line 66 def extract_magazine_month(figure) = figure.css('.meta').first .text.match(/(?:.+)(\d{2})\/(?:.+)/) and $+.to_i end |
#extract_magazine_url(figure) ⇒ Object
62 63 64 |
# File 'lib/brandeins/pages/archive.rb', line 62 def extract_magazine_url(figure) brandeins_url + '/' + figure.css('a.read.more').first['href'] end |
#fetcher ⇒ Object
79 80 81 |
# File 'lib/brandeins/pages/archive.rb', line 79 def fetcher @fetcher ||= BrandEins::Utils::Fetcher.instance end |
#magazine_for(month, year) ⇒ Object
43 44 45 |
# File 'lib/brandeins/pages/archive.rb', line 43 def magazine_for(month, year) magazines_for_year(year)[month] end |
#magazines_for_year(year) ⇒ Object
39 40 41 |
# File 'lib/brandeins/pages/archive.rb', line 39 def magazines_for_year(year) @magazines[year] ||= parse_magazines_for_year(year) end |
#parse_magazines_for_year(year) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/brandeins/pages/archive.rb', line 51 def parse_magazines_for_year(year) anchor = document.css("h3#anchor-#{year}").first root = anchor.xpath('../../..') root.css('article figure').each_with_object({}) do |figure, magazines| magazine_url = extract_magazine_url(figure) magazine_month = extract_magazine_month(figure) magazine = BrandEins::Pages::Magazine.new(url: magazine_url) magazines[magazine_month] = magazine end end |