#!/usr/bin/env ruby
$:.unshift('vendor/ruby-mediawiki/lib')
$:.unshift('vendor/htree')
require 'mediawiki/dotfile'
@wiki = MediaWiki.dotfile(nil,'entropia')

def parse_template(title, template)
  template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}")

  fields = {}

  fields_string = @wiki.article(title).text.scan(template_re)[0][0]

  inlink = 0
  field = ""
  fields_string += "|" unless fields_string.match(/\|$/)
  fields_string.split(//).each do |c|
    if c == "|" && inlink == 0
      (key, value) = field.split(/=/)
      fields[key] = value
      field = ""
    else 
      inlink += 1 if c == "["
      inlink -= 1 if c == "]"
      field += c
    end
  end

  fields
end

body = ""
template = "Vorlage:Radio Chaotica-Sendung"
@wiki.article(template).what_links_here.each do |page|
  if erste_sendung = parse_template(page, template)["erste_sendung"]
    datum = erste_sendung.gsub(/\s*um\s*\d+:\d+$/,"")
    body += "* " + datum + " [[" + page + "]]\n"
  else
    $stderr.print(page, ": erste_sendung nicht gesetzt")
  end
end

a = @wiki.article("Benutzer:Neingeist/Radio Chaotica-Liste")
a.text = body
a.submit("Radio Chaotica-Liste")