You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
Plaintext
82 lines
2.0 KiB
Plaintext
18 years ago
|
#!/usr/bin/env ruby
|
||
|
$:.unshift('../vendor/ruby-mediawiki/lib')
|
||
|
require 'mediawiki/dotfile'
|
||
|
@wiki = MediaWiki.dotfile(nil,'camp')
|
||
|
|
||
|
def parse_template(title, template)
|
||
|
template_re = Regexp.new("\\\{\\\{" + template + "(.*?)\\\}\\\}", Regexp::MULTILINE)
|
||
|
|
||
|
info = []
|
||
|
|
||
|
if (scanned = @wiki.article(title).text.scan(template_re)) != []
|
||
|
scanned.each do |m|
|
||
|
fields = {}
|
||
|
fields_string = m[0]
|
||
|
|
||
|
inlink = 0
|
||
|
field = ""
|
||
|
fields_string += "|" unless fields_string.match(/\|$/)
|
||
|
fields_string.split(//).each do |c|
|
||
|
if c == "|" && inlink == 0
|
||
|
(key, value) = field.split(/=/)
|
||
|
value.chomp! if value
|
||
|
fields[key] = value
|
||
|
field = ""
|
||
|
else
|
||
|
inlink += 1 if c == "["
|
||
|
inlink -= 1 if c == "]"
|
||
|
field += c
|
||
|
end
|
||
|
end
|
||
|
info << fields
|
||
|
end
|
||
|
else
|
||
18 years ago
|
$stderr.print "Template #{template} not found in #{title}!\n"
|
||
18 years ago
|
end
|
||
|
|
||
|
info
|
||
|
end
|
||
|
|
||
18 years ago
|
list = "
|
||
|
<!--
|
||
|
|
||
|
|
||
|
_ _ _____ _ _ ___
|
||
|
| | | | ____| | | | / _ \
|
||
|
| |_| | _| | | | | | | | |
|
||
|
| _ | |___| |___| |__| |_| |
|
||
|
|_| |_|_____|_____|_____\___( )
|
||
|
|/
|
||
|
|
||
|
-->
|
||
|
|
||
|
''This is an auto-generated list - please use [[Template:Workshop]] (description is there) to include your workshop here. Contact [[User:Neingeist|Neingeist]] if you have problems or questions (Jabber is preferred.)''
|
||
|
|
||
|
|
||
|
"
|
||
18 years ago
|
|
||
|
@wiki.category("Workshop").articles.each do |article|
|
||
18 years ago
|
if article != "Template:Workshop" && article != "List of workshops" && article != "ExampleVille"
|
||
|
|
||
18 years ago
|
workshops = parse_template(article, "Workshop")
|
||
|
|
||
|
workshops.each do |workshop|
|
||
18 years ago
|
list += "* '''[[#{article}|#{workshop["what"]}]]''' "
|
||
18 years ago
|
if workshop["day"] != ""
|
||
|
list += "Day " + workshop["day"] + "/" + workshop["start"]
|
||
|
end
|
||
18 years ago
|
list += "\n"
|
||
18 years ago
|
list += ":''#{workshop["where"]} ''\n"
|
||
18 years ago
|
list += "::#{workshop["abstract"]}\n"
|
||
18 years ago
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
18 years ago
|
list += "\n[[Category:Workshop]]\n"
|
||
|
|
||
|
puts list
|
||
18 years ago
|
a = @wiki.article("List of workshops")
|
||
|
a.text = list
|
||
|
a.submit("wiki ex machina")
|
||
18 years ago
|
a.protect("Automatically generated article")
|