| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- #!/usr/bin/ruby
 - # -*- coding: utf-8 -*-
 - 
 - # author: phi@gress.ly
 - # version: 30. Okt. 2012 V 0.1
 - #
 - # Description
 - #
 - #   Read a LaTeX - table of Contents (TOC) and remove all duplicaten
 - #   entries. Only the first entry is left
 - #   eg. From the lines
 - #      \contentsline {section}{Konzepte der Objektorientierung}{13}
 - #      \contentsline {section}{Konzepte der Objektorientierung}{13}
 - #      \contentsline {section}{Konzepte der Objektorientierung}{14}
 - #      \contentsline {section}{Konzepte der Objektorientierung}{15}
 - #   only the first line will remain
 - #
 - 
 - def main()
 -   lastLine = ""
 -   line     = STDIN.gets
 - 
 -   while(line)
 -     
 -     if(isDuplicate(lastLine, line))
 -       line = STDIN.gets
 -     else
 -       print line
 -       lastLine = line
 -       line     = STDIN.gets
 -     end
 -   end  
 - end
 - 
 - 
 - ##
 - #prüfe, ob zwei Einträgel den selben Titel gleich nacheinander haben. Wenn so, return "true"
 - #
 - def isDuplicate(l1, l2)
 -    treffer1 = l1.match("\\\\contentsline \\{section\\}\\{\\\\numberline \\{[A-Z0-9\\.]+\\}(.*)\\}\\{([0-9]+)\\}")
 -   if(treffer1)
 -     title1 = treffer1[1].strip
 -   end
 - 
 -    treffer2 = l2.match("\\\\contentsline \\{section\\}\\{(.*)\\}\\{([0-9]+)\\}")
 -   if(treffer2)
 -     title2 = treffer2[1].strip
 -   end
 - 
 -   if(treffer1 && treffer2)
 -     return title1 == title2;
 -   else
 -    return false
 -   end
 - 
 - end
 - 
 - main()
 
 
  |