100 lines
1.9 KiB
Ruby
Executable file
100 lines
1.9 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# encoding: utf-8
|
|
|
|
# Convert to UTF8: iconv -f ISO-8859-15 -t UTF-8 infile > outfile
|
|
|
|
file = File.open(ARGV[0])
|
|
header = {}
|
|
body = ''
|
|
in_header = true
|
|
last_header = nil
|
|
file.each do |line|
|
|
if in_header
|
|
if line =~ /^\s*$/
|
|
# do nothing
|
|
elsif line =~ /^(\w*):\s*(.*)$/
|
|
# New header
|
|
last_header = $1.downcase
|
|
header[last_header] = $2.strip
|
|
elsif line =~ /^\s+(.*)$/
|
|
# Continued header
|
|
header[last_header] << " #{$1.strip}"
|
|
else
|
|
# First line of body
|
|
body << line
|
|
in_header = false
|
|
end
|
|
else
|
|
body << line
|
|
end
|
|
end
|
|
|
|
puts "---"
|
|
puts "kind: event"
|
|
date = header['datum']
|
|
if date =~ /^.*,\s*(.*)$/
|
|
date=$1
|
|
end
|
|
if date =~ /^(\d+)\.(\d+)\.(\d+)$/
|
|
year = $3.to_i
|
|
month = $2.to_i
|
|
day = $1.to_i
|
|
elsif date =~ /^(\d+).\s*([^\s]+)\s+(\d+)$/
|
|
year = $3.to_i
|
|
month = case $2.downcase[0..2]
|
|
when 'jan'
|
|
1
|
|
when 'feb'
|
|
2
|
|
when 'mär'
|
|
3
|
|
when 'apr'
|
|
4
|
|
when 'mai'
|
|
5
|
|
when 'jun'
|
|
6
|
|
when 'jul'
|
|
7
|
|
when 'aug'
|
|
8
|
|
when 'sep'
|
|
9
|
|
when 'okt'
|
|
10
|
|
when 'nov'
|
|
11
|
|
when 'dez'
|
|
12
|
|
else
|
|
0
|
|
end
|
|
day = $1.to_i
|
|
else
|
|
year = 0
|
|
month = 0
|
|
day = 0
|
|
end
|
|
if (year<100)
|
|
if (year<80)
|
|
year = year + 2000
|
|
else
|
|
year = year + 1900
|
|
end
|
|
end
|
|
puts "startdate: %04d-%02d-%02dT19:30:00" % [year,month,day]
|
|
puts "duration: 2h"
|
|
puts "title: #{header['thema']}"
|
|
puts "speakers:"
|
|
puts " -"
|
|
puts " name: #{header['referent']}"
|
|
if (header['ort'].downcase.start_with?('stadtbibliothek'))
|
|
puts "location:"
|
|
puts " location: bib"
|
|
elsif (header['ort'].downcase.start_with?('filmhaus'))
|
|
puts "location:"
|
|
puts " location: wand5"
|
|
end
|
|
puts "---"
|
|
puts body
|
|
|