1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
{-# LANGUAGE OverloadedLists, OverloadedStrings #-}
-- |
module Example452 where
import VDV451 (Latitude(..), Longitude(..), ÖPNVOptions(..), ÖPNVTable(..), öpnvSchnittstellenZip)
import VDV452
import Data.Vector (Vector)
import Data.Time (Day, fromGregorian, getCurrentTime, utctDay)
import Codec.Archive.Zip (Archive)
t993 :: Day -> Vector BasisVerGueltigkeit
t993 day = [ BasisVerGueltigkeit day 1 ]
t485 :: Vector MengeBasisVersionen
t485 = [ MengeBasisVersionen 1 "die eine und einzige version" ]
t998 :: Vector MengeOnrTyp
t998 = [ MengeOnrTyp 1 OnrHaltepunkt "HP" "Haltepunkt" ]
t997 :: Vector MengeOrtTyp
t997 = [ MengeOrtTyp 1 OrtHaltestelle "Haltestelle" ]
t253 :: Vector RecOrt
t253 = [ RecOrt 1 OnrHaltepunkt 10 "Passau Hbf" 10 8000298 "de:09262:156" 0 OrtHaltestelle Nothing "PA" "Passau Hbf" Nothing (Just $ Longitude 13.450776) (Just $ Latitude 48.573632) Nothing Nothing
, RecOrt 1 OnrHaltepunkt 11 "Freyung Bf" 11 8002094 "de:09272:4851" 1 OrtHaltestelle Nothing "FR" "Freyung" Nothing (Just $ Longitude 13.548351) (Just $ Latitude 48.802843) Nothing Nothing]
-- mögliche anzeigetexte eines DFI
t994 :: Vector RecZnr
t994 = [ RecZnr 1 1 "PA" "Passau Hbf" "Passau Hbf" "Passau Hbf" ""
, RecZnr 1 2 "FR" "Freyung" "Freyung" "Freyung" ""
]
t290 :: Vector MengeTagesart
t290 = [ MengeTagesart 1 1 "normaler Betriebstag"
, MengeTagesart 1 2 "Sonderfahrt Dezember"]
t348 :: Vector Firmenkalender
t348 = [ Firmenkalender 1 (fromGregorian 3 12 2022) "Sonderfahrt Dezember" 2 ]
t222 :: Vector MengeFgr
t222 = [ MengeFgr 1 1 "gibt nur eine" ]
t332 :: Vector MengeFahrtart
t332 = [ MengeFahrtart 1 Normalfahrt "Normal"]
t333 :: Vector MengeBereich
t333 = [ MengeBereich 1 1 "bahn" "die ilztalbahn fährt bahn, sonst nix" ]
-- let's just say there's 30km between the stations
t299 :: Vector RecSel
t299 = [ RecSel 1 1 OnrHaltepunkt 10 11 OrtHaltestelle 30000 ]
-- let's just say there's an hour between the two stations
t282 :: Vector SelFztFeld
t282 = [ SelFztFeld 1 1 1 OrtHaltestelle 10 11 OrtHaltestelle 3600 ]
-- zwei halte für eine fahrt auf linie 13
t246 :: Vector LidVerlauf
t246 = [ LidVerlauf 1 1 56446 "" OrtHaltestelle 10 1 Nothing 0 True True False False False False
, LidVerlauf 1 2 56446 "" OrtHaltestelle 11 2 Nothing 0 True True False False False False]
-- keine ahnung was die routennummer soll, steht jetzt auf 0
t226 :: Vector RecLid
t226 = [ RecLid 1 56446 "itb" 1 0 0 "itb" "Ilztalbahn" Normalfahrt Nothing "Ilztalbahn" ]
t715 :: Vector RecFrt
t715 = [ RecFrt 1 1 28800 56446 2 Nothing Normalfahrt 1 "" Nothing 56446 False False "P 56446" 0 ]
mkArchive :: IO Archive
mkArchive = do
time <- getCurrentTime
let options = ÖPNVOptions
{ öpnvSource = "Datentest"
, öpnvProgramVersion = "0.0.1"
, öpnvDataVersion = "test-1"
}
pure $ öpnvSchnittstellenZip options time
[ ÖPNVTable (t993 (utctDay time))
, ÖPNVTable t485
, ÖPNVTable t998
, ÖPNVTable t997
, ÖPNVTable t253
, ÖPNVTable t994
, ÖPNVTable t290
, ÖPNVTable t348
, ÖPNVTable t222
, ÖPNVTable t332
, ÖPNVTable t333
, ÖPNVTable t299
, ÖPNVTable t282
, ÖPNVTable t246
, ÖPNVTable t226
, ÖPNVTable t715
]
|