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