bvv2cal
changeset 1 522bf1c3dd7c
parent 0 c7642a4f51a5
child 2 f4034a59feaa
     1.1 --- a/bvv2cal	Thu Oct 14 18:30:46 2010 +0200
     1.2 +++ b/bvv2cal	Fri Nov 12 09:23:02 2010 +0100
     1.3 @@ -3,7 +3,7 @@
     1.4  --	$ bvvcal [bezirksname] [startdatum] [enddatum]
     1.5  --
     1.6  --	bezirksname : Default "friedrichshain-kreuzberg"
     1.7 ---	startdatum : in deutscher Notation (z.B. 10.10.2010), Default: heute
     1.8 +--	startdatum : in deutscher Notation (z.B. 31.12.2010), Default: heute
     1.9  --	enddatum : Default: startdatum
    1.10  --
    1.11  --	Konvertiert den Berliner BVV-Sitzungskalender 
    1.12 @@ -15,6 +15,12 @@
    1.13  --	- Lua 5.1.x : http://www.lua.org/
    1.14  --	- LuaExpat : http://www.keplerproject.org/luaexpat/
    1.15  --
    1.16 +--	Revisionen:
    1.17 +--	- 0.2 : Uhrzeiten waren lokal, nicht GMT. Korrigiert.
    1.18 +--	- 0.1 : initial release
    1.19 +--
    1.20 +--	Autor: Timm S. Müller <timm-pirat@schulze-mueller.de>
    1.21 +--
    1.22  
    1.23  local lxp = require "lxp"
    1.24  
    1.25 @@ -25,6 +31,16 @@
    1.26  
    1.27  ----- --- --- -- - -  -   -    -
    1.28  
    1.29 +--	Encoding ist laut RFC 2445 UTF-8, dies ist ein Zugeständnis
    1.30 +--	an Kalendertools, die das nicht mitbekommen haben:
    1.31 +
    1.32 +local umlconv = { 
    1.33 +	["ä"] = "ae", ["Ä"] = "Ae", 
    1.34 +	["ö"] = "oe", ["Ö"] = "Oe",
    1.35 +	["ü"] = "ue", ["Ü"] = "Ue",
    1.36 +	["ß"] = "ss"
    1.37 +}
    1.38 +
    1.39  local state = "waitcontent"
    1.40  local record, cell, result = { }, { }, { }
    1.41  local lnr = 1
    1.42 @@ -61,8 +77,12 @@
    1.43  						sH, sM = time:match("^%s*(%d+):(%d+)")
    1.44  					end
    1.45  					if sH then
    1.46 +						-- convert dates to GMT
    1.47 +						local startdate = os.date("!%s", os.time { day=d, month=m, year=y, hour=sH, min=sM })
    1.48 +						local enddate = eH and os.date("!%s", os.time { day=d, month=m, year=y, hour=eH, min=eM })
    1.49  						local what = table.concat(record, " "):match("^%s*(.-)%s*$")
    1.50 -						table.insert(result, { y .. m .. d, sH .. sM, eH and eH .. eM, what })
    1.51 +						what = what:gsub("([\128-\255].)", umlconv)
    1.52 +						table.insert(result, { startdate, enddate, what })
    1.53  					end
    1.54  				end
    1.55  				state = "waitrow"
    1.56 @@ -102,12 +122,13 @@
    1.57  for i = 1, #result do
    1.58  	local r = result[i]
    1.59  	print "BEGIN:VEVENT"
    1.60 -	local start = r[1] .. "T" .. r[2]
    1.61 -	print("UID:" .. start .. "." .. uid_uri)
    1.62 -	print("SUMMARY:" .. r[4])
    1.63 -	print("DTSTART:" .. start .. "00Z")
    1.64 -	if r[3] then
    1.65 -		print("DTEND:" .. r[1] .. "T" .. r[3] .. "00Z")
    1.66 +	local startdate = os.date("%Y%m%dT%H%M", r[1])
    1.67 +	print("UID:" .. startdate .. "." .. uid_uri)
    1.68 +	print("SUMMARY:" .. r[3])
    1.69 +	print("DTSTART:" .. startdate .. "00Z")
    1.70 +	if r[2] then
    1.71 +		local enddate = r[2] and os.date("%Y%m%dT%H%M", r[2])
    1.72 +		print("DTEND:" .. enddate .. "00Z")
    1.73  	end
    1.74  	print "END:VEVENT"
    1.75  	print ""