diff --git a/xslfo/datenspuren/schedule/Makefile b/xslfo/datenspuren/schedule/Makefile new file mode 100644 index 000000000..687139a67 --- /dev/null +++ b/xslfo/datenspuren/schedule/Makefile @@ -0,0 +1,33 @@ +EXPORT_URL=http://www.datenspuren.de/fahrplan/ +FOP=~/programs/fop/fop +XSLT=xsltproc +XSLT_FLAGS=--novalid +XEP=~/Java/XEP/xep + +KEEP=day_1.de.html day_2.de.html + +FOP_FILES=day_1.pdf day_2.pdf +XEP_FILES=day_1-xep.pdf day_2-xep.pdf + +all: $(FOP_FILES) $(XEP_FILES) $(KEEP) + +day_%.de.html: + wget -O $@ $(EXPORT_URL)/$@ + +schedule.de.xml: + wget -O $@ $(EXPORT_URL)/$@ + +day_%.xml: day_%.de.html day_schedule.xsl schedule.de.xml + $(XSLT) $(XSLT_FLAGS) day_schedule.xsl $<|ruby schedule_add_spans.rb > $@ + +day_%.fo: day_%.xml schedule-fo.xsl + $(XSLT) $(XSLT_FLAGS) -o $@ schedule-fo.xsl $< + +day_%-xep.pdf: day_%.fo + $(XEP) -fo $< -pdf $@ + +day_%.pdf: day_%.fo + $(FOP) $(FOP_FLAGS) -fo $< -pdf $@ + +clean: + rm -f day_*.{de.html,xml,fo,pdf} schedule.de.xml diff --git a/xslfo/datenspuren/schedule/day_schedule.xsl b/xslfo/datenspuren/schedule/day_schedule.xsl new file mode 100644 index 000000000..dc7f596ad --- /dev/null +++ b/xslfo/datenspuren/schedule/day_schedule.xsl @@ -0,0 +1,64 @@ + + + + + + + + + + + <xsl:value-of select="//x:p[@class='intro']/x:strong"/> + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/xslfo/datenspuren/schedule/schedule-fo.xsl b/xslfo/datenspuren/schedule/schedule-fo.xsl new file mode 100644 index 000000000..ee9809c20 --- /dev/null +++ b/xslfo/datenspuren/schedule/schedule-fo.xsl @@ -0,0 +1,149 @@ + + + + + bold + 14pt + center + + + + + + + + + + + + + + + + + + Release , + + + + + + + + + + + + + + + + + + + + Zeit + + + + + + + + + + +
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + == ++ == + + + + + + + + + : + + + y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + +
diff --git a/xslfo/datenspuren/schedule/schedule_add_spans.rb b/xslfo/datenspuren/schedule/schedule_add_spans.rb new file mode 100644 index 000000000..d083b90eb --- /dev/null +++ b/xslfo/datenspuren/schedule/schedule_add_spans.rb @@ -0,0 +1,32 @@ +#!/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 +} +matrix.write($stdout, 0)