Dokumentation in Textile schreiben

Da ich mal Dokumentation schreiben musste, OpenOffice aber schon beim ersten Tastenschlag keine Lust mehr hatte, ich mich bei HTML staendig verschrieben habe, bin ich einfach auf Textile umgestiegen und hab erfolgreich Dokumetation schreiben koennen.

Textile ist ein einfaches Wikiaehnliches Markup. Zusammen mit Ruby ist daraus ein kleines Script geschrieben, welches mir mein textile File in ein HTML-Grundgeruest stopft, den Code etwas aufhuebscht und dann einfach schnell arbeitet.

Als Bibliotheken kamen dabei RedCloth, RedclothCoderay und CodeRay zum Einsatz.

Damit das Script funktioniert muessen die Gems CodeRay, RedCloth und RedclothCoderay installiert sein.

Als naechstes muss im Verzeichniss des Scriptes eine index_template.html angelegt werden. Darin kann {{content}} als Platzhalter fuer den Content des textile-Files benutzt werden. In die index.textile kommt dann das Markup rein. Mit {{toc}} kann in diesem File eine Inhaltsangabe aus den h[1-3]. erstellt werden.

Speichert einfach das folgende Script in einer Datei und ruft es mit ruby auf und schon bekommt ihr euer textile umgewandelt.

source:ruby# To change this template, choose Tools | Templates
# and open the template in the editor.

require ‘rubygems’
require ‘redcloth’
require ‘coderay’
require ‘redclothcoderay’

RedclothCoderay.coderay_options :css => :class
search_headlines = /h([1-3]). s(. *)/

def build_menu array, depth
result = “”
if array.length > 0 then
array.each do |el|
result << ‘ (depth + 1) +’ “‘+ el[:bez]*“\”:##{el[:bez].gsub(/\s/,‘_’)}\n”
if el.length > 0 then
result << build_menu
end
end
end
result
end
File.open ’index.html’, ’w’ do |file|
index = File.read
code = File.read
toc =
if match[0] 1.to_s then toc << {:bez => match[1], :toc => []} elsif match[0] 2.to_s then
toc.last <<
elsif match[0] == 3.to_s then
toc.last.last <<
end
’h’*match[0]+’(#‘+match[1].gsub(/\s/,’_‘)*’). ’*match[1]
end
code = code.gsub(/{{toc}}/, build_menu(toc, 0)+“\n”)
file.write(index.gsub /{{content}}/, RedCloth.new(code).to_html)
end
puts ’ready’