class WikidataPositionHistory::PageRewriter

Rewrites a Wiki page

Constants

MALFORMED_ID_ERROR
NO_ID_ERROR
WIKI_PASSWORD
WIKI_TEMPLATE_NAME
WIKI_USERNAME

Attributes

mediawiki_site[R]
page_title[R]

Public Class Methods

new(mediawiki_site:, page_title:) click to toggle source
# File lib/wikidata_position_history.rb, line 51
def initialize(mediawiki_site:, page_title:)
  @mediawiki_site = mediawiki_site
  @page_title = page_title.tr('_', ' ')
end

Public Instance Methods

new_content() click to toggle source
# File lib/wikidata_position_history.rb, line 60
def new_content
  return [NO_ID_ERROR, 'The id parameter was missing'] if position_id.empty?
  return [MALFORMED_ID_ERROR, 'The id parameter was malformed'] unless position_id[/^Q\d+$/]

  [WikidataPositionHistory::Report.new(position_id).wikitext, "Successfully updated holders of #{position_id}"]
end
run!() click to toggle source
# File lib/wikidata_position_history.rb, line 56
def run!
  section.replace_output(*new_content)
end

Private Instance Methods

client() click to toggle source
# File lib/wikidata_position_history.rb, line 85
def client
  abort 'You must set the WIKI_USERNAME and WIKI_PASSWORD environment variables' unless WIKI_USERNAME && WIKI_PASSWORD
  @client ||= MediaWiki::Client.new(
    site:     mediawiki_site,
    username: ENV['WIKI_USERNAME'],
    password: ENV['WIKI_PASSWORD']
  )
end
derived_id() click to toggle source
# File lib/wikidata_position_history.rb, line 81
def derived_id
  page_title.scan(/Q\d+/).last.to_s
end
id_param() click to toggle source
# File lib/wikidata_position_history.rb, line 77
def id_param
  section.params[:id].to_s.strip
end
position_id() click to toggle source
# File lib/wikidata_position_history.rb, line 71
def position_id
  return id_param unless id_param.empty?

  derived_id
end
section() click to toggle source
# File lib/wikidata_position_history.rb, line 94
def section
  @section ||= MediaWiki::Page::ReplaceableContent.new(
    client:   client,
    title:    page_title,
    template: WIKI_TEMPLATE_NAME
  )
end