+++ title = "Dokumentation in Textile schreiben" date = "2011-01-20T17:00:00+00:00" author = "Gibheer" draft = false +++ 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](http://redcloth.org/), [RedclothCoderay](http://redclothcoderay.rubyforge.org/) und [CodeRay](http://coderay.rubychan.de/) 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 &\#123;&\#123;content&\#125;&\#125; als Platzhalter fuer den Content des textile-Files benutzt werden. In die index.textile kommt dann das Markup rein. Mit &\#123;&\#123;toc&\#125;&\#125; 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. \# 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’