Umlaute zurechtstückeln…

Für schnelle Hacks ist Ruby manchmal gar nicht so schlecht. :-) Will man eine geTeXte Ausarbeitung zur automatischen <strike>Syntaxprüfung</strike> Rechtschreib- und Grammatikprüfung in eine populäre Textverarbeitung kopieren, bekommt man schnell Probleme, denn ps2ascii spuckt für Umlaute nur die LaTeX-typischen "a, "o und "u aus. Und wer will das bei einer zwanzigseitigen Ausarbeitung auch alles von Hand ändern? Manchmal werden jedoch vor Umlauten auch (in der Mitte vom Wort) ein paar Zeilenumbrüche eingefügt. sed ist also keine Option.

#!/usr/bin/env ruby -w

text = STDIN.read
[
	[ 'u', 'ü' ],
	[ 'o', 'ö' ],
	[ 'a', 'ä' ],
	[ 'U', 'Ü' ],
	[ 'A', 'Ä' ],
	[ 'O', 'Ö' ]
].each do |uml|
	orig = uml[0]
	exp  = uml[1]

	text.gsub!("\\n\\n\"" + orig, exp)
	text.gsub!("\"" + orig, exp)
end

print text

Was machen nur die ganzen Leute, die keine handliche Programmiersprache können, in solchen Situationen?

Nachtrag: Wenn man den funktionalen Stil aushält, kann man es noch kürzer machen, aber so schreibe ich normalerweise keine kleinen Hacks wie diesen:

print [
	[ 'u', 'ü' ],
	[ 'o', 'ö' ],
	[ 'a', 'ä' ],
	[ 'U', 'Ü' ],
	[ 'A', 'Ä' ],
	[ 'O', 'Ö' ]
].inject(STDIN.read) do |text,uml|
  text.gsub("\\n\\n\"" + uml[0], uml[1]).gsub("\"" + uml[0], uml[1])
end