|
#!/usr/bin/env ruby
|
|
#
|
|
# fetch_doc.rb
|
|
#
|
|
# Fetch the documentation from the wiki and translate it
|
|
# to be human readable.
|
|
#
|
|
|
|
require 'open-uri'
|
|
|
|
BASE_URI = 'http://www.pamusb.org/wiki/doc/'
|
|
DOC_PATH = './pam_usb/doc/'
|
|
DOCS = [ 'install', 'upgrading', 'configuring' ]
|
|
|
|
REPLACE_LIST = [
|
|
# Extract text area from xhtml document.
|
|
{ :pattern => /.*<textarea .+>(.*)<\/textarea>.*/m, :with => '\1' },
|
|
|
|
# Remove wiki links [[link|name]]
|
|
{ :pattern => /\[\[.+\|(.+)\]\]/, :with => '\1' },
|
|
|
|
# Remove misc xhtml/wiki characters
|
|
{ :pattern => /\/\//, :with => '' },
|
|
{ :pattern => /\\\\ /, :with => '' },
|
|
{ :pattern => /\*\*/, :with => '' },
|
|
{ :pattern => /</, :with => '<' },
|
|
{ :pattern => />/, :with => '>' },
|
|
{ :pattern => /"/, :with => '"' },
|
|
{ :pattern => /<code .+>.*\n/, :with => '' },
|
|
{ :pattern => /<\/code>.*\n/, :with => '' },
|
|
|
|
# Remove trailing whitespaces
|
|
{ :pattern => /^ /, :with => '' },
|
|
|
|
# Fit 80 colums
|
|
{ :pattern => /(.{1,80})( +|$\n?)|(.{1,80})/, :with => "\\1\\3\n" },
|
|
]
|
|
|
|
def fetch_doc(name)
|
|
uri = BASE_URI + name + '?do=edit'
|
|
|
|
body = open(uri) { |f| f.read }
|
|
REPLACE_LIST.each { |r| body.gsub!(r[:pattern], r[:with]) }
|
|
|
|
body
|
|
end
|
|
|
|
DOCS.each do |doc|
|
|
print "Fetching doc:#{doc}... "
|
|
STDOUT.flush
|
|
|
|
text = fetch_doc(doc)
|
|
File.open(File.join(DOC_PATH, doc), 'w') { |f| f.write(text) }
|
|
|
|
puts "Done."
|
|
end
|