diff --git a/.gitignore b/.gitignore index cc6eea024..503be05e2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ overrides/pt/* overrides/ru/* overrides/zh/* overrides/zh-TW/* -./cache +/.cache \ No newline at end of file diff --git a/.htaccess b/.htaccess index 370dc12a5..eb86bd5ff 100644 --- a/.htaccess +++ b/.htaccess @@ -1,25 +1,28 @@ # Enable the rewrite engine RewriteEngine On +# Enable case-sensitive matching +Options +SymLinksIfOwnerMatch + # Redirect rules using regex RedirectMatch 301 ^/reference/static/?$ /documentation/schedule/reference/ RedirectMatch 301 ^/schedule/reference/?$ /documentation/schedule/reference/ -RedirectMatch 301 ^/schedule/best-practices/?$ /documentation/schedule/schedule_best_practices/ -RedirectMatch 301 ^/schedule/example-feed/?$ /getting_started/example_feed/ +RedirectMatch 301 ^/schedule/best-practices/?$ /documentation/schedule/schedule-best-practices/ +RedirectMatch 301 ^/schedule/example-feed/?$ /getting-started/example-feed/ RedirectMatch 301 ^/schedule/examples/([^/]+)/?$ /documentation/schedule/examples/$1/ RedirectMatch 301 ^/schedule/examples/?$ /documentation/overview/ -RedirectMatch 301 ^/schedule/changes/?$ /documentation/schedule/change_history/recent_additions/ -RedirectMatch 301 ^/schedule/process/?$ /community/governance/gtfs_schedule_amendment_process/ -RedirectMatch 301 ^/schedule/(validate|publishing)/?$ /getting_started/$1/ -RedirectMatch 301 ^/realtime/best-practices/?$ /documentation/realtime/realtime_best_practices/ -RedirectMatch 301 ^/realtime/feed-entities/?$ /documentation/realtime/feed_entities/overview/ -RedirectMatch 301 ^/realtime/feed-entities/([^/]+)/?$ /documentation/realtime/feed_entities/$1/ +RedirectMatch 301 ^/schedule/changes/?$ /documentation/schedule/change-history/recent-additions/ +RedirectMatch 301 ^/schedule/process/?$ /community/governance/gtfs-schedule-amendment-process/ +RedirectMatch 301 ^/schedule/(validate|publishing)/?$ /getting-started/$1/ +RedirectMatch 301 ^/realtime/best-practices/?$ /documentation/realtime/realtime-best-practices/ +RedirectMatch 301 ^/realtime/feed-entities/?$ /documentation/realtime/feed-entities/overview/ +RedirectMatch 301 ^/realtime/feed-entities/([^/]+)/?$ /documentation/realtime/feed-entities/$1/ RedirectMatch 301 ^/realtime/feed-examples/([^/]+)/?$ /documentation/realtime/examples/$1/ RedirectMatch 301 ^/realtime/feed-examples/?$ /documentation/overview/ RedirectMatch 301 ^/realtime/(proto|reference)/?$ /documentation/realtime/$1/ -RedirectMatch 301 ^/realtime/changes/?$ /documentation/realtime/change_history/recent_additions/ -RedirectMatch 301 ^/realtime/process/?$ /community/governance/gtfs_realtime_amendment_process/ -RedirectMatch 301 ^/resources/community/?$ /community/get_involved/ +RedirectMatch 301 ^/realtime/changes/?$ /documentation/realtime/change-history/recent-additions/ +RedirectMatch 301 ^/realtime/process/?$ /community/governance/gtfs-realtime-amendment-process/ +RedirectMatch 301 ^/resources/community/?$ /community/get-involved/ RedirectMatch 301 ^/extensions/([^/]+)/?$ /community/extensions/$1/ RedirectMatch 301 ^/extensions/?$ /community/extensions/overview/ @@ -41,16 +44,25 @@ RewriteCond %{REQUEST_URI} ^/realtime/reference/$ RewriteRule ^realtime/reference/$ /documentation/realtime/reference/ [L,R=301] # Anchor redirections -RewriteRule ^realtime/process/#guiding-principles https://gtfs.org/community/governance/gtfs_realtime_amendment_process/#guiding-principles [R=301,NE] -RewriteRule ^realtime/process/#revision-history https://gtfs.org/documentation/realtime/change_history/revision_history/ [R=301] -RewriteRule ^realtime/process/#experimental-fields https://gtfs.org/community/governance/gtfs_realtime_amendment_process/#experimental-fields [R=301,NE] -RewriteRule ^#why-use-gtfs https://gtfs.org/getting_started/why_use_GTFS/ [R=301] -RewriteRule ^#what-is-high-quality-gtfs https://gtfs.org/getting_started/validate/ [R=301] -RewriteRule ^schedule/#getting-started https://gtfs.org/getting_started/create/ [R=301] +RewriteRule ^realtime/process/#guiding-principles https://gtfs.org/community/governance/gtfs-realtime-amendment-process/#guiding-principles [R=301,NE] +RewriteRule ^realtime/process/#revision-history https://gtfs.org/documentation/realtime/change-history/revision-history/ [R=301] +RewriteRule ^realtime/process/#experimental-fields https://gtfs.org/community/governance/gtfs-realtime-amendment-process/#experimental-fields [R=301,NE] +RewriteRule ^#why-use-gtfs https://gtfs.org/getting-started/why-use-GTFS/ [R=301] +RewriteRule ^#what-is-high-quality-gtfs https://gtfs.org/getting-started/validate/ [R=301] +RewriteRule ^schedule/#getting-started https://gtfs.org/getting-started/create/ [R=301] RewriteRule ^schedule/#training-resources https://gtfs.org/resources/overview/ [R=301] -RewriteRule ^schedule/#getting-help-community https://gtfs.org/community/get_involved/ [R=301] -RewriteRule ^schedule/process/#guiding-principles https://gtfs.org/community/governance/gtfs_schedule_amendment_process/#guiding-principles [R=301,NE] -RewriteRule ^schedule/process/#revision-history https://gtfs.org/documentation/schedule/change_history/revision_history/ [R=301] +RewriteRule ^schedule/#getting-help-community https://gtfs.org/community/get-involved/ [R=301] +RewriteRule ^schedule/process/#guiding-principles https://gtfs.org/community/governance/gtfs-schedule-amendment-process/#guiding-principles [R=301,NE] +RewriteRule ^schedule/process/#revision-history https://gtfs.org/documentation/schedule/change-history/revision-history/ [R=301] + +# Redirect any URL containing underscores to the same URL with hyphens, plus correcting the file with spaces +RewriteCond %{THE_REQUEST} [_ ] +RewriteRule ^([^_]*)[_ ]([^_]*)$ $1-$2 [N] +RewriteRule ^(.*)[_ ](.*)$ $1-$2 [R=301,NC,L] + +RewriteCond %{THE_REQUEST} %20 +RewriteRule ^([^%]*?)%20([^%]*)$ $1-$2 [N] +RewriteRule ^(.*?)%20(.*)$ $1-$2 [R=301,NC,L] # Match any URL trying to access the blog in anything but EN and redirect them to EN RewriteCond %{REQUEST_URI} ^/(?:fr|es|ja|ru|pt|ko|id|de|zh|zh-TW)/blog/ @@ -59,4 +71,4 @@ RewriteRule ^(.+?)/.+$ /blog/ [L,R=302] # Match any URL under /ja, /ru, /pt, /ko, /id, /de, /zh, or /zh-TW and redirect to the corresponding index.html RewriteCond %{REQUEST_URI} ^/(ja|ru|pt|ko|id|de|zh|zh-TW)/ RewriteCond %{REQUEST_URI} !index\.html$ -RewriteRule ^(.+?)/.+$ /$1/index.html [L,R=302] +RewriteRule ^(.+?)/.+$ /$1/index.html [L,R=302] \ No newline at end of file diff --git a/docs/en/assets/TimeVariableFares_OffPeak.png b/docs/en/assets/TimeVariableFares-OffPeak.png similarity index 100% rename from docs/en/assets/TimeVariableFares_OffPeak.png rename to docs/en/assets/TimeVariableFares-OffPeak.png diff --git a/docs/en/assets/TimeVariableFares_Peak.png b/docs/en/assets/TimeVariableFares-Peak.png similarity index 100% rename from docs/en/assets/TimeVariableFares_Peak.png rename to docs/en/assets/TimeVariableFares-Peak.png diff --git a/docs/en/assets/create_001.png b/docs/en/assets/create-001.png similarity index 100% rename from docs/en/assets/create_001.png rename to docs/en/assets/create-001.png diff --git a/docs/en/assets/create_002.png b/docs/en/assets/create-002.png similarity index 100% rename from docs/en/assets/create_002.png rename to docs/en/assets/create-002.png diff --git a/docs/en/assets/create_003.png b/docs/en/assets/create-003.png similarity index 100% rename from docs/en/assets/create_003.png rename to docs/en/assets/create-003.png diff --git a/docs/en/assets/deviated _drop-off _route.zip b/docs/en/assets/deviated-drop-off-route.zip similarity index 100% rename from docs/en/assets/deviated _drop-off _route.zip rename to docs/en/assets/deviated-drop-off-route.zip diff --git a/docs/en/assets/deviated_route_zones.png b/docs/en/assets/deviated-route-zones.png similarity index 100% rename from docs/en/assets/deviated_route_zones.png rename to docs/en/assets/deviated-route-zones.png diff --git a/docs/en/assets/first_stop_reference.png b/docs/en/assets/first-stop-reference.png similarity index 100% rename from docs/en/assets/first_stop_reference.png rename to docs/en/assets/first-stop-reference.png diff --git a/docs/en/assets/homepage-theme-image_720x720@1x.png b/docs/en/assets/homepage-theme-image-720x720@1x.png similarity index 100% rename from docs/en/assets/homepage-theme-image_720x720@1x.png rename to docs/en/assets/homepage-theme-image-720x720@1x.png diff --git a/docs/en/assets/on-demand_services_between_multiple_zones(r).zip b/docs/en/assets/on-demand-services-between-multiple-zones(r).zip similarity index 100% rename from docs/en/assets/on-demand_services_between_multiple_zones(r).zip rename to docs/en/assets/on-demand-services-between-multiple-zones(r).zip diff --git a/docs/en/assets/on-demand_services_between_multiple_zones.zip b/docs/en/assets/on-demand-services-between-multiple-zones.zip similarity index 100% rename from docs/en/assets/on-demand_services_between_multiple_zones.zip rename to docs/en/assets/on-demand-services-between-multiple-zones.zip diff --git a/docs/en/assets/on-demand_services_within_a_single_zone.zip b/docs/en/assets/on-demand-services-within-a-single-zone.zip similarity index 100% rename from docs/en/assets/on-demand_services_within_a_single_zone.zip rename to docs/en/assets/on-demand-services-within-a-single-zone.zip diff --git a/docs/en/assets/propagated_delay.png b/docs/en/assets/propagated-delay.png similarity index 100% rename from docs/en/assets/propagated_delay.png rename to docs/en/assets/propagated-delay.png diff --git a/docs/en/assets/trip_modification.png b/docs/en/assets/trip-modification.png similarity index 100% rename from docs/en/assets/trip_modification.png rename to docs/en/assets/trip-modification.png diff --git a/docs/en/assets/validator_demo_large.mp4 b/docs/en/assets/validator-demo-large.mp4 similarity index 100% rename from docs/en/assets/validator_demo_large.mp4 rename to docs/en/assets/validator-demo-large.mp4 diff --git a/docs/en/assets/what_is_gtfs_001.png b/docs/en/assets/what-is-gtfs-001.png similarity index 100% rename from docs/en/assets/what_is_gtfs_001.png rename to docs/en/assets/what-is-gtfs-001.png diff --git a/docs/en/assets/what_is_gtfs_002.png b/docs/en/assets/what-is-gtfs-002.png similarity index 100% rename from docs/en/assets/what_is_gtfs_002.png rename to docs/en/assets/what-is-gtfs-002.png diff --git a/docs/en/community/get_involved.md b/docs/en/community/get-involved.md similarity index 100% rename from docs/en/community/get_involved.md rename to docs/en/community/get-involved.md diff --git a/docs/en/community/governance/gtfs_realtime_amendment_process.md b/docs/en/community/governance/gtfs-realtime-amendment-process.md similarity index 100% rename from docs/en/community/governance/gtfs_realtime_amendment_process.md rename to docs/en/community/governance/gtfs-realtime-amendment-process.md diff --git a/docs/en/community/governance/gtfs_schedule_amendment_process.md b/docs/en/community/governance/gtfs-schedule-amendment-process.md similarity index 100% rename from docs/en/community/governance/gtfs_schedule_amendment_process.md rename to docs/en/community/governance/gtfs-schedule-amendment-process.md diff --git a/docs/en/documentation/overview.md b/docs/en/documentation/overview.md index 7ad4e9434..2c358a187 100644 --- a/docs/en/documentation/overview.md +++ b/docs/en/documentation/overview.md @@ -25,7 +25,7 @@ The specification currently supports the following types of information: - Service alerts - stop moved, unforeseen events affecting a station, route or the entire network - Vehicle positions - information about the vehicles including location and congestion level -To learn more about them visit the [Feed Entities](../realtime/feed_entities/overview) section. +To learn more about them visit the [Feed Entities](../realtime/feed-entities/overview) section. GTFS Realtime was designed around ease of implementation, good GTFS interoperability and a focus on passenger information. This was possible through a partnership of the [initial Live Transit Updates](https://developers.google.com/transit/google-transit#LiveTransitUpdates) partner agencies, a number of transit developers and Google. The specification is published under the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0.html). diff --git a/docs/en/documentation/realtime/change_history/recent_additions.md b/docs/en/documentation/realtime/change-history/recent-additions.md similarity index 100% rename from docs/en/documentation/realtime/change_history/recent_additions.md rename to docs/en/documentation/realtime/change-history/recent-additions.md diff --git a/docs/en/documentation/realtime/change_history/revision_history.md b/docs/en/documentation/realtime/change-history/revision-history.md similarity index 100% rename from docs/en/documentation/realtime/change_history/revision_history.md rename to docs/en/documentation/realtime/change-history/revision-history.md diff --git a/docs/en/documentation/realtime/feed_entities/overview.md b/docs/en/documentation/realtime/feed-entities/overview.md similarity index 100% rename from docs/en/documentation/realtime/feed_entities/overview.md rename to docs/en/documentation/realtime/feed-entities/overview.md diff --git a/docs/en/documentation/realtime/feed_entities/service-alerts.md b/docs/en/documentation/realtime/feed-entities/service-alerts.md similarity index 100% rename from docs/en/documentation/realtime/feed_entities/service-alerts.md rename to docs/en/documentation/realtime/feed-entities/service-alerts.md diff --git a/docs/en/documentation/realtime/feed_entities/trip-modifications.md b/docs/en/documentation/realtime/feed-entities/trip-modifications.md similarity index 97% rename from docs/en/documentation/realtime/feed_entities/trip-modifications.md rename to docs/en/documentation/realtime/feed-entities/trip-modifications.md index e1d08de8d..dc981f793 100644 --- a/docs/en/documentation/realtime/feed_entities/trip-modifications.md +++ b/docs/en/documentation/realtime/feed-entities/trip-modifications.md @@ -36,11 +36,11 @@ A `Modification` message describes changes to each affected trip starting at `st The sequence of `replacement_stops` may be of arbitrary length. For example, 3 stops could be replaced by 2, 4, or 0 stops as the situation may require. -![](/../assets/trip_modification.png) +![](/../assets/trip-modification.png) _An example showing the effect of a modification on a particular trip. This modification may also be applied to several other trips._ -![](/../assets/propagated_delay.png) +![](/../assets/propagated-delay.png) _Propagated detour delays affect all stops following the end of a modification. If a trip has multiple modifications, the delays are accumulated._ @@ -54,6 +54,6 @@ The `departure_time` always equals the `arrival_time`. The optional fields of [`stop_times.txt`](../../../schedule/reference/#stop_timestxt) in the (CSV) GTFS specification are all set to their default values. -![](/../assets/first_stop_reference.png) +![](/../assets/first-stop-reference.png) _If a modification affects the first stop of the trip, that stop also serves as the reference stop of the modification._ diff --git a/docs/en/documentation/realtime/feed_entities/trip-updates.md b/docs/en/documentation/realtime/feed-entities/trip-updates.md similarity index 100% rename from docs/en/documentation/realtime/feed_entities/trip-updates.md rename to docs/en/documentation/realtime/feed-entities/trip-updates.md diff --git a/docs/en/documentation/realtime/feed_entities/vehicle-positions.md b/docs/en/documentation/realtime/feed-entities/vehicle-positions.md similarity index 100% rename from docs/en/documentation/realtime/feed_entities/vehicle-positions.md rename to docs/en/documentation/realtime/feed-entities/vehicle-positions.md diff --git a/docs/en/documentation/realtime/realtime_best_practices.md b/docs/en/documentation/realtime/realtime-best-practices.md similarity index 99% rename from docs/en/documentation/realtime/realtime_best_practices.md rename to docs/en/documentation/realtime/realtime-best-practices.md index dda9b31fd..47cbf1bd2 100644 --- a/docs/en/documentation/realtime/realtime_best_practices.md +++ b/docs/en/documentation/realtime/realtime-best-practices.md @@ -57,7 +57,7 @@ General guidelines for trip cancellations: | `vehicle` | Refer to [message VehicleDescriptor](#vehicledescriptor). | | | If separate `VehiclePosition` and `TripUpdate` feeds are provided, [TripDescriptor](#tripdescriptor) and [VehicleDescriptor](#vehicledescriptor) ID values pairing should match between the two feeds.

For example, a `VehiclePosition` entity has `vehicle_id:A` and `trip_id:4`, then the corresponding `TripUpdate` entity should also have `vehicle_id:A` and `trip_id:4`. If any `TripUpdate` entity has `trip_id:4` and any `vehicle_id` other than 4, this is an error. | | `stop_time_update` | `stop_time_updates` for a given `trip_id` should be strictly ordered by increasing `stop_sequence` and no `stop_sequence` should be repeated. | -| | While the trip is in progress, all `TripUpdates` should include at least one `stop_time_update` with a predicted arrival or departure time in the future. Note that the [GTFS Realtime spec](../feed_entities/trip-updates/#stoptimeupdate) says that producers should not drop a past `StopTimeUpdate` if it refers to a stop with a scheduled arrival time in the future for the given trip (i.e. the vehicle has passed the stop ahead of schedule), as otherwise it will be concluded that there is no update for this stop. | +| | While the trip is in progress, all `TripUpdates` should include at least one `stop_time_update` with a predicted arrival or departure time in the future. Note that the [GTFS Realtime spec](../feed-entities/trip-updates/#stoptimeupdate) says that producers should not drop a past `StopTimeUpdate` if it refers to a stop with a scheduled arrival time in the future for the given trip (i.e. the vehicle has passed the stop ahead of schedule), as otherwise it will be concluded that there is no update for this stop. | | `timestamp` | Should reflect the time this prediction for this trip was updated. | | `delay` | `TripUpdate.delay` should represent schedule deviation, i.e., the observed past value for how ahead/behind schedule the vehicle is. Predictions for future stops should be provided through `StopTimeEvent.delay` or `StopTimeEvent.time`. | diff --git a/docs/en/documentation/realtime/reference.md b/docs/en/documentation/realtime/reference.md index 64c2876fb..0a653828d 100644 --- a/docs/en/documentation/realtime/reference.md +++ b/docs/en/documentation/realtime/reference.md @@ -139,7 +139,7 @@ A definition (or update) of an entity in the transit feed. If the entity is not ### _message_ TripUpdate -Realtime update on the progress of a vehicle along a trip. Please also refer to the general discussion of the [trip updates entities](../../../documentation/realtime/feed_entities/trip-updates). +Realtime update on the progress of a vehicle along a trip. Please also refer to the general discussion of the [trip updates entities](../../../documentation/realtime/feed-entities/trip-updates). upd Depending on the value of ScheduleRelationship, a TripUpdate can specify: @@ -187,7 +187,7 @@ Uncertainty applies equally to both time and delay. The uncertainty roughly spec ### _message_ StopTimeUpdate -Realtime update for arrival and/or departure events for a given stop on a trip. Please also refer to the general discussion of stop time updates in the [TripDescriptor](#message-tripdescriptor) and [trip updates entities](../../../documentation/realtime/feed_entities/trip-updates) documentation. +Realtime update for arrival and/or departure events for a given stop on a trip. Please also refer to the general discussion of stop time updates in the [TripDescriptor](#message-tripdescriptor) and [trip updates entities](../../../documentation/realtime/feed-entities/trip-updates) documentation. Updates can be supplied for both past and future events. The producer is allowed, although not required, to drop past events. The update is linked to a specific stop either through stop_sequence or stop_id, so one of these fields must necessarily be set. If the same stop_id is visited more than once in a trip, then stop_sequence should be provided in all StopTimeUpdates for that stop_id on that trip. @@ -617,7 +617,7 @@ A `TripModifications` message identifies a list of similar trips which are all a

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. -[More about Trip Modifications...](../../../documentation/realtime/feed_entities/trip-modifications) +[More about Trip Modifications...](../../../documentation/realtime/feed-entities/trip-modifications) **Fields** @@ -634,11 +634,11 @@ A `Modification` message describes changes to each affected trip starting at `st

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. - + _An example showing the effect of a modification on a particular trip. This modification may also be applied to several other trips._ - + _Propagated detour delays affect all stops following the end of a modification. If a trip has multiple modifications, the delays are accumulated._ @@ -686,7 +686,7 @@ Each `ReplacementStop` message defines a stop that will now be visited by the tr

**Caution:** this field is still **experimental**, and subject to change. It may be formally adopted in the future. - + _If a modification affects the first stop of the trip, that stop also serves as the reference stop of the modification._ diff --git a/docs/en/documentation/schedule/change_history/recent_additions.md b/docs/en/documentation/schedule/change-history/recent-additions.md similarity index 100% rename from docs/en/documentation/schedule/change_history/recent_additions.md rename to docs/en/documentation/schedule/change-history/recent-additions.md diff --git a/docs/en/documentation/schedule/change_history/revision_history.md b/docs/en/documentation/schedule/change-history/revision-history.md similarity index 100% rename from docs/en/documentation/schedule/change_history/revision_history.md rename to docs/en/documentation/schedule/change-history/revision-history.md diff --git a/docs/en/documentation/schedule/examples/fares-v2.md b/docs/en/documentation/schedule/examples/fares-v2.md index f0dbaa6d9..5ab50eb9e 100644 --- a/docs/en/documentation/schedule/examples/fares-v2.md +++ b/docs/en/documentation/schedule/examples/fares-v2.md @@ -421,6 +421,6 @@ Alternatively, a user traveling in train #883 (`service_id=13`) would pay an Out In Apple Maps, riders can see how their fare price changes and compare fare prices next to the train scheduled departure:
- Outbound Adult Peak Zonal Fare of 20.00 USD - Outbound Adult Off Peak Zonal Fare of 15.00 USD + Outbound Adult Peak Zonal Fare of 20.00 USD + Outbound Adult Off Peak Zonal Fare of 15.00 USD
diff --git a/docs/en/documentation/schedule/examples/flex.md b/docs/en/documentation/schedule/examples/flex.md index f4ccd7ade..d54a753e0 100644 --- a/docs/en/documentation/schedule/examples/flex.md +++ b/docs/en/documentation/schedule/examples/flex.md @@ -9,7 +9,7 @@ The following example demonstrates how to model different demand-responsive serv Demand-responsive services can operate within a specific zone, allowing riders to book pickups at any point A within the zone and drop-offs at any point B within the same zone. An example of this is the [Heartland Express Transit](https://www.co.brown.mn.us/heartland-express-transit?view=category&id=56) service in Minnesota, USA. -[Download Heartland Express example dataset](../../../assets/on-demand_services_within_a_single_zone.zip) +[Download Heartland Express example dataset](../../../assets/on-demand-services-within-a-single-zone.zip) ### Define trips @@ -115,7 +115,7 @@ t_5374947_b_77497_tn_0 | area_715 | 2 | 08:00:00 | 12:45:00 | 1 | 2 | booking_ro Some demand-responsive services operate across multiple distinct zones, where riders can book pickups at any location A within one area and drop-offs at any location within another area. For example, [Minnesota River Valley Transit](https://www.saintpetermn.gov/330/Dial-a-Ride) offers on-demand services between Saint Peter and Kasota cities: -[Download River Valley Transit example dataset](../../../assets/on-demand_services_between_multiple_zones(r).zip) +[Download River Valley Transit example dataset](../../../assets/on-demand-services-between-multiple-zones(r).zip) ### Define trips @@ -215,7 +215,7 @@ trip_id | location_group_id | stop_sequence | start_pickup_drop_off_window | end In this example, the [Hermann Express](https://www.newulmmn.gov/553/Hermann-Express-City-Bus-Service) service in New Ulm City allows users to be picked up only at fixed stops and to be dropped off at any point within a specific deviation area between these stops. -**The example below has been simplified, download the [Hermann Express example dataset](../../../assets/deviated _drop-off _route.zip) for more details.** +**The example below has been simplified, download the [Hermann Express example dataset](../../../assets/deviated-drop-off-route.zip) for more details.** ### Define trips @@ -236,7 +236,7 @@ route_id | service_id | trip_id | share_id Using [locations.geojson](../../reference/#locationsgeojson) to define zones for deviated route. Typically, deviations are limited to keep the service on schedule. Therefore, as the vehicle travels, the deviation area between each fixed stop may vary accordingly. The area for route deviation may look like the image below:
- deviated route zones + deviated route zones
### Define stop times diff --git a/docs/en/documentation/schedule/schedule_best_practices.md b/docs/en/documentation/schedule/schedule-best-practices.md similarity index 99% rename from docs/en/documentation/schedule/schedule_best_practices.md rename to docs/en/documentation/schedule/schedule-best-practices.md index 9ebe6c212..eb9fc6006 100644 --- a/docs/en/documentation/schedule/schedule_best_practices.md +++ b/docs/en/documentation/schedule/schedule-best-practices.md @@ -260,7 +260,7 @@ Specification reference amendments are subject to a higher bar of scrutiny and c ### How to check for conformance with these Best Practices? -The Canonical GTFS Schedule Validator checks for compliance against these Best Practices. You can find more about this validation tool on the [validate page](../../../getting_started/validate). +The Canonical GTFS Schedule Validator checks for compliance against these Best Practices. You can find more about this validation tool on the [validate page](../../../getting-started/validate). ### I represent a transit agency. What steps can I take so that our software service providers and vendors follow these Best Practices? diff --git a/docs/en/getting_started/create.md b/docs/en/getting-started/create.md similarity index 100% rename from docs/en/getting_started/create.md rename to docs/en/getting-started/create.md diff --git a/docs/en/getting_started/example_feed.md b/docs/en/getting-started/example-feed.md similarity index 100% rename from docs/en/getting_started/example_feed.md rename to docs/en/getting-started/example-feed.md diff --git a/docs/en/getting_started/features/accessibility.md b/docs/en/getting-started/features/accessibility.md similarity index 100% rename from docs/en/getting_started/features/accessibility.md rename to docs/en/getting-started/features/accessibility.md diff --git a/docs/en/getting_started/features/base_add-ons.md b/docs/en/getting-started/features/base-add-ons.md similarity index 100% rename from docs/en/getting_started/features/base_add-ons.md rename to docs/en/getting-started/features/base-add-ons.md diff --git a/docs/en/getting_started/features/base.md b/docs/en/getting-started/features/base.md similarity index 99% rename from docs/en/getting_started/features/base.md rename to docs/en/getting-started/features/base.md index 23f0d83d4..6b7da6416 100644 --- a/docs/en/getting_started/features/base.md +++ b/docs/en/getting-started/features/base.md @@ -32,7 +32,7 @@ Agencies contain basic information about the agencies responsible for the transi ## Stops Stops represent the basic elements used to identify where a transit service picks up and drops off passengers. This could be a metro station or a bus stop. Each stop has, among other attributes, geographical coordinates to pinpoint its location on a map, and a name that matches the agency's rider-facing materials. Stops are associated to Trips using Stop Times. -With GTFS, it is also possible to describe the interior of larger stations, such as a train station or bus depot, using [Pathways](/getting_started/features/pathways). +With GTFS, it is also possible to describe the interior of larger stations, such as a train station or bus depot, using [Pathways](/getting-started/features/pathways). | Files included | Fields included | |----------------------------------|-------------------| diff --git a/docs/en/getting_started/features/fares.md b/docs/en/getting-started/features/fares.md similarity index 100% rename from docs/en/getting_started/features/fares.md rename to docs/en/getting-started/features/fares.md diff --git a/docs/en/getting_started/features/flexible_services.md b/docs/en/getting-started/features/flexible-services.md similarity index 100% rename from docs/en/getting_started/features/flexible_services.md rename to docs/en/getting-started/features/flexible-services.md diff --git a/docs/en/getting_started/features/overview.md b/docs/en/getting-started/features/overview.md similarity index 100% rename from docs/en/getting_started/features/overview.md rename to docs/en/getting-started/features/overview.md diff --git a/docs/en/getting_started/features/pathways.md b/docs/en/getting-started/features/pathways.md similarity index 100% rename from docs/en/getting_started/features/pathways.md rename to docs/en/getting-started/features/pathways.md diff --git a/docs/en/getting_started/publish.md b/docs/en/getting-started/publish.md similarity index 100% rename from docs/en/getting_started/publish.md rename to docs/en/getting-started/publish.md diff --git a/docs/en/getting_started/validate.md b/docs/en/getting-started/validate.md similarity index 98% rename from docs/en/getting_started/validate.md rename to docs/en/getting-started/validate.md index db672fbbd..c1a1e6083 100644 --- a/docs/en/getting_started/validate.md +++ b/docs/en/getting-started/validate.md @@ -33,7 +33,7 @@ The free and open-source [Canonical GTFS Schedule validator](https://gtfs-valida
diff --git a/docs/en/getting_started/what_is_GTFS.md b/docs/en/getting-started/what-is-GTFS.md similarity index 98% rename from docs/en/getting_started/what_is_GTFS.md rename to docs/en/getting-started/what-is-GTFS.md index 10d411892..b711879a5 100644 --- a/docs/en/getting_started/what_is_GTFS.md +++ b/docs/en/getting-started/what-is-GTFS.md @@ -6,7 +6,7 @@ The General Transit Feed Specification, also known as GTFS, is a standardized da It allows public transit agencies to publish their transit data in a format that can be consumed by a wide variety of software applications, most commonly trip planners. This means that users can easily get travel information to access public transit services by using their smartphones or similar devices. - + Today, GTFS is the go-to [Open Standard](https://www.interoperablemobility.org/definitions/#open_standard) for thousands of public transport providers worldwide. Some agencies produce this data themselves, while others employ a vendor to create and maintain data for them. @@ -14,7 +14,7 @@ Today, GTFS is the go-to [Open Standard](https://www.interoperablemobility.org/d GTFS consists of two main parts: [GTFS Schedule](../../documentation/schedule/reference) and [GTFS Realtime](../../documentation/realtime/reference). - + GTFS Schedule contains information about routes, schedules, fares, and geographic transit details among many other features, and it is presented in simple text files[^1]. This straightforward format allows for easy creation and maintenance without relying on complex or proprietary software. diff --git a/docs/en/getting_started/why_use_GTFS.md b/docs/en/getting-started/why-use-GTFS.md similarity index 100% rename from docs/en/getting_started/why_use_GTFS.md rename to docs/en/getting-started/why-use-GTFS.md diff --git a/docs/en/resources/gtfs.md b/docs/en/resources/gtfs.md index 0b1b30fff..fece76352 100644 --- a/docs/en/resources/gtfs.md +++ b/docs/en/resources/gtfs.md @@ -81,7 +81,7 @@ Converters from various static schedule formats to and from GTFS. - [onebusaway-gtfs-to-barefoot](https://github.com/OneBusAway/onebusaway-gtfs-to-barefoot) - A Java tool to create a [Barefoot](https://github.com/bmwcarit/barefoot) mapfile from a GTFS file. - [onebusaway-vdv-modules](https://github.com/OneBusAway/onebusaway-vdv-modules) - A Java library for working with transit data in the VDV format, including converting VDV-452 schedule data into GTFS. - [osm2gtfs](https://github.com/grote/osm2gtfs) - Turn OpenStreetMap data and schedule information into GTFS. -- [transit_model](https://github.com/hove-io/transit_model) - A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see [Software for Creating APIs](#software-for-creating-apis)), TransXChange (UK specification), KV1 (NL specification), NeTEx (EU specification). +- [transit_model](https://github.com/hove-io/transit_model) - A Rust library to convert to/from the following formats: GTFS, NTFS (for Navitia, see [Software for Creating APIs](software-for-creating-apis.md)), TransXChange (UK specification), KV1 (NL specification), NeTEx (EU specification). - [transloc-gtfs-rectifier](https://github.com/laidig/transloc-gtfs-rectifier) - Python application that attempts to assign GTFS stop_ids to [TransLoc](http://transloc.com/) IDs using [TransLoc's API](https://market.mashape.com/transloc/openapi-1-2) ([TransLoc](http://transloc.com/) doesn't provide GTFS `stop_ids` in their API). - [Transmodel and IFF to GTFS](https://github.com/bliksemlabs/bliksemintegration) - Imports and syncs (Transmodel) BISON Koppelvlak1, IFF (a format written by HP/EDS, somewhat similiar to ATCO CIF) to import timetables of the railway networks. The internal pseudo-NETeX datastructure allows to export to GTFS and there are proof-of-concepts to export to other formats such as NETeX, GTFS and IFF. - [Transporter-Project transxchange-to-gtfs](https://github.com/Transporter-Project/transxchange-to-gtfs) TransXChange to GTFS converter written in Objective-C. diff --git a/docs/es/assets/TimeVariableFares_OffPeak.png b/docs/es/assets/TimeVariableFares-OffPeak.png similarity index 100% rename from docs/es/assets/TimeVariableFares_OffPeak.png rename to docs/es/assets/TimeVariableFares-OffPeak.png diff --git a/docs/es/assets/TimeVariableFares_Peak.png b/docs/es/assets/TimeVariableFares-Peak.png similarity index 100% rename from docs/es/assets/TimeVariableFares_Peak.png rename to docs/es/assets/TimeVariableFares-Peak.png diff --git a/docs/es/assets/create_001.png b/docs/es/assets/create-001.png similarity index 100% rename from docs/es/assets/create_001.png rename to docs/es/assets/create-001.png diff --git a/docs/es/assets/create_002.png b/docs/es/assets/create-002.png similarity index 100% rename from docs/es/assets/create_002.png rename to docs/es/assets/create-002.png diff --git a/docs/es/assets/create_003.png b/docs/es/assets/create-003.png similarity index 100% rename from docs/es/assets/create_003.png rename to docs/es/assets/create-003.png diff --git a/docs/es/assets/deviated _drop-off _route.zip b/docs/es/assets/deviated -drop-off -route.zip similarity index 100% rename from docs/es/assets/deviated _drop-off _route.zip rename to docs/es/assets/deviated -drop-off -route.zip diff --git a/docs/es/assets/deviated_route_zones.png b/docs/es/assets/deviated-route-zones.png similarity index 100% rename from docs/es/assets/deviated_route_zones.png rename to docs/es/assets/deviated-route-zones.png diff --git a/docs/es/assets/first_stop_reference.png b/docs/es/assets/first-stop-reference.png similarity index 100% rename from docs/es/assets/first_stop_reference.png rename to docs/es/assets/first-stop-reference.png diff --git a/docs/es/assets/homepage-theme-image_720x720@1x.png b/docs/es/assets/homepage-theme-image-720x720@1x.png similarity index 100% rename from docs/es/assets/homepage-theme-image_720x720@1x.png rename to docs/es/assets/homepage-theme-image-720x720@1x.png diff --git a/docs/es/assets/on-demand_services_between_multiple_zones(r).zip b/docs/es/assets/on-demand-services-between-multiple-zones(r).zip similarity index 100% rename from docs/es/assets/on-demand_services_between_multiple_zones(r).zip rename to docs/es/assets/on-demand-services-between-multiple-zones(r).zip diff --git a/docs/es/assets/on-demand_services_between_multiple_zones.zip b/docs/es/assets/on-demand-services-between-multiple-zones.zip similarity index 100% rename from docs/es/assets/on-demand_services_between_multiple_zones.zip rename to docs/es/assets/on-demand-services-between-multiple-zones.zip diff --git a/docs/es/assets/on-demand_services_within_a_single_zone.zip b/docs/es/assets/on-demand-services-within-a-single-zone.zip similarity index 100% rename from docs/es/assets/on-demand_services_within_a_single_zone.zip rename to docs/es/assets/on-demand-services-within-a-single-zone.zip diff --git a/docs/es/assets/propagated_delay.png b/docs/es/assets/propagated-delay.png similarity index 100% rename from docs/es/assets/propagated_delay.png rename to docs/es/assets/propagated-delay.png diff --git a/docs/es/assets/trip_modification.png b/docs/es/assets/trip-modification.png similarity index 100% rename from docs/es/assets/trip_modification.png rename to docs/es/assets/trip-modification.png diff --git a/docs/es/assets/validator_demo_large.mp4 b/docs/es/assets/validator-demo-large.mp4 similarity index 100% rename from docs/es/assets/validator_demo_large.mp4 rename to docs/es/assets/validator-demo-large.mp4 diff --git a/docs/es/assets/what_is_gtfs_001.png b/docs/es/assets/what-is-gtfs-001.png similarity index 100% rename from docs/es/assets/what_is_gtfs_001.png rename to docs/es/assets/what-is-gtfs-001.png diff --git a/docs/es/assets/what_is_gtfs_002.png b/docs/es/assets/what-is-gtfs-002.png similarity index 100% rename from docs/es/assets/what_is_gtfs_002.png rename to docs/es/assets/what-is-gtfs-002.png diff --git a/docs/es/community/extensions/overview.md b/docs/es/community/extensions/overview.md index 5dac53023..18add3cd6 100644 --- a/docs/es/community/extensions/overview.md +++ b/docs/es/community/extensions/overview.md @@ -19,7 +19,7 @@ !!! info "Hacer oficial una extensión en la especificación" - Las extensiones pueden convertirse en propuestas activas y posteriormente [adoptarse](../../../documentation/schedule/change_history/recent_additions/) en la especificación oficial a través de [Proceso de modificación de especificaciones](../../governance/gtfs_schedule_amendment_process/). + Las extensiones pueden convertirse en propuestas activas y posteriormente [adoptarse](../../../documentation/schedule/change-history/recent_additions/) en la especificación oficial a través de [Proceso de modificación de especificaciones](../../governance/gtfs_schedule_amendment_process/). !!! note "Contribuir a esta lista" @@ -150,7 +150,7 @@ !!! info "Hacer oficial una extensión en la especificación" - Las extensiones pueden convertirse en propuestas activas y posteriormente [adoptarse](../../../documentation/realtime/change_history/recent_additions/) en la especificación oficial a través de [Proceso de modificación de especificaciones](../../governance/gtfs_realtime_amendment_process/). + Las extensiones pueden convertirse en propuestas activas y posteriormente [adoptarse](../../../documentation/realtime/change-history/recent_additions/) en la especificación oficial a través de [Proceso de modificación de especificaciones](../../governance/gtfs_realtime_amendment_process/). !!! note "Contribuir a esta lista" diff --git a/docs/es/community/get_involved.md b/docs/es/community/get-involved.md similarity index 100% rename from docs/es/community/get_involved.md rename to docs/es/community/get-involved.md diff --git a/docs/es/community/governance/gtfs_realtime_amendment_process.md b/docs/es/community/governance/gtfs-realtime-amendment-process.md similarity index 100% rename from docs/es/community/governance/gtfs_realtime_amendment_process.md rename to docs/es/community/governance/gtfs-realtime-amendment-process.md diff --git a/docs/es/community/governance/gtfs_schedule_amendment_process.md b/docs/es/community/governance/gtfs-schedule-amendment-process.md similarity index 100% rename from docs/es/community/governance/gtfs_schedule_amendment_process.md rename to docs/es/community/governance/gtfs-schedule-amendment-process.md diff --git a/docs/es/documentation/overview.md b/docs/es/documentation/overview.md index 7fb486ed6..dba36aac1 100644 --- a/docs/es/documentation/overview.md +++ b/docs/es/documentation/overview.md @@ -25,7 +25,7 @@ - Alertas de servicio: parada movida, eventos imprevistos que afectan a una estación, ruta o a toda la red - Posiciones de vehículos: información sobre los vehículos, incluida la ubicación y el nivel de congestión - Para obtener más información sobre ellos, visite la sección [Feed Entities](../realtime/feed_entities/overview). + Para obtener más información sobre ellos, visite la sección [Feed Entities](../realtime/feed-entities/overview). GTFS Realtime se diseñó teniendo en cuenta la facilidad de implementación, la buena interoperabilidad de GTFS y un enfoque en la información de los pasajeros. Esto fue posible gracias a una asociación de las [actualizaciones iniciales de Live Transit](https://developers.google.com/transit/google-transit#LiveTransitUpdates) agencias asociadas, varios desarrolladores de transporte y Google. La especificación se publica bajo la [Licencia Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). diff --git a/docs/es/documentation/realtime/change_history/recent_additions.md b/docs/es/documentation/realtime/change-history/recent-additions.md similarity index 100% rename from docs/es/documentation/realtime/change_history/recent_additions.md rename to docs/es/documentation/realtime/change-history/recent-additions.md diff --git a/docs/es/documentation/realtime/change_history/revision_history.md b/docs/es/documentation/realtime/change-history/revision-history.md similarity index 100% rename from docs/es/documentation/realtime/change_history/revision_history.md rename to docs/es/documentation/realtime/change-history/revision-history.md diff --git a/docs/es/documentation/realtime/feed_entities/overview.md b/docs/es/documentation/realtime/feed-entities/overview.md similarity index 100% rename from docs/es/documentation/realtime/feed_entities/overview.md rename to docs/es/documentation/realtime/feed-entities/overview.md diff --git a/docs/es/documentation/realtime/feed_entities/service-alerts.md b/docs/es/documentation/realtime/feed-entities/service-alerts.md similarity index 100% rename from docs/es/documentation/realtime/feed_entities/service-alerts.md rename to docs/es/documentation/realtime/feed-entities/service-alerts.md diff --git a/docs/es/documentation/realtime/feed_entities/trip-modifications.md b/docs/es/documentation/realtime/feed-entities/trip-modifications.md similarity index 97% rename from docs/es/documentation/realtime/feed_entities/trip-modifications.md rename to docs/es/documentation/realtime/feed-entities/trip-modifications.md index 6600d188b..85eae0944 100644 --- a/docs/es/documentation/realtime/feed_entities/trip-modifications.md +++ b/docs/es/documentation/realtime/feed-entities/trip-modifications.md @@ -36,11 +36,11 @@ La secuencia de `paradas_de_reemplazo` puede tener una longitud arbitraria. Por ejemplo, 3 paradas podrían reemplazarse por 2, 4 o 0 paradas, según lo requiera la situación. - ![](/../assets/trip_modification.png) + ![](/../assets/trip-modification.png) _Un ejemplo que muestra el efecto de una modificación en un viaje en particular. Esta modificación también se puede aplicar a varios otros viajes._ - ![](/../assets/propagated_delay.png) + ![](/../assets/propagated-delay.png) _Los retrasos de desvío propagados afectan a todas las paradas posteriores al final de una modificación. Si un viaje tiene múltiples modificaciones, los retrasos se acumulan._ @@ -54,6 +54,6 @@ Los campos opcionales de [`stop_times.txt`](../../../schedule/reference/#stop_timestxt) en la especificación GTFS (CSV) están todos configurados en sus valores predeterminados. - ![](/../assets/first_stop_reference.png) + ![](/../assets/first-stop-reference.png) _Si una modificación afecta a la primera parada del viaje, esa parada también sirve como parada de referencia de la modificación._ diff --git a/docs/es/documentation/realtime/feed_entities/trip-updates.md b/docs/es/documentation/realtime/feed-entities/trip-updates.md similarity index 100% rename from docs/es/documentation/realtime/feed_entities/trip-updates.md rename to docs/es/documentation/realtime/feed-entities/trip-updates.md diff --git a/docs/es/documentation/realtime/feed_entities/vehicle-positions.md b/docs/es/documentation/realtime/feed-entities/vehicle-positions.md similarity index 100% rename from docs/es/documentation/realtime/feed_entities/vehicle-positions.md rename to docs/es/documentation/realtime/feed-entities/vehicle-positions.md diff --git a/docs/es/documentation/realtime/realtime_best_practices.md b/docs/es/documentation/realtime/realtime-best-practices.md similarity index 99% rename from docs/es/documentation/realtime/realtime_best_practices.md rename to docs/es/documentation/realtime/realtime-best-practices.md index 481f96963..e46fbc91b 100644 --- a/docs/es/documentation/realtime/realtime_best_practices.md +++ b/docs/es/documentation/realtime/realtime-best-practices.md @@ -57,7 +57,7 @@ | `vehicle` | Consulte [message VehicleDescriptor](#vehicledescriptor). | | | Si se proporcionan feeds `VehiclePosition` y `TripUpdate` separados, el emparejamiento de los valores de ID de [TripDescriptor](#tripdescriptor) y [VehicleDescriptor](#vehicledescriptor) debe coincidir entre los dos feeds.

Por ejemplo, una entidad `VehiclePosition` tiene `vehicle_id:A` y `trip_id:4`, entonces la entidad `TripUpdate` correspondiente también debería tener `vehicle_id:A` y `trip_id:4`. Si alguna entidad `TripUpdate` tiene `trip_id:4` y cualquier `vehicle_id` distinto de 4, esto es un error. | | `stop_time_update` | `stop_time_updates` para un `trip_id` determinado debe ordenarse estrictamente aumentando `stop_sequence` y no se debe repetir ningún `stop_sequence`. | - | | Mientras el viaje está en curso, todas las "`TripUpdates`" deben incluir al menos una "`stop_time_update`" con una hora prevista de llegada o salida en el futuro. Tenga en cuenta que la [especificación GTFS Realtime](../feed_entities/trip-updates/#stoptimeupdate) dice que los productores no deben descartar una `StopTimeUpdate` pasada si se refiere a una parada con una hora de llegada programada en el futuro para el viaje determinado. (es decir, el vehículo ha pasado la parada antes de lo previsto), ya que en caso contrario se concluirá que no hay actualización para esta parada. | + | | Mientras el viaje está en curso, todas las "`TripUpdates`" deben incluir al menos una "`stop_time_update`" con una hora prevista de llegada o salida en el futuro. Tenga en cuenta que la [especificación GTFS Realtime](../feed-entities/trip-updates/#stoptimeupdate) dice que los productores no deben descartar una `StopTimeUpdate` pasada si se refiere a una parada con una hora de llegada programada en el futuro para el viaje determinado. (es decir, el vehículo ha pasado la parada antes de lo previsto), ya que en caso contrario se concluirá que no hay actualización para esta parada. | | `timestamp` | Debe reflejar la hora en que se actualizó esta predicción para este viaje. | | `delay` | `TripUpdate.delay` debe representar la desviación del cronograma, es decir, el valor pasado observado de qué tan adelantado o atrasado está el vehículo con respecto al cronograma. Las predicciones para futuras paradas deben proporcionarse a través de `StopTimeEvent.delay` o `StopTimeEvent.time`. | diff --git a/docs/es/documentation/realtime/reference.md b/docs/es/documentation/realtime/reference.md index d23e4fb2e..453aade19 100644 --- a/docs/es/documentation/realtime/reference.md +++ b/docs/es/documentation/realtime/reference.md @@ -139,7 +139,7 @@ ### _message_ TripUpdate - Actualización en tiempo real del progreso de un vehículo a lo largo de un viaje. Consulte también la discusión general sobre las [entidades de actualizaciones de viajes](../../../documentation/realtime/feed_entities/trip-updates). + Actualización en tiempo real del progreso de un vehículo a lo largo de un viaje. Consulte también la discusión general sobre las [entidades de actualizaciones de viajes](../../../documentation/realtime/feed-entities/trip-updates). upd Dependiendo del valor de ScheduleRelationship, TripUpdate puede especificar: @@ -187,7 +187,7 @@ ### _message_ StopTimeUpdate - Actualización en tiempo real de eventos de llegada y/o salida para una parada determinada de un viaje. Consulte también la discusión general sobre las actualizaciones de la hora de parada en la documentación [TripDescriptor](#message-tripdescriptor) y [entidades de actualizaciones de viaje](../../../documentation/realtime/feed_entities/trip-updates). + Actualización en tiempo real de eventos de llegada y/o salida para una parada determinada de un viaje. Consulte también la discusión general sobre las actualizaciones de la hora de parada en la documentación [TripDescriptor](#message-tripdescriptor) y [entidades de actualizaciones de viaje](../../../documentation/realtime/feed-entities/trip-updates). Se pueden proporcionar actualizaciones para eventos pasados ​​y futuros. Al productor se le permite, aunque no es obligatorio, descartar eventos pasados. La actualización está vinculada a una parada específica ya sea a través de stop_sequence o stop_id, por lo que necesariamente se debe configurar uno de estos campos. Si se visita el mismo stop_id más de una vez en un viaje, entonces se debe proporcionar stop_sequence en todas las StopTimeUpdates para ese stop_id en ese viaje. @@ -617,7 +617,7 @@

**Precaución:**este campo aún es **experimental** y está sujeto a cambios. Es posible que se adopte formalmente en el futuro. - [Más sobre Modificaciones de viaje...](../../../documentation/realtime/feed_entities/trip-modifications) + [Más sobre Modificaciones de viaje...](../../../documentation/realtime/feed-entities/trip-modifications) **Campos** @@ -634,11 +634,11 @@

**Precaución:**este campo aún es **experimental** y está sujeto a cambios. Es posible que se adopte formalmente en el futuro. - + _Un ejemplo que muestra el efecto de una modificación en un viaje en particular. Esta modificación también podrá aplicarse a varios otros viajes._ - + _Los retrasos propagados en los desvíos afectan a todas las paradas posteriores al final de una modificación. Si un viaje tiene múltiples modificaciones, los retrasos se acumulan._ @@ -686,7 +686,7 @@

**Precaución:**este campo aún es **experimental** y está sujeto a cambios. Es posible que se adopte formalmente en el futuro. - + _Si una modificación afecta a la primera parada del viaje, esa parada sirve también como parada de referencia de la modificación._ diff --git a/docs/es/documentation/schedule/change_history/recent_additions.md b/docs/es/documentation/schedule/change-history/recent-additions.md similarity index 99% rename from docs/es/documentation/schedule/change_history/recent_additions.md rename to docs/es/documentation/schedule/change-history/recent-additions.md index 563839dc0..d5190b348 100644 --- a/docs/es/documentation/schedule/change_history/recent_additions.md +++ b/docs/es/documentation/schedule/change-history/recent-additions.md @@ -22,7 +22,7 @@ ## Propuestas adoptadas recientemente - Propuestas recientemente adoptadas que ahora son funciones de la [referencia oficial de GTFS Schedule](../../referencia). Consulte el [Historial de revisiones](/documentation/schedule/change_history/revision_history) completo para obtener más información. + Propuestas recientemente adoptadas que ahora son funciones de la [referencia oficial de GTFS Schedule](../../referencia). Consulte el [Historial de revisiones](/documentation/schedule/change-history/revision_history) completo para obtener más información.
diff --git a/docs/es/documentation/schedule/change_history/revision_history.md b/docs/es/documentation/schedule/change-history/revision-history.md similarity index 100% rename from docs/es/documentation/schedule/change_history/revision_history.md rename to docs/es/documentation/schedule/change-history/revision-history.md diff --git a/docs/es/documentation/schedule/examples/fares-v2.md b/docs/es/documentation/schedule/examples/fares-v2.md index b787b20d5..efeb4566f 100644 --- a/docs/es/documentation/schedule/examples/fares-v2.md +++ b/docs/es/documentation/schedule/examples/fares-v2.md @@ -418,6 +418,6 @@ En Apple Maps, los pasajeros pueden ver cómo cambia el precio de su tarifa y comparar los precios de las tarifas junto a la salida programada del tren:
- Tarifa Zonal Pico Adulto Saliente de 20.00 USD - Tarifa Zonal Saliente Adulto Fuera de Horas Pico de 15.00 USD + Tarifa Zonal Pico Adulto Saliente de 20.00 USD + Tarifa Zonal Saliente Adulto Fuera de Horas Pico de 15.00 USD
diff --git a/docs/es/documentation/schedule/examples/flex.md b/docs/es/documentation/schedule/examples/flex.md index 865798384..e30542ac3 100644 --- a/docs/es/documentation/schedule/examples/flex.md +++ b/docs/es/documentation/schedule/examples/flex.md @@ -9,7 +9,7 @@ Los servicios que responden a la demanda pueden operar dentro de una zona específica, lo que permite a los pasajeros reservar recogidas en cualquier punto A dentro de la zona y entregas en cualquier punto B dentro de la misma zona. Un ejemplo de esto es el servicio [Heartland Express Transit](https://www.co.brown.mn.us/heartland-express-transit?view=category&id=56) en Minnesota, EE. UU. - [Descargar conjunto de datos de ejemplo de Heartland Express](../../../assets/on-demand_services_within_a_single_zone.zip) + [Descargar conjunto de datos de ejemplo de Heartland Express](../../../assets/on-demand-services-within-a-single-zone.zip) ### Definir viajes @@ -117,7 +117,7 @@ t_5374947_b_77497_tn_0 | area_715 | 2 | 08:00:00 | 12:45:00 | 1 | 2 | booking_ro Algunos servicios que responden a la demanda operan en múltiples zonas distintas, donde los pasajeros pueden reservar recogidas en cualquier ubicación A dentro de un área y entregas en cualquier ubicación dentro de otra área. Por ejemplo, [Minnesota River Valley Transit](https://www.saintpetermn.gov/330/Dial-a-Ride) ofrece servicios a pedido entre las ciudades de Saint Peter y Kasota: - [Descargar ejemplo de River Valley Transit conjunto de datos](../../../assets/on-demand_services_between_multiple_zones(r).zip) + [Descargar ejemplo de River Valley Transit conjunto de datos](../../../assets/on-demand-services-between-multiple-zones(r).zip) ### Definir viajes @@ -217,7 +217,7 @@ trip_id | location_group_id | stop_sequence | start_pickup_drop_off_window | end En este ejemplo, el servicio [Hermann Express](https://www.newulmmn.gov/553/Hermann-Express-City-Bus-Service) en New Ulm City permite que los usuarios sean recogidos solo en puntos fijos.paradas y ser dejado en cualquier punto dentro de un área de desviación específica entre estas paradas. - **El siguiente ejemplo se ha simplificado; descargue el [conjunto de datos de ejemplo de Hermann Express](../../../assets/deviated _drop-off _route.zip) para obtener más detalles.** + **El siguiente ejemplo se ha simplificado; descargue el [conjunto de datos de ejemplo de Hermann Express](../../../assets/deviated-drop-off-route.zip) para obtener más detalles.** ### Definir viajes @@ -238,7 +238,7 @@ trip_id | location_group_id | stop_sequence | start_pickup_drop_off_window | end Usar [locations.geojson](../../reference/#locationsgeojson) para definir zonas para ruta desviada. Normalmente, las desviaciones se limitan para mantener el servicio según lo previsto. Por lo tanto, a medida que el vehículo avanza, el área de desviación entre cada parada fija puede variar en consecuencia. El área de desviación de ruta puede parecerse a la siguiente imagen:
-zonas de ruta desviadas +zonas de ruta desviadas
### Definir horarios de parada diff --git a/docs/es/documentation/schedule/reference.md b/docs/es/documentation/schedule/reference.md index ef2b9246a..f0fe30945 100644 --- a/docs/es/documentation/schedule/reference.md +++ b/docs/es/documentation/schedule/reference.md @@ -1,6 +1,6 @@ ## Referencia de General Transit Feed Specification - **Revisado el 16 de agosto de 2024. Consulte [Historial de revisiones](../change_history/revision_history) para obtener más detalles.** + **Revisado el 16 de agosto de 2024. Consulte [Historial de revisiones](../change-history/revision_history) para obtener más detalles.** Este documento define el formato y la estructura de los archivos que componen un conjunto de datos GTFS. diff --git a/docs/es/documentation/schedule/schedule_best_practices.md b/docs/es/documentation/schedule/schedule-best-practices.md similarity index 99% rename from docs/es/documentation/schedule/schedule_best_practices.md rename to docs/es/documentation/schedule/schedule-best-practices.md index aca42c9b1..16240fc3e 100644 --- a/docs/es/documentation/schedule/schedule_best_practices.md +++ b/docs/es/documentation/schedule/schedule-best-practices.md @@ -260,7 +260,7 @@ ### ¿Cómo comprobar la conformidad con estas mejores prácticas? - El Validador de Programación Canonical GTFS verifica el cumplimiento de estas Mejores Prácticas. Puede encontrar más información sobre esta herramienta de validación en la [página de validación](../../../getting_started/validate). + El Validador de Programación Canonical GTFS verifica el cumplimiento de estas Mejores Prácticas. Puede encontrar más información sobre esta herramienta de validación en la [página de validación](../../../getting-started/validate). ### Represento a una agencia de tránsito. ¿Qué pasos puedo tomar para que nuestros proveedores de servicios de software y vendedores sigan estas mejores prácticas? diff --git a/docs/es/getting_started/create.md b/docs/es/getting-started/create.md similarity index 99% rename from docs/es/getting_started/create.md rename to docs/es/getting-started/create.md index c1b0192ba..907e6b234 100644 --- a/docs/es/getting_started/create.md +++ b/docs/es/getting-started/create.md @@ -3,15 +3,15 @@ ## Descripción general de un feed GTFS Todos los feeds GTFS comienzan con un conjunto de datos en el formato de referencia GTFS, que es una serie de archivos CSV guardados con una extensión de archivo.txt [^1]. En su implementación más básica, un conjunto de datos GTFS generalmente comienza con siete archivos base, combinados en un archivo.zip alojado en una URL pública y estable: este es el feed GTFS. - + Cada archivo consta de una lista de múltiples registros (líneas de datos) con varios campos de información. Por ejemplo, cada línea enumerada en [routes.txt](../../documentation/schedule/reference/#routestxt) representa una ruta de transporte público y sus campos describen múltiples elementos de esa ruta, como su nombre, descripción, operación agencia, etc. - + Los archivos base para un conjunto de datos GTFS se pueden describir de la siguiente manera: Un conjunto de datos de GTFS Schedule tiene una o más rutas ([routes.txt](../../documentation/schedule/reference/#routestxt)), cada ruta tiene uno o más viajes ([trips.txt](../../documentation/schedule/reference/#tripstxt)), cada viaje visita una serie de paradas ([stops.txt](../../documentation/schedule/reference/#stopstxt)) en momentos específicos ([stop_times.txt](../../documentation/schedule/reference/#stop_timestxt)). Los Viajes y las horarios de parada solo contienen información sobre la hora del día; el calendario se utiliza para determinar en qué días se realiza un viaje determinado ([calendar.txt](../../documentation/schedule/reference/#calendartxt) y [calendar_dates.txt](../../documentation/schedule/reference/#calendar_datestxt)). Además, varias agencias ([agency.txt](../../documentation/schedule/reference/#agencytxt)) pueden operar múltiples rutas. Estos archivos están vinculados entre sí con campos que tienen referencias cruzadas entre ellos. - + Una vez que estos archivos se hayan configurado para crear un conjunto de datos GTFS básico, se pueden agregar archivos adicionales (opcionales) para habilitar otras funcionalidades o necesidades específicas entre agencias de tránsito y proveedores. Algunos ejemplos de estos archivos incluyen: diff --git a/docs/es/getting_started/example_feed.md b/docs/es/getting-started/example-feed.md similarity index 100% rename from docs/es/getting_started/example_feed.md rename to docs/es/getting-started/example-feed.md diff --git a/docs/es/getting_started/features/accessibility.md b/docs/es/getting-started/features/accessibility.md similarity index 100% rename from docs/es/getting_started/features/accessibility.md rename to docs/es/getting-started/features/accessibility.md diff --git a/docs/es/getting_started/features/base_add-ons.md b/docs/es/getting-started/features/base-add-ons.md similarity index 100% rename from docs/es/getting_started/features/base_add-ons.md rename to docs/es/getting-started/features/base-add-ons.md diff --git a/docs/es/getting_started/features/base.md b/docs/es/getting-started/features/base.md similarity index 99% rename from docs/es/getting_started/features/base.md rename to docs/es/getting-started/features/base.md index 624a87d36..5a67dd2dc 100644 --- a/docs/es/getting_started/features/base.md +++ b/docs/es/getting-started/features/base.md @@ -33,7 +33,7 @@ ## Paradas Las Paradas representan los elementos básicos utilizados para identificar dónde un servicio de tránsito recoge y deja pasajeros. Podría ser una estación de metro o una parada de autobús. Cada parada tiene, entre otros atributos, coordenadas geográficas para señalar su ubicación en un mapa y un nombre que coincide con los materiales de la agencia orientados a los pasajeros. Las Paradas se asocian a Viajes mediante Horarios de Parada. - Con GTFS, también es posible describir el interior de estaciones más grandes, como una estación de tren o una estación de autobuses, usando [Recorridos](/getting_started/funciones/pathways). + Con GTFS, también es posible describir el interior de estaciones más grandes, como una estación de tren o una estación de autobuses, usando [Recorridos](/getting-started/funciones/pathways). | Archivos incluidos | Campos incluidos | |----------------------------------|-------------------| diff --git a/docs/es/getting_started/features/fares.md b/docs/es/getting-started/features/fares.md similarity index 100% rename from docs/es/getting_started/features/fares.md rename to docs/es/getting-started/features/fares.md diff --git a/docs/es/getting_started/features/flexible_services.md b/docs/es/getting-started/features/flexible-services.md similarity index 100% rename from docs/es/getting_started/features/flexible_services.md rename to docs/es/getting-started/features/flexible-services.md diff --git a/docs/es/getting_started/features/overview.md b/docs/es/getting-started/features/overview.md similarity index 100% rename from docs/es/getting_started/features/overview.md rename to docs/es/getting-started/features/overview.md diff --git a/docs/es/getting_started/features/pathways.md b/docs/es/getting-started/features/pathways.md similarity index 100% rename from docs/es/getting_started/features/pathways.md rename to docs/es/getting-started/features/pathways.md diff --git a/docs/es/getting_started/publish.md b/docs/es/getting-started/publish.md similarity index 100% rename from docs/es/getting_started/publish.md rename to docs/es/getting-started/publish.md diff --git a/docs/es/getting_started/validate.md b/docs/es/getting-started/validate.md similarity index 98% rename from docs/es/getting_started/validate.md rename to docs/es/getting-started/validate.md index fb43a6b59..476721784 100644 --- a/docs/es/getting_started/validate.md +++ b/docs/es/getting-started/validate.md @@ -33,7 +33,7 @@
diff --git a/docs/es/getting_started/what_is_GTFS.md b/docs/es/getting-started/what-is-GTFS.md similarity index 98% rename from docs/es/getting_started/what_is_GTFS.md rename to docs/es/getting-started/what-is-GTFS.md index 01155ab59..ef4914632 100644 --- a/docs/es/getting_started/what_is_GTFS.md +++ b/docs/es/getting-started/what-is-GTFS.md @@ -6,7 +6,7 @@ Permite a las agencias de transporte público publicar sus datos de tránsito en un formato que puede ser consumido por una amplia variedad de aplicaciones de software, más comúnmente planificadores de viajes. Esto significa que los usuarios pueden obtener fácilmente información de viaje para acceder a los servicios de transporte público utilizando sus teléfonos inteligentes o dispositivos similares. - + Hoy en día, GTFS es el [Estándar abierto](https://www.interoperablemobility.org/definitions/#open_standard) para miles de proveedores de transporte público en todo el mundo. Algunas agencias producen estos datos por sí mismas, mientras que otras emplean a un proveedor para crear y mantener datos para ellos. @@ -14,7 +14,7 @@ GTFS consta de dos partes principales: [GTFS Schedule](../../documentation/schedule/reference) y [GTFS Realtime](../../documentation/realtime/reference). - + GTFS Schedule contiene información sobre rutas, horarios, tarifas y detalles de tránsito geográfico, entre muchas otras funciones, y se presenta en archivos de texto simples[^1]. Este formato sencillo permite una fácil creación y mantenimiento sin depender de software complejo o propietario. diff --git a/docs/es/getting_started/why_use_GTFS.md b/docs/es/getting-started/why-use-GTFS.md similarity index 100% rename from docs/es/getting_started/why_use_GTFS.md rename to docs/es/getting-started/why-use-GTFS.md diff --git a/docs/fr/assets/TimeVariableFares_OffPeak.png b/docs/fr/assets/TimeVariableFares-OffPeak.png similarity index 100% rename from docs/fr/assets/TimeVariableFares_OffPeak.png rename to docs/fr/assets/TimeVariableFares-OffPeak.png diff --git a/docs/fr/assets/TimeVariableFares_Peak.png b/docs/fr/assets/TimeVariableFares-Peak.png similarity index 100% rename from docs/fr/assets/TimeVariableFares_Peak.png rename to docs/fr/assets/TimeVariableFares-Peak.png diff --git a/docs/fr/assets/create_001.png b/docs/fr/assets/create-001.png similarity index 100% rename from docs/fr/assets/create_001.png rename to docs/fr/assets/create-001.png diff --git a/docs/fr/assets/create_002.png b/docs/fr/assets/create-002.png similarity index 100% rename from docs/fr/assets/create_002.png rename to docs/fr/assets/create-002.png diff --git a/docs/fr/assets/create_003.png b/docs/fr/assets/create-003.png similarity index 100% rename from docs/fr/assets/create_003.png rename to docs/fr/assets/create-003.png diff --git a/docs/fr/assets/deviated _drop-off _route.zip b/docs/fr/assets/deviated -drop-off -route.zip similarity index 100% rename from docs/fr/assets/deviated _drop-off _route.zip rename to docs/fr/assets/deviated -drop-off -route.zip diff --git a/docs/fr/assets/deviated_route_zones.png b/docs/fr/assets/deviated-route-zones.png similarity index 100% rename from docs/fr/assets/deviated_route_zones.png rename to docs/fr/assets/deviated-route-zones.png diff --git a/docs/fr/assets/first_stop_reference.png b/docs/fr/assets/first-stop-reference.png similarity index 100% rename from docs/fr/assets/first_stop_reference.png rename to docs/fr/assets/first-stop-reference.png diff --git a/docs/fr/assets/homepage-theme-image_720x720@1x.png b/docs/fr/assets/homepage-theme-image-720x720@1x.png similarity index 100% rename from docs/fr/assets/homepage-theme-image_720x720@1x.png rename to docs/fr/assets/homepage-theme-image-720x720@1x.png diff --git a/docs/fr/assets/on-demand_services_between_multiple_zones(r).zip b/docs/fr/assets/on-demand-services-between-multiple-zones(r).zip similarity index 100% rename from docs/fr/assets/on-demand_services_between_multiple_zones(r).zip rename to docs/fr/assets/on-demand-services-between-multiple-zones(r).zip diff --git a/docs/fr/assets/on-demand_services_between_multiple_zones.zip b/docs/fr/assets/on-demand-services-between-multiple-zones.zip similarity index 100% rename from docs/fr/assets/on-demand_services_between_multiple_zones.zip rename to docs/fr/assets/on-demand-services-between-multiple-zones.zip diff --git a/docs/fr/assets/on-demand_services_within_a_single_zone.zip b/docs/fr/assets/on-demand-services-within-a-single-zone.zip similarity index 100% rename from docs/fr/assets/on-demand_services_within_a_single_zone.zip rename to docs/fr/assets/on-demand-services-within-a-single-zone.zip diff --git a/docs/fr/assets/propagated_delay.png b/docs/fr/assets/propagated-delay.png similarity index 100% rename from docs/fr/assets/propagated_delay.png rename to docs/fr/assets/propagated-delay.png diff --git a/docs/fr/assets/trip_modification.png b/docs/fr/assets/trip-modification.png similarity index 100% rename from docs/fr/assets/trip_modification.png rename to docs/fr/assets/trip-modification.png diff --git a/docs/fr/assets/validator_demo_large.mp4 b/docs/fr/assets/validator-demo-large.mp4 similarity index 100% rename from docs/fr/assets/validator_demo_large.mp4 rename to docs/fr/assets/validator-demo-large.mp4 diff --git a/docs/fr/assets/what_is_gtfs_001.png b/docs/fr/assets/what-is-gtfs-001.png similarity index 100% rename from docs/fr/assets/what_is_gtfs_001.png rename to docs/fr/assets/what-is-gtfs-001.png diff --git a/docs/fr/assets/what_is_gtfs_002.png b/docs/fr/assets/what-is-gtfs-002.png similarity index 100% rename from docs/fr/assets/what_is_gtfs_002.png rename to docs/fr/assets/what-is-gtfs-002.png diff --git a/docs/fr/community/get_involved.md b/docs/fr/community/get-involved.md similarity index 100% rename from docs/fr/community/get_involved.md rename to docs/fr/community/get-involved.md diff --git a/docs/fr/community/governance/gtfs_realtime_amendment_process.md b/docs/fr/community/governance/gtfs-realtime-amendment-process.md similarity index 100% rename from docs/fr/community/governance/gtfs_realtime_amendment_process.md rename to docs/fr/community/governance/gtfs-realtime-amendment-process.md diff --git a/docs/fr/community/governance/gtfs_schedule_amendment_process.md b/docs/fr/community/governance/gtfs-schedule-amendment-process.md similarity index 100% rename from docs/fr/community/governance/gtfs_schedule_amendment_process.md rename to docs/fr/community/governance/gtfs-schedule-amendment-process.md diff --git a/docs/fr/documentation/overview.md b/docs/fr/documentation/overview.md index 391518480..0e00196d4 100644 --- a/docs/fr/documentation/overview.md +++ b/docs/fr/documentation/overview.md @@ -25,7 +25,7 @@ - Alertes de service - arrêt déplacé, événements imprévus affectant une gare, un itinéraire ou l’ensemble du réseau - Positions des véhicules - informations sur les véhicules, y compris l’emplacement et le niveau de congestion - Pour en savoir plus à leur sujet, visitez la section [Feed Entities](../realtime/feed_entities/overview). + Pour en savoir plus à leur sujet, visitez la section [Feed Entities](../realtime/feed-entities/overview). GTFS Realtime a été conçu autour de la facilité de mise en œuvre, d’une bonne interopérabilité GTFS et d’une concentration sur l’information des passagers. Cela a été possible grâce à un partenariat entre les [initiales Live Transit Updates](https://developers.google.com/transit/google-transit#LiveTransitUpdates) agences partenaires, un certain nombre de développeurs de transports en commun et Google. La spécification est publiée sous la [Licence Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). diff --git a/docs/fr/documentation/realtime/change_history/recent_additions.md b/docs/fr/documentation/realtime/change-history/recent-additions.md similarity index 100% rename from docs/fr/documentation/realtime/change_history/recent_additions.md rename to docs/fr/documentation/realtime/change-history/recent-additions.md diff --git a/docs/fr/documentation/realtime/change_history/revision_history.md b/docs/fr/documentation/realtime/change-history/revision-history.md similarity index 100% rename from docs/fr/documentation/realtime/change_history/revision_history.md rename to docs/fr/documentation/realtime/change-history/revision-history.md diff --git a/docs/fr/documentation/realtime/feed_entities/overview.md b/docs/fr/documentation/realtime/feed-entities/overview.md similarity index 100% rename from docs/fr/documentation/realtime/feed_entities/overview.md rename to docs/fr/documentation/realtime/feed-entities/overview.md diff --git a/docs/fr/documentation/realtime/feed_entities/service-alerts.md b/docs/fr/documentation/realtime/feed-entities/service-alerts.md similarity index 100% rename from docs/fr/documentation/realtime/feed_entities/service-alerts.md rename to docs/fr/documentation/realtime/feed-entities/service-alerts.md diff --git a/docs/fr/documentation/realtime/feed_entities/trip-modifications.md b/docs/fr/documentation/realtime/feed-entities/trip-modifications.md similarity index 97% rename from docs/fr/documentation/realtime/feed_entities/trip-modifications.md rename to docs/fr/documentation/realtime/feed-entities/trip-modifications.md index 421d99f27..624f9e36f 100644 --- a/docs/fr/documentation/realtime/feed_entities/trip-modifications.md +++ b/docs/fr/documentation/realtime/feed-entities/trip-modifications.md @@ -36,11 +36,11 @@ La séquence de `replacement_stops` peut être de longueur arbitraire. Par exemple, 3 arrêts pourraient être remplacés par 2, 4 ou 0 arrêts selon la situation. - ![](/../assets/trip_modification.png) + ![](/../assets/trip-modification.png) _Un exemple montrant l’effet d’une modification sur un voyage particulier. Cette modification peut également s’appliquer à plusieurs autres trajets._ - ![](/../assets/propagated_delay.png) + ![](/../assets/propagated-delay.png) _Les délais de détour propagés affectent tous les arrêts suivant la fin d’une modification. Si un trajet a plusieurs modifications, les retards sont accumulés._ @@ -54,6 +54,6 @@ Les champs facultatifs de [`stop_times.txt`](../../../schedule/reference/#stop_timestxt) dans la spécification (CSV) GTFS sont tous définis sur leurs valeurs par défaut. - ![](/../assets/first_stop_reference.png) + ![](/../assets/first-stop-reference.png) _Si une modification affecte le premier arrêt du trajet, cet arrêt sert également d’arrêt de référence de la modification._ diff --git a/docs/fr/documentation/realtime/feed_entities/trip-updates.md b/docs/fr/documentation/realtime/feed-entities/trip-updates.md similarity index 100% rename from docs/fr/documentation/realtime/feed_entities/trip-updates.md rename to docs/fr/documentation/realtime/feed-entities/trip-updates.md diff --git a/docs/fr/documentation/realtime/feed_entities/vehicle-positions.md b/docs/fr/documentation/realtime/feed-entities/vehicle-positions.md similarity index 100% rename from docs/fr/documentation/realtime/feed_entities/vehicle-positions.md rename to docs/fr/documentation/realtime/feed-entities/vehicle-positions.md diff --git a/docs/fr/documentation/realtime/realtime_best_practices.md b/docs/fr/documentation/realtime/realtime-best-practices.md similarity index 99% rename from docs/fr/documentation/realtime/realtime_best_practices.md rename to docs/fr/documentation/realtime/realtime-best-practices.md index 075987b26..2d4e0e928 100644 --- a/docs/fr/documentation/realtime/realtime_best_practices.md +++ b/docs/fr/documentation/realtime/realtime-best-practices.md @@ -57,7 +57,7 @@ | `vehicle` | Reportez-vous au [message VehicleDescriptor](#vehicledescriptor). | | | Si des flux `VehiclePosition` et `TripUpdate` distincts sont fournis, l’appariement des valeurs d’ID [TripDescriptor](#tripdescriptor) et [VehicleDescriptor](#vehicledescriptor) doit correspondre entre les deux flux.

Par exemple, une entité `VehiclePosition` a `vehicle_id:A` et `trip_id:4`, alors l’entité `TripUpdate` correspondante doit également avoir `vehicle_id:A` et `trip_id:4`. Si une entité `TripUpdate` a `trip_id:4` et un `vehicle_id` autre que 4, il s’agit d’une erreur. | | `stop_time_update` | `stop_time_updates` pour un `trip_id` donné doit être strictement ordonné en augmentant `stop_sequence` et aucune `stop_sequence` ne doit être répétée. | - | | Pendant que le voyage est en cours, toutes les `TripUpdates` doivent inclure au moins une `stop_time_update` avec une heure d’arrivée ou de départ prévue dans le futur. Notez que la [spécification GTFS Realtime](../feed_entities/trip-updates/#stoptimeupdate) indique que les producteurs ne doivent pas abandonner un `StopTimeUpdate` passé s’il fait référence à un arrêt avec une heure d’arrivée prévue dans le futur pour le voyage donné. (c’est-à-dire que le véhicule a franchi l’arrêt plus tôt que prévu), sinon on conclura qu’il n’y a pas de mise à jour pour cet arrêt. | + | | Pendant que le voyage est en cours, toutes les `TripUpdates` doivent inclure au moins une `stop_time_update` avec une heure d’arrivée ou de départ prévue dans le futur. Notez que la [spécification GTFS Realtime](../feed-entities/trip-updates/#stoptimeupdate) indique que les producteurs ne doivent pas abandonner un `StopTimeUpdate` passé s’il fait référence à un arrêt avec une heure d’arrivée prévue dans le futur pour le voyage donné. (c’est-à-dire que le véhicule a franchi l’arrêt plus tôt que prévu), sinon on conclura qu’il n’y a pas de mise à jour pour cet arrêt. | | `timestamp` | Doit refléter l’heure à laquelle cette prévision pour ce voyage a été mise à jour. | | `delay` | `TripUpdate.delay` doit représenter l’écart d’horaire, c’est-à-dire la valeur passée observée pour l’avance/le retard du véhicule par rapport à l’horaire. Les prévisions pour les arrêts futurs doivent être fournies via `StopTimeEvent.delay` ou `StopTimeEvent.time`. | diff --git a/docs/fr/documentation/realtime/reference.md b/docs/fr/documentation/realtime/reference.md index d5ac2d294..c3694465c 100644 --- a/docs/fr/documentation/realtime/reference.md +++ b/docs/fr/documentation/realtime/reference.md @@ -139,7 +139,7 @@ ### _message_ TripUpdate - Mise à jour en temps réel sur la progression d’un véhicule tout au long d’un trajet. Veuillez également vous référer à la discussion générale sur les [entités de mises à jour de voyage](../../../documentation/realtime/feed_entities/trip-updates). + Mise à jour en temps réel sur la progression d’un véhicule tout au long d’un trajet. Veuillez également vous référer à la discussion générale sur les [entités de mises à jour de voyage](../../../documentation/realtime/feed-entities/trip-updates). upd En fonction de la valeur de ScheduleRelationship, un TripUpdate peut spécifier : @@ -187,7 +187,7 @@ ### _message_ StopTimeUpdate - Mise à jour en temps réel des événements d’arrivée et/ou de départ pour un arrêt donné d’un voyage. Veuillez également vous référer à la discussion générale sur les mises à jour des horaires d'arrêt dans la documentation [TripDescriptor](#message-tripdescriptor) et [trip mises à jour entités](../../../documentation/realtime/feed_entities/trip-updates). + Mise à jour en temps réel des événements d’arrivée et/ou de départ pour un arrêt donné d’un voyage. Veuillez également vous référer à la discussion générale sur les mises à jour des horaires d'arrêt dans la documentation [TripDescriptor](#message-tripdescriptor) et [trip mises à jour entités](../../../documentation/realtime/feed-entities/trip-updates). Des mises à jour peuvent être fournies pour les événements passés et futurs. Le producteur est autorisé, bien que cela ne soit pas obligatoire, à abandonner les événements passés. La mise à jour est liée à un arrêt spécifique soit via stop_sequence soit stop_id, donc l’un de ces champs doit obligatoirement être renseigné. Si le même stop_id est visité plus d’une fois au cours d’un trajet, alors stop_sequence doit être fourni dans toutes les StopTimeUpdates pour ce stop_id lors de ce trajet. @@ -617,7 +617,7 @@

**Attention :** ce champ est encore **expérimental** et est susceptible de changer. Il pourrait être formellement adopté à l’avenir. - [En savoir plus sur les modifications de voyage...](../../../documentation/realtime/feed_entities/trip-modifications) + [En savoir plus sur les modifications de voyage...](../../../documentation/realtime/feed-entities/trip-modifications) **Champs** @@ -634,11 +634,11 @@

**Attention :**ce champ est encore **expérimental** et est susceptible de changer. Il pourrait être formellement adopté à l’avenir. - + _Un exemple montrant l’effet d’une modification sur un voyage particulier. Cette modification pourra également s’appliquer à plusieurs autres déplacements._ - + _Les délais de détour propagés affectent tous les arrêts suivant la fin d’une modification. Si un trajet comporte plusieurs modifications, les retards se cumulent._ @@ -686,7 +686,7 @@

**Attention :**ce champ est encore **expérimental** et est susceptible de changer. Il pourrait être formellement adopté à l’avenir. - + _Si une modification affecte le premier arrêt du trajet, cet arrêt sert également d’arrêt de référence de la modification._ diff --git a/docs/fr/documentation/schedule/change_history/recent_additions.md b/docs/fr/documentation/schedule/change-history/recent-additions.md similarity index 100% rename from docs/fr/documentation/schedule/change_history/recent_additions.md rename to docs/fr/documentation/schedule/change-history/recent-additions.md diff --git a/docs/fr/documentation/schedule/change_history/revision_history.md b/docs/fr/documentation/schedule/change-history/revision-history.md similarity index 100% rename from docs/fr/documentation/schedule/change_history/revision_history.md rename to docs/fr/documentation/schedule/change-history/revision-history.md diff --git a/docs/fr/documentation/schedule/examples/fares-v2.md b/docs/fr/documentation/schedule/examples/fares-v2.md index acbb80364..8b8229135 100644 --- a/docs/fr/documentation/schedule/examples/fares-v2.md +++ b/docs/fr/documentation/schedule/examples/fares-v2.md @@ -420,6 +420,6 @@ Dans Apple Maps, les passagers peuvent voir l’évolution du prix de leur billet et comparer les prix en fonction du départ prévu du train :
- Tarif de zone de pointe pour adultes sortants de 20,00 USD - Tarif zonal hors pointe adulte sortant de 15,00 USD + Tarif de zone de pointe pour adultes sortants de 20,00 USD + Tarif zonal hors pointe adulte sortant de 15,00 USD
diff --git a/docs/fr/documentation/schedule/examples/flex.md b/docs/fr/documentation/schedule/examples/flex.md index 6cffa6f69..e28c4f5ba 100644 --- a/docs/fr/documentation/schedule/examples/flex.md +++ b/docs/fr/documentation/schedule/examples/flex.md @@ -9,7 +9,7 @@ Les services à la demande peuvent fonctionner dans une zone spécifique, permettant aux passagers de réserver des prises en charge à n’importe quel point A de la zone et des dépôts à n’importe quel point B de la même zone. Un exemple de ceci est le service [Heartland Express Transit](https://www.co.brown.mn.us/heartland-express-transit?view=category&id=56) dans le Minnesota, aux États-Unis. - [Télécharger l’exemple de données Heartland Express](../../../assets/on-demand_services_within_a_single_zone.zip) + [Télécharger l’exemple de données Heartland Express](../../../assets/on-demand-services-within-a-single-zone.zip) ### Définir les trajets @@ -116,7 +116,7 @@ t_5374947_b_77497_tn_0 | area_715 | 2 | 08:00:00 | 12:45:00 | 1 | 2 | booking_ro Certains services à la demande fonctionnent dans plusieurs zones distinctes, où les passagers peuvent réserver des prises en charge à n’importe quel endroit A dans une zone et des dépôts à n’importe quel endroit dans une autre zone. Par exemple, [Minnesota River Valley Transit](https://www.saintpetermn.gov/330/Dial-a-Ride) propose des services à la demande entre les villes de Saint Peter et Kasota : - [Télécharger l’exemple de River Valley Transit](../../../assets/on-demand_services_between_multiple_zones(r).zip) + [Télécharger l’exemple de River Valley Transit](../../../assets/on-demand-services-between-multiple-zones(r).zip) ### Définir les trajets @@ -216,7 +216,7 @@ trip_id | location_group_id | stop_sequence | start_pickup_drop_off_window | end Dans cet exemple, le service [Hermann Express](https://www.newulmmn.gov/553/Hermann-Express-City-Bus-Service) de New Ulm permet aux usagers d’être récupérés uniquement à des arrêts définis et être déposés à tout moment dans une zone de déviation spécifique entre ces arrêts. - **L’exemple ci-dessous a été simplifié, téléchargez l’[exemple de jeu de données Hermann Express](../../../assets/deviated _drop-off _route.zip) pour plus de détails.** + **L’exemple ci-dessous a été simplifié, téléchargez l’[exemple de jeu de données Hermann Express](../../../assets/deviated-drop-off-route.zip) pour plus de détails.** ### Définir les trajets @@ -237,7 +237,7 @@ route_id | service_id | trip_id | share_id Utilisez [locations.geojson](../../reference/#locationsgeojson) pour définir des zones pour l’itinéraire dévié. En règle générale, les écarts sont limités pour maintenir le service dans les délais. Par conséquent, au fur et à mesure du déplacement du véhicule, la zone d’écart entre chaque arrêt fixe peut varier en conséquence. La zone de déviation d’itinéraire peut ressembler à l’image ci-dessous :
-zones d’itinéraire déviées +zones d’itinéraire déviées
### Définir les horaires d’arrêts diff --git a/docs/fr/documentation/schedule/schedule_best_practices.md b/docs/fr/documentation/schedule/schedule-best-practices.md similarity index 99% rename from docs/fr/documentation/schedule/schedule_best_practices.md rename to docs/fr/documentation/schedule/schedule-best-practices.md index 09be55e8b..a33a96ecf 100644 --- a/docs/fr/documentation/schedule/schedule_best_practices.md +++ b/docs/fr/documentation/schedule/schedule-best-practices.md @@ -260,7 +260,7 @@ ### Comment vérifier la conformité à ces bonnes pratiques ? - Le validateur de GTFS Schedule canonique vérifie la conformité par rapport à ces bonnes pratiques. Vous pouvez en savoir plus sur cet outil de validation sur la [page de validation](../../../getting_started/validate). + Le validateur de GTFS Schedule canonique vérifie la conformité par rapport à ces bonnes pratiques. Vous pouvez en savoir plus sur cet outil de validation sur la [page de validation](../../../getting-started/validate). ### Je représente une agence de transport. Quelles mesures puis-je prendre pour que nos fournisseurs de services logiciels suivent ces bonnes pratiques ? diff --git a/docs/fr/getting_started/create.md b/docs/fr/getting-started/create.md similarity index 100% rename from docs/fr/getting_started/create.md rename to docs/fr/getting-started/create.md diff --git a/docs/fr/getting_started/example_feed.md b/docs/fr/getting-started/example-feed.md similarity index 100% rename from docs/fr/getting_started/example_feed.md rename to docs/fr/getting-started/example-feed.md diff --git a/docs/fr/getting_started/features/accessibility.md b/docs/fr/getting-started/features/accessibility.md similarity index 100% rename from docs/fr/getting_started/features/accessibility.md rename to docs/fr/getting-started/features/accessibility.md diff --git a/docs/fr/getting_started/features/base_add-ons.md b/docs/fr/getting-started/features/base-add-ons.md similarity index 100% rename from docs/fr/getting_started/features/base_add-ons.md rename to docs/fr/getting-started/features/base-add-ons.md diff --git a/docs/fr/getting_started/features/base.md b/docs/fr/getting-started/features/base.md similarity index 100% rename from docs/fr/getting_started/features/base.md rename to docs/fr/getting-started/features/base.md diff --git a/docs/fr/getting_started/features/fares.md b/docs/fr/getting-started/features/fares.md similarity index 100% rename from docs/fr/getting_started/features/fares.md rename to docs/fr/getting-started/features/fares.md diff --git a/docs/fr/getting_started/features/flexible_services.md b/docs/fr/getting-started/features/flexible-services.md similarity index 100% rename from docs/fr/getting_started/features/flexible_services.md rename to docs/fr/getting-started/features/flexible-services.md diff --git a/docs/fr/getting_started/features/overview.md b/docs/fr/getting-started/features/overview.md similarity index 100% rename from docs/fr/getting_started/features/overview.md rename to docs/fr/getting-started/features/overview.md diff --git a/docs/fr/getting_started/features/pathways.md b/docs/fr/getting-started/features/pathways.md similarity index 100% rename from docs/fr/getting_started/features/pathways.md rename to docs/fr/getting-started/features/pathways.md diff --git a/docs/fr/getting_started/publish.md b/docs/fr/getting-started/publish.md similarity index 100% rename from docs/fr/getting_started/publish.md rename to docs/fr/getting-started/publish.md diff --git a/docs/fr/getting_started/validate.md b/docs/fr/getting-started/validate.md similarity index 98% rename from docs/fr/getting_started/validate.md rename to docs/fr/getting-started/validate.md index b63d661b1..de6ff03d2 100644 --- a/docs/fr/getting_started/validate.md +++ b/docs/fr/getting-started/validate.md @@ -33,7 +33,7 @@
diff --git a/docs/fr/getting_started/what_is_GTFS.md b/docs/fr/getting-started/what-is-GTFS.md similarity index 98% rename from docs/fr/getting_started/what_is_GTFS.md rename to docs/fr/getting-started/what-is-GTFS.md index c08f5897b..b316d0558 100644 --- a/docs/fr/getting_started/what_is_GTFS.md +++ b/docs/fr/getting-started/what-is-GTFS.md @@ -6,7 +6,7 @@ Il permet aux agences de transport en commun de publier leurs données de transport en commun dans un format qui peut être utilisé par une grande variété d’applications logicielles, le plus souvent des planificateurs d'itinéraire. Cela signifie que les utilisateurs peuvent facilement obtenir des informations d'itinéraire pour accéder aux services de transport en commun en utilisant leur smartphone ou un appareil similaire. - + Aujourd’hui, GTFS est l'[Open Standard](https://www.interoperablemobility.org/definitions/#open_standard) incontournable pour des milliers de fournisseurs de transports publics dans le monde. Certaines agences produisent elles-mêmes ces données, tandis que d’autres font appel à un fournisseur pour créer et gérer leurs données. @@ -14,7 +14,7 @@ GTFS se compose de deux parties principales : [GTFS Schedule](../../documentation/schedule/reference) et [GTFS Realtime](../../documentation/realtime/reference). - + GTFS Schedule contient des informations sur les itinéraires, les horaires, les tarifs et les arrêts, parmi de nombreuses autres fonctionnalités, et il est présenté dans des fichiers texte simples[^1]. Ce format simple permet une création et une maintenance faciles sans recourir à des logiciels complexes ou propriétaires. diff --git a/docs/fr/getting_started/why_use_GTFS.md b/docs/fr/getting-started/why-use-GTFS.md similarity index 100% rename from docs/fr/getting_started/why_use_GTFS.md rename to docs/fr/getting-started/why-use-GTFS.md diff --git a/mkdocs.yml b/mkdocs.yml index 3c69655f7..916f4972f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -314,26 +314,26 @@ plugins: nav: - Home: index.md - Getting started: - - What is GTFS?: getting_started/what_is_GTFS.md - - Why use GTFS?: getting_started/why_use_GTFS.md + - What is GTFS?: getting-started/what-is-GTFS.md + - Why use GTFS?: getting-started/why-use-GTFS.md - How to produce GTFS?: - - Create: getting_started/create.md - - Validate: getting_started/validate.md - - Publish: getting_started/publish.md + - Create: getting-started/create.md + - Validate: getting-started/validate.md + - Publish: getting-started/publish.md - What can GTFS do?: - - Overview: getting_started/features/overview.md - - Base: getting_started/features/base.md - - Base add-ons: getting_started/features/base_add-ons.md - - Accessibility: getting_started/features/accessibility.md - - Fares: getting_started/features/fares.md - - Pathways: getting_started/features/pathways.md - - Flexible services: getting_started/features/flexible_services.md - - Example GTFS feed: getting_started/example_feed.md + - Overview: getting-started/features/overview.md + - Base: getting-started/features/base.md + - Base add-ons: getting-started/features/base-add-ons.md + - Accessibility: getting-started/features/accessibility.md + - Fares: getting-started/features/fares.md + - Pathways: getting-started/features/pathways.md + - Flexible services: getting-started/features/flexible-services.md + - Example GTFS feed: getting-started/example-feed.md - Technical Documentation: - Overview: documentation/overview.md - Schedule: - Reference: documentation/schedule/reference.md - - Best Practices: documentation/schedule/schedule_best_practices.md + - Best Practices: documentation/schedule/schedule-best-practices.md - Data examples: - Attributions: documentation/schedule/examples/attributions.md - Continuous stops: documentation/schedule/examples/continuous-stops.md @@ -348,17 +348,17 @@ nav: - Transfers: documentation/schedule/examples/transfers.md - Translations: documentation/schedule/examples/translations.md - Change history: - - Recent additions: documentation/schedule/change_history/recent_additions.md - - Full revision history: documentation/schedule/change_history/revision_history.md + - Recent additions: documentation/schedule/change-history/recent-additions.md + - Full revision history: documentation/schedule/change-history/revision-history.md - Realtime: - Reference: documentation/realtime/reference.md - - Best Practices: documentation/realtime/realtime_best_practices.md + - Best Practices: documentation/realtime/realtime-best-practices.md - Feed Entities: - - Overview: documentation/realtime/feed_entities/overview.md - - Trip Updates: documentation/realtime/feed_entities/trip-updates.md - - Service Alerts: documentation/realtime/feed_entities/service-alerts.md - - Vehicle Positions: documentation/realtime/feed_entities/vehicle-positions.md - - Trip Modifications: documentation/realtime/feed_entities/trip-modifications.md + - Overview: documentation/realtime/feed-entities/overview.md + - Trip Updates: documentation/realtime/feed-entities/trip-updates.md + - Service Alerts: documentation/realtime/feed-entities/service-alerts.md + - Vehicle Positions: documentation/realtime/feed-entities/vehicle-positions.md + - Trip Modifications: documentation/realtime/feed-entities/trip-modifications.md - Protobuf: documentation/realtime/proto.md - Language Bindings: - Overview: documentation/realtime/language-bindings/overview.md @@ -374,13 +374,13 @@ nav: - Trip updates: documentation/realtime/examples/trip-updates.md - Migration duplicated: documentation/realtime/examples/migration-duplicated.md - Change history: - - Recent Additions: documentation/realtime/change_history/recent_additions.md - - Full revision history: documentation/realtime/change_history/revision_history.md + - Recent Additions: documentation/realtime/change-history/recent-additions.md + - Full revision history: documentation/realtime/change-history/revision-history.md - Community: - - Get involved: community/get_involved.md + - Get involved: community/get-involved.md - Governance: - - GTFS Schedule Amendment Process: community/governance/gtfs_schedule_amendment_process.md - - GTFS Realtime Amendment Process: community/governance/gtfs_realtime_amendment_process.md + - GTFS Schedule Amendment Process: community/governance/gtfs-schedule-amendment-process.md + - GTFS Realtime Amendment Process: community/governance/gtfs-realtime-amendment-process.md - Extensions: - Overview: community/extensions/overview.md - Fares v2: community/extensions/fares-v2.md @@ -404,4 +404,4 @@ nav: - About: - about/index.md - Blog: - - blog/index.md + - blog/index.md \ No newline at end of file diff --git a/scripts/replace_references.swift b/scripts/replace_references.swift new file mode 100644 index 000000000..be45e911f --- /dev/null +++ b/scripts/replace_references.swift @@ -0,0 +1,143 @@ +import Foundation + +// Actor to handle thread-safe counting of replacements +actor ReplacementCounter { + private var totalReplacements : Int = 0 + private var fileCount : Int = 0 + + func incrementReplacements(by count : Int) { + totalReplacements += count + } + + func incrementFileCount() { + fileCount += 1 + } + + func getStats() -> (files : Int, replacements : Int) { + return (fileCount, totalReplacements) + } +} + +// Function to recursively find all .md files in a directory +func findMarkdownFiles(in directory : String) throws -> [String] { + let fileManager : FileManager = FileManager.default + var markdownFiles: [String] = [] + + guard let enumerator: FileManager.DirectoryEnumerator = fileManager.enumerator( + at: URL(fileURLWithPath: directory), + includingPropertiesForKeys: [.isRegularFileKey], + options: [.skipsHiddenFiles] + ) else { return [] } + + for case let fileURL as URL in enumerator { + guard fileURL.pathExtension == "md" else { continue } + markdownFiles.append(fileURL.path) + } + + return markdownFiles +} + +// Process a single file +func processFile(_ filePath: String, with replacements: [String: String], counter: ReplacementCounter) async throws { + let fileURL : URL = URL(fileURLWithPath: filePath) + + do { + let content : String = try String(contentsOf: fileURL, encoding: .utf8) + var modifiedContent : String = content + var fileReplacements : Int = 0 + + // Perform replacements + for (oldText, newText) in replacements { + let previousContent : String = modifiedContent + modifiedContent = modifiedContent.replacingOccurrences(of: oldText, with: newText) + + // Count replacements in this file + let replacementsCount : Int = previousContent.components(separatedBy: oldText).count - 1 + fileReplacements += replacementsCount + } + + // Only write to file if changes were made + if fileReplacements > 0 { + try modifiedContent.write(to: fileURL, atomically: true, encoding: .utf8) + print("Modified \(filePath) - Made \(fileReplacements) replacements") + await counter.incrementReplacements(by: fileReplacements) + } + await counter.incrementFileCount() + + } catch { + print("Error processing \(filePath): \(error.localizedDescription)") + throw error + } +} + +// Dictionary of replacements +let replacements: [String : String] = [ + "TimeVariableFares_OffPeak.png" : "TimeVariableFares-OffPeak.png", + "TimeVariableFares_Peak.png" : "TimeVariableFares-Peak.png", + "create_001.png" : "create-001.png", + "create_002.png" : "create-002.png", + "create_003.png" : "create-003.png", + "deviated _drop-off _route.zip" : "deviated-drop-off-route.zip", + "deviated_route_zones.png" : "deviated-route-zones.png", + "first_stop_reference.png" : "first-stop-reference.png", + "homepage-theme-image_720x720@1x.png" : "homepage-theme-image-720x720@1x.png", + "on-demand_services_between_multiple_zones(r).zip" : "on-demand-services-between-multiple-zones(r).zip", + "on-demand_services_between_multiple_zones.zip" : "on-demand-services-between-multiple-zones.zip", + "on-demand_services_within_a_single_zone.zip" : "on-demand-services-within-a-single-zone.zip", + "propagated_delay.png" : "propagated-delay.png", + "trip_modification.png" : "trip-modification.png", + "validator_demo_large.mp4" : "validator-demo-large.mp4", + "what_is_gtfs_001.png" : "what-is-gtfs-001.png", + "what_is_gtfs_002.png" : "what-is-gtfs-002.png", + "get_involved.md" : "get-involved.md", + "gtfs_realtime_amendment_process.md" : "gtfs-realtime-amendment-process.md", + "gtfs_schedule_amendment_process.md" : "gtfs-schedule-amendment-process.md", + "change_history/recent_additions.md" : "change-history/recent-additions.md", + "change_history/revision_history.md" : "change-history/revision-history.md", + "realtime_best_practices.md" : "realtime-best-practices.md", + "schedule_best_practices.md" : "schedule-best-practices.md", + "example_feed.md" : "example-feed.md", + "getting_started/features/base_add-ons.md" : "getting-started/features/base-add-ons.md", + "getting_started/features/flexible_services.md" : "getting-started/features/flexible-services.md", + "getting_started/what_is_GTFS.md" : "getting-started/what-is-GTFS.md", + "getting_started/why_use_GTFS.md" : "getting-started/why-use-GTFS.md", + "/change_history" : "/change-history", + "/feed_entities" : "/feed-entities", + "/getting_started" : "/getting-started" +] + +// Get the directory path from command line argument or use current directory +let directory : String = CommandLine.arguments.count > 1 ? CommandLine.arguments[1] : FileManager.default.currentDirectoryPath + +// Create counter actor +let counter : ReplacementCounter = ReplacementCounter() + +// Run async code using Task +Task { + do { + // Find all markdown files + let markdownFiles : [String] = try findMarkdownFiles(in: directory) + + // Process files concurrently + try await withThrowingTaskGroup(of: Void.self) { group in + for filePath : String in markdownFiles { + group.addTask { + try await processFile(filePath, with: replacements, counter: counter) + } + } + try await group.waitForAll() + } + + // Get final statistics + let (fileCount, totalReplacements) = await counter.getStats() + print("\nCompleted processing \(fileCount) markdown files") + print("Total replacements made: \(totalReplacements)") + + } catch { + print("Error: \(error.localizedDescription)") + exit(1) + } +} + +// Keep the script running until async work is done +RunLoop.main.run(until: Date(timeIntervalSinceNow: 0.1)) \ No newline at end of file