Class: Wikidotrb::Module::PageRevisionCollection
- Inherits:
-
Array
- Object
- Array
- Wikidotrb::Module::PageRevisionCollection
- Defined in:
- lib/wikidotrb/module/page_revision.rb
Instance Attribute Summary collapse
-
#page
Returns the value of attribute page.
Class Method Summary collapse
-
.acquire_htmls(page:, revisions:) ⇒ Array<PageRevision>
Retrieve and set HTML.
-
.acquire_sources(page:, revisions:) ⇒ Array<PageRevision>
Retrieve and set sources.
Instance Method Summary collapse
-
#get_htmls
Retrieve HTML for revisions.
-
#get_sources
Retrieve sources for revisions.
-
#initialize(page: nil, revisions: []) ⇒ PageRevisionCollection
constructor
Initialization method.
Constructor Details
#initialize(page: nil, revisions: []) ⇒ PageRevisionCollection
Initialization method
15 16 17 18 |
# File 'lib/wikidotrb/module/page_revision.rb', line 15 def initialize(page: nil, revisions: []) super(revisions) @page = page || revisions.first.page end |
Instance Attribute Details
#page
Returns the value of attribute page.
10 11 12 |
# File 'lib/wikidotrb/module/page_revision.rb', line 10 def page @page end |
Class Method Details
.acquire_htmls(page:, revisions:) ⇒ Array<PageRevision>
Retrieve and set HTML
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/wikidotrb/module/page_revision.rb', line 51 def self.acquire_htmls(page:, revisions:) target_revisions = revisions.reject(&:html_acquired?) return revisions if target_revisions.empty? responses = page.site.amc_request( bodies: target_revisions.map do |revision| { "moduleName" => "history/PageVersionModule", "revision_id" => revision.id } end ) responses.each_with_index do |response, index| body = response["body"] # Extract HTML source source = body.split( "onclick=\"document.getElementById('page-version-info').style.display='none'\">", 2 )[1].split("</a>\n\t</div>\n\n\n\n", 2)[1] target_revisions[index].html = source end revisions end |
.acquire_sources(page:, revisions:) ⇒ Array<PageRevision>
Retrieve and set sources
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/wikidotrb/module/page_revision.rb', line 24 def self.acquire_sources(page:, revisions:) target_revisions = revisions.reject(&:source_acquired?) return revisions if target_revisions.empty? responses = page.site.amc_request( bodies: target_revisions.map do |revision| { "moduleName" => "history/PageSourceModule", "revision_id" => revision.id } end ) responses.each_with_index do |response, index| body = response["body"] body_html = Nokogiri::HTML(body) target_revisions[index].source = PageSource.new( page: page, wiki_text: body_html.at_css("div.page-source").text.strip ) end revisions end |
Instance Method Details
#get_htmls
Retrieve HTML for revisions
81 82 83 |
# File 'lib/wikidotrb/module/page_revision.rb', line 81 def get_htmls PageRevisionCollection.acquire_htmls(page: @page, revisions: self) end |
#get_sources
Retrieve sources for revisions
76 77 78 |
# File 'lib/wikidotrb/module/page_revision.rb', line 76 def get_sources PageRevisionCollection.acquire_sources(page: @page, revisions: self) end |