| def createFigureList(input) | |
| figures = [] ; | |
| input.each { | |
| | line | | |
| case line | |
| when /Fig (\d*)(<.*$)/ | |
| puts "Found Figure: #{$1}" | |
| figures << $1.to_i | |
| when /Fig.[^\s]/ | |
| puts "WARNING: No space after figure reference: " + line ; | |
| end | |
| } | |
| return figures ; | |
| end | |
| def createMap(figures) | |
| map = Hash.new ; | |
| (1..figures.length).each { | |
| | i | | |
| map[figures[i-1]] = i; | |
| } | |
| return map ; | |
| end | |
| def replace(input, map, output) | |
| replacedReferences = [] | |
| input.each { | |
| | line | | |
| output.write line.gsub(/(:?Fig(:?\.)?) (\d*)/) { | |
| | s | | |
| replacedReferences << $3.to_i if $2 == "." ; | |
| "Fig#{$2} #{map[$3.to_i]}" | |
| } | |
| } | |
| unreplacedReferences = map.keys.sort ; | |
| unreplacedReferences.delete_if { | ref | replacedReferences.include?(ref) } | |
| puts "Unreplaced References: " | |
| puts unreplacedReferences ; | |
| end | |
| input = File.open("article.html") | |
| figures = createFigureList(input) ; | |
| map = createMap(figures) | |
| map.keys.sort.each { |k| puts "#{k} => #{map[k]}" } | |
| $stdout.sync = true | |
| #puts "Replace (y/n)?" ; | |
| #gets.chomp | |
| input.rewind | |
| replace(input, map, File.new("article_replaced.html", "w")) ; | |