class Wikiranger::Report
Public Class Methods
new(contributions)
click to toggle source
# File lib/wikiranger/report.rb, line 3 def initialize(contributions) @contributions = contributions.sort_by { |c| c.timestamp_object }.reverse @contributors = contributions.map(&:user).uniq.sort_by { |ip| ip.split(".").map(&:to_i) } @pages = contributions.map { |c| [c.pageid, c.title] }.uniq.sort_by { |p| p.last } @contribs_per_contributor = @contributors.map do |c| [c, contributions.count { |contrib| contrib.user == c }] end.to_h @contribs_per_page = @pages.map do |p| [p.first, contributions.count { |contrib| contrib.pageid == p.first }] end.to_h end
Public Instance Methods
generate(destination)
click to toggle source
# File lib/wikiranger/report.rb, line 15 def generate(destination) report = load_template b = binding File.open(destination, "w") do |f| f.write(report.result(b)) end end
Private Instance Methods
contribution_url(contribution)
click to toggle source
# File lib/wikiranger/report.rb, line 37 def contribution_url(contribution) "https://en.m.wikipedia.org/wiki/Special:MobileDiff/#{h(contribution.revid)}" end
contributor_url(contribution)
click to toggle source
# File lib/wikiranger/report.rb, line 33 def contributor_url(contribution) "https://en.m.wikipedia.org/wiki/Special:Contributions/#{h(contribution.user)}" end
h(unsafe)
click to toggle source
# File lib/wikiranger/report.rb, line 29 def h(unsafe) CGI.escapeHTML(unsafe.to_s) end
load_template()
click to toggle source
# File lib/wikiranger/report.rb, line 25 def load_template ERB.new(File.read(File.join(Wikiranger::WIKIRANGER_ROOT, "templates", "default.html.erb"))) end
page_url(contribution)
click to toggle source
# File lib/wikiranger/report.rb, line 41 def page_url(contribution) "https://en.wikipedia.org/?curid=#{h(contribution.pageid)}" end