| 216 | | *[gtfs:route_id ][gtfs:route_id !~ /^[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?(;[ ]?[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?)*$/], |
| 217 | | *[gtfs:shape_id ][gtfs:shape_id !~ /^[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/], |
| 218 | | *[gtfs:trip_id ][gtfs:trip_id !~ /^[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/], |
| 219 | | *[gtfs:trip_id:sample][gtfs:trip_id:sample !~ /^[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/] { |
| | 216 | *[gtfs:route_id ][gtfs:route_id !~ /^[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?(;[ ]?[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?)*$/], |
| | 217 | *[gtfs:shape_id ][gtfs:shape_id !~ /^[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/], |
| | 218 | *[gtfs:trip_id ][gtfs:trip_id !~ /^[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/], |
| | 219 | *[gtfs:trip_id:sample][gtfs:trip_id:sample !~ /^[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR](;[ ]?[1-9][0-9]{0,3}\.T[023A]\.[0-9]{1,2}-[A-Z]?[1-9][0-9]{0,2}(-[A-Z])?-j[1-9][0-9j]-[1-9][0-9]?\.[1-9][0-9]?\.[HR])*$/] { |
| 243 | | *[ref:IFOPT ][ref:IFOPT !~ /^[a-z]{2}:[0-9]{5}:[1-9][0-9]{0,4}(:[0-9]{1,2}(:[1-9][0-9]?)?)?$/], |
| 244 | | *[gtfs:stop_id][gtfs:stop_id !~ /^[a-z]{2}:[0-9]{4,5}:[1-9][0-9]{0,4}(:[0-9]{1,2}(:[1-9][0-9]?)?)?$/] { |
| | 244 | *[ref:IFOPT ][ref:IFOPT !~ /^(gen:[0-9]{4}|[a-z]{2}:[0-9]{5}):[1-9][0-9]{0,4}(:[0-9]{1,2}(:([A-Z]+[ ]?)?[1-9][0-9]{0,2}[A-Z]?)?)?$/], |
| | 245 | *[gtfs:stop_id][gtfs:stop_id !~ /^(gen:[0-9]{4}|[a-z]{2}:[0-9]{4,5}):[1-9][0-9]{0,4}(:[0-9]{1,2}(:([A-Z]+[ ]?)?[1-9][0-9]{0,2}[A-Z]?)?)?$/] { |
| | 282 | /* old syntax ref:IFOPT */ |
| | 283 | *[ref:IFOPT ][ref:IFOPT =~ /^gen:[0-9]{4}:[1-9][0-9]{0,4}(:[0-9]{1,2}(:([A-Z]+[ ]?)?[1-9][0-9]{0,2}[A-Z]?)?)?$/], |
| | 284 | *[gtfs:stop_id][gtfs:stop_id =~ /^gen:[0-9]{4}:[1-9][0-9]{0,4}(:[0-9]{1,2}(:([A-Z]+[ ]?)?[1-9][0-9]{0,2}[A-Z]?)?)?$/] { |
| | 285 | throwOther: tr("Value of `{0}` is in old format.", "{0.key}"); |
| | 286 | group: tr("Public Transport GTFS: value syntax"); |
| | 287 | assertMatch: "node ref:IFOPT=gen:9188:5599:0:956R"; |
| | 288 | assertNoMatch: "node ref:IFOPT=de:09162:1179:3:KIF 1"; |
| | 289 | } |
| | 290 | |
| 284 | | *[public_transport][public_transport =~ /^(platform|stop_position)$/][!(tag("local_ref") == get(regexp_match("^(.*:){4}([1-9][0-9]?)", tag("ref:IFOPT")), 2))][local_ref][ref:IFOPT] { |
| | 297 | *[public_transport][public_transport =~ /^(platform|stop_position)$/][!(tag("local_ref") == get(regexp_match("^(.*:){4}([A-Z]+[ ]?)?([1-9][0-9]{0,2}[A-Z]?)", tag("ref:IFOPT")), 3))][local_ref][ref:IFOPT], |
| | 298 | *[public_transport][public_transport =~ /^(platform|stop_position)$/][!(tag("local_ref") == get(regexp_match("^(.*:){4}([A-Z]+[ ]?)?([1-9][0-9]{0,2}[A-Z]?)", tag("gtfs:stop_id")), 3))][local_ref][ref:IFOPT] { |
| 287 | | assertMatch: "relation public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:0:1"; |
| 288 | | assertNoMatch: "relation public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:0:14"; |
| 289 | | assertNoMatch: "relation public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:14"; |
| | 301 | assertMatch: "node public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:0:1"; |
| | 302 | assertMatch: "node public_transport=platform local_ref=56R ref:IFOPT=gen:9188:5599:0:956R"; |
| | 303 | assertNoMatch: "node public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:0:14"; |
| | 304 | assertNoMatch: "node public_transport=platform local_ref=14 ref:IFOPT=de:08315:6504:14"; |
| | 305 | assertNoMatch: "node public_transport=platform local_ref=956R ref:IFOPT=gen:9188:5599:0:956R"; |
| | 306 | assertNoMatch: "node public_transport=platform local_ref=1 ref:IFOPT=de:09162:1179:3:KIF 1"; |