c3d2-web/xslfo/datenspuren/schedule/schedule_add_spans.rb
astro 35deecc383 xslfo schedule: kleinere fonts fu"r datenspuren 2008
git-svn-id: svn://svn.c3d2.de/c3d2-web/trunk@1381 31f61c52-7bfb-0310-b897-fc00f8a278f0
2008-06-06 22:18:28 +00:00

33 lines
777 B
Ruby

#!/usr/bin/env ruby
require 'rexml/document'
matrix = REXML::Document.new($stdin).root
tracks = 0
matrix.each_element('rooms/room') {
tracks += 1
}
trackspans = [0] * tracks
matrix.each_element('table/timeslot') { |timeslot|
events = []
timeslot.each_element { |event|
timeslot.delete(event)
events << event
}
$stderr.puts trackspans.inspect
tracks.times { |i|
if trackspans[i] > 1
timeslot.add(REXML::Element.new('span'))
trackspans[i] -= 1
else
event = events.shift || REXML::Element.new('empty')
timeslot.add(event)
if event.name == 'event'
trackspans[i] = (event.attributes['slots'] || 1).to_i
end
end
}
$stderr.puts "Stale elements: #{events.inspect}" if events.size > 0
}
puts matrix.to_s