# Autor: Bernhard Reiter FOOTNOTE_SPLIT = "@footnote:" regexp = Regexp.compile('\[([0-9]+)\]') class Footnote @@table = {} @@index = 0 def self.next(num) @@table[num] = @@table.key?(num) ? @@table[num] : @@index += 1 end end # Monkey patch class String def index_footnotes!(regexp) gsub!(regexp) { |num| "[#{Footnote.next(num)}]" } end end # Text laden input = ARGV[0] != nil ? File.read(ARGV[0]) : STDIN.read text, bib = input.split(FOOTNOTE_SPLIT) # Fussnoten neu nummerieren und sortieren text.index_footnotes!(regexp) bib = bib.index_footnotes!(regexp).split("\n").sort.join("\n") # Ausgabe puts text, FOOTNOTE_SPLIT, bib