diff --git a/README.md b/README.md
index aa64fe26..9836ee64 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
-# Montréal STM Subway for [MonTransit](https://github.com/mtransitapps/mtransit-for-android)
+
+# Société de Transport de Montréal subways for [MonTransit](https://github.com/mtransitapps/mtransit-for-android)
-## Download on Google Play
+## Download on the Play Store
@@ -16,9 +17,7 @@
## Social
-* [Facebook](https://www.facebook.com/MonTransit)
-
-* [Twitter](https://twitter.com/montransit)
+[Facebook](https://www.facebook.com/MonTransit) | [Twitter/X](https://twitter.com/montransit) | [Instagram](https://www.instagram.com/mtransit.apps) | [Threads](https://www.threads.com/@mtransit.apps)
## BETA program
@@ -26,4 +25,4 @@ Learn more about the BETA program [here](https://github.com/mtransitapps/mtransi
## License
-* [Apache Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
+* [Apache Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html)
diff --git a/agency-parser/parser_class b/agency-parser/parser_class
deleted file mode 100755
index 0d676813..00000000
--- a/agency-parser/parser_class
+++ /dev/null
@@ -1 +0,0 @@
-org.mtransit.parser.ca_montreal_stm_subway.MontrealSTMSubwayAgencyTools
\ No newline at end of file
diff --git a/agency-parser/src/main/java/org/mtransit/parser/ca_montreal_stm_subway/MontrealSTMSubwayAgencyTools.java b/agency-parser/src/main/java/org/mtransit/parser/ca_montreal_stm_subway/MontrealSTMSubwayAgencyTools.java
deleted file mode 100644
index 5a69967d..00000000
--- a/agency-parser/src/main/java/org/mtransit/parser/ca_montreal_stm_subway/MontrealSTMSubwayAgencyTools.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package org.mtransit.parser.ca_montreal_stm_subway;
-
-import static org.mtransit.commons.CleanUtils.SPACE;
-import static org.mtransit.commons.RegexUtils.WHITESPACE_CAR;
-import static org.mtransit.commons.RegexUtils.any;
-import static org.mtransit.commons.RegexUtils.group;
-import static org.mtransit.commons.StringUtils.EMPTY;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.mtransit.commons.CleanUtils;
-import org.mtransit.commons.Cleaner;
-import org.mtransit.parser.DefaultAgencyTools;
-import org.mtransit.parser.gtfs.data.GRoute;
-import org.mtransit.parser.gtfs.data.GStop;
-import org.mtransit.parser.mt.data.MAgency;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.regex.Pattern;
-
-// https://www.stm.info/en/about/developers
-// https://www.stm.info/fr/a-propos/developpeurs
-public class MontrealSTMSubwayAgencyTools extends DefaultAgencyTools {
-
- public static void main(@NotNull String[] args) {
- new MontrealSTMSubwayAgencyTools().start(args);
- }
-
- @Nullable
- @Override
- public List getSupportedLanguages() {
- return LANG_FR_EN;
- }
-
- @NotNull
- @Override
- public String getAgencyName() {
- return "STM";
- }
-
- @NotNull
- @Override
- public Integer getAgencyRouteType() {
- return MAgency.ROUTE_TYPE_SUBWAY;
- }
-
- @Nullable
- @Override
- public String getServiceIdCleanupRegex() {
- return "(^\\d{2}[A-Z]-)"; // starts with YY + 1 Letter + dash // 26J-Globaux-01-I
- }
-
- @Override
- public boolean defaultRouteIdEnabled() {
- return true;
- }
-
- @Override
- public boolean useRouteShortNameForRouteId() {
- return false; // route ID == default route short name
- }
-
- @NotNull
- @Override
- public String getRouteShortName(@NotNull GRoute gRoute) {
- return EMPTY; // no route short name
- }
-
- @Override
- public boolean defaultRouteLongNameEnabled() {
- return false; // route ID used to target Twitter news ...
- }
-
- @NotNull
- @Override
- public String cleanRouteShortName(@NotNull String routeShortName) {
- return super.cleanRouteShortName(routeShortName);
- }
-
- private static final Cleaner FIX_BLEU = new Cleaner("(BLEU)", "BLEUE");
- private static final Cleaner STARTS_WITH_LINES_ = new Cleaner("(^(line|ligne) (\\d+) - )", "$3: ", true);
-
- @NotNull
- @Override
- public String cleanRouteLongName(@NotNull String routeLongName) {
- routeLongName = FIX_BLEU.clean(routeLongName);
- routeLongName = STARTS_WITH_LINES_.clean(routeLongName);
- return super.cleanRouteLongName(routeLongName);
- }
-
- @NotNull
- @Override
- public String getStopCode(@NotNull GStop gStop) {
- return EMPTY; // no stop code
- }
-
- @Override
- public boolean defaultAgencyColorEnabled() {
- return true;
- }
-
- @Nullable
- @Override
- public String fixColor(@Nullable String color) {
- if (color != null && !color.isEmpty()) {
- return color; // keep provided colors
- }
- return super.fixColor(color);
- }
-
- private static final Pattern UDEM = CleanUtils.cleanWords("universit[é|e][-| ]de[-| ]montr[é|e]al");
- private static final String UDEM_REPLACEMENT = CleanUtils.cleanWordsReplacement("UdeM");
-
- private static final Pattern U_DE_S = CleanUtils.cleanWords("universit[e|é][-| ]de[-| ]sherbrooke");
- private static final String U_DE_S_REPLACEMENT = CleanUtils.cleanWordsReplacement("UdeS");
-
- private static final Cleaner ENDS_WITH_ZONE = new Cleaner(
- group(any(WHITESPACE_CAR) + "-" + any(WHITESPACE_CAR) + "zone [a-z]+$"),
- true
- );
-
- @NotNull
- @Override
- public String cleanTripHeadsign(@NotNull String tripHeadsign) {
- tripHeadsign = CleanUtils.toLowerCaseUpperCaseWords(Locale.FRENCH, tripHeadsign, getIgnoreWords());
- tripHeadsign = ENDS_WITH_ZONE.clean(tripHeadsign);
- tripHeadsign = U_DE_S.matcher(tripHeadsign).replaceAll(U_DE_S_REPLACEMENT);
- tripHeadsign = STATION_.matcher(tripHeadsign).replaceAll(SPACE);
- tripHeadsign = CleanUtils.SAINT.matcher(tripHeadsign).replaceAll(CleanUtils.SAINT_REPLACEMENT);
- tripHeadsign = CleanUtils.cleanStreetTypesFRCA(tripHeadsign);
- return CleanUtils.cleanLabel(getFirstLanguageNN(), tripHeadsign);
- }
-
- @NotNull
- private String[] getIgnoreWords() {
- return new String[]{
- "UQAM", "UQAM", "OACI", "IX"
- };
- }
-
- @Override
- public boolean directionFinderEnabled() {
- return true; // required to merge trips into 1 direction
- }
-
- private static final Pattern STATION_ = Pattern.compile("(station )", Pattern.CASE_INSENSITIVE);
- private static final Pattern ENDS_WITH_DIGITS = Pattern.compile("( \\d+$)", Pattern.CASE_INSENSITIVE);
-
- @NotNull
- @Override
- public String cleanStopName(@NotNull String stopName) {
- stopName = CleanUtils.toLowerCaseUpperCaseWords(Locale.FRENCH, stopName, getIgnoreWords());
- stopName = ENDS_WITH_DIGITS.matcher(stopName).replaceAll(EMPTY);
- stopName = UDEM.matcher(stopName).replaceAll(UDEM_REPLACEMENT);
- stopName = U_DE_S.matcher(stopName).replaceAll(U_DE_S_REPLACEMENT);
- stopName = STATION_.matcher(stopName).replaceAll(SPACE);
- stopName = CleanUtils.SAINT.matcher(stopName).replaceAll(CleanUtils.SAINT_REPLACEMENT);
- stopName = CleanUtils.cleanStreetTypesFRCA(stopName);
- return super.cleanStopName(stopName);
- }
-}
diff --git a/app-android/.gitignore b/app-android/.gitignore
index f57259e5..e3db34ef 100644
--- a/app-android/.gitignore
+++ b/app-android/.gitignore
@@ -76,6 +76,7 @@ proguard/
/src/main/res/values/module_app_icon_color.xml
/src/main/res/values/parent_agency_values.xml
/src/main/res/values-fr/bike_station_strings.xml
+/src/main/res/values-fr/gtfs_rts_strings.xml
/src/main/res/values-fr/strings.xml
# trigger change 1
diff --git a/app-android/src/main/play/listings/en-US/full-description.txt b/app-android/src/main/play/listings/en-US/full-description.txt
deleted file mode 100644
index d3abf0c3..00000000
--- a/app-android/src/main/play/listings/en-US/full-description.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-This app adds Montreal STM subways information to MonTransit.
-
-This app provides the planned schedule as well as real time service updates from www.stm.info and the latest news from www.stm.info and @stminfo, @stm_Orange, @stm_Verte, @stm_Bleue, @stm_Jaune and @stm_nouvelles on Twitter.
-
-STM subways serve Montreal, Laval and Longueuil in Quebec, Canada.
-
-Once this application is installed, the MonTransit app will display subways information (schedule...).
-
-This application only has a temporary icon: download the MonTransit app (free) in the "More ..." section bellow or by following this Google Play link https://bit.ly/MonTransitPlay
-
-You can install this application on the SD card but it is not recommended.
-
-The information comes from the GTFS file provided by the Société de Transport de Montréal.
-https://www.stm.info/en/about/developers
-
-This application is free and open-source:
-https://github.com/mtransitapps/ca-montreal-stm-subway-android
-
-This application is not related with the Société de Transport de Montréal.
-
-Permissions:
-- Other: required to load subways service updates and read the news from www.stm.info and Twitter.
diff --git a/app-android/src/main/play/listings/en-US/short-description.txt b/app-android/src/main/play/listings/en-US/short-description.txt
deleted file mode 100644
index 682bc7e7..00000000
--- a/app-android/src/main/play/listings/en-US/short-description.txt
+++ /dev/null
@@ -1 +0,0 @@
-Montreal STM subways for MonTransit. Schedule. Real-Time Service Updates. News.
diff --git a/app-android/src/main/play/listings/en-US/title.txt b/app-android/src/main/play/listings/en-US/title.txt
index 066576d2..c6fb6089 100644
--- a/app-android/src/main/play/listings/en-US/title.txt
+++ b/app-android/src/main/play/listings/en-US/title.txt
@@ -1 +1 @@
-Montreal Subway - MonTransit
+Montreal subways - MonTransit
diff --git a/app-android/src/main/play/listings/fr-FR/full-description.txt b/app-android/src/main/play/listings/fr-FR/full-description.txt
deleted file mode 100644
index b8f6fdc0..00000000
--- a/app-android/src/main/play/listings/fr-FR/full-description.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Cette app ajoute les informations des métros STM de Montréal à MonTransit.
-
-Cette app fournie les horaires planifiées ainsi que l'état de service en temps réel de www.stm.info et les dernières nouvelles de www.stm.info et @stminfo, @stm_Orange, @stm_Verte, @stm_Bleue, @stm_Jaune et @stm_nouvelles sur Twitter.
-
-Les métros de la STM desservent Montréal, Laval et Longueuil au Québec, Canada.
-
-Une fois cette application installée, l'application MonTransit affichera les informations des métros (horaires ...).
-
-Cette application a seulement une icône temporaire : télécharger l'app MonTransit (gratuit) dans la section "Autres ..." ci-dessous ou en cliquant sur ce lien Google Play https://bit.ly/MonTransitPlay
-
-Vous pouvez installer cette application sur la carte SD mais ce n'est pas recommandé.
-
-Ces horaires sont générées à partir du fichier GTFS fourni par la Société de Transport de Montréal.
-https://www.stm.info/fr/a-propos/developpeurs
-
-Cette application est gratuite et open-source :
-https://github.com/mtransitapps/ca-montreal-stm-subway-android
-
-Cette application n'est pas associée à la Société de Transport de Montréal.
-
-Autorisations :
-- Autres : requis pour le chargement de l'état du service métro et pour lire les nouvelles de www.stm.info et Twitter.
diff --git a/app-android/src/main/play/listings/fr-FR/short-description.txt b/app-android/src/main/play/listings/fr-FR/short-description.txt
deleted file mode 100644
index 2ac3dd0c..00000000
--- a/app-android/src/main/play/listings/fr-FR/short-description.txt
+++ /dev/null
@@ -1 +0,0 @@
-Métros STM de Montréal pour MonTransit. Horaires. État de service. Nouvelles.
diff --git a/app-android/src/main/play/listings/fr-FR/title.txt b/app-android/src/main/play/listings/fr-FR/title.txt
deleted file mode 100644
index 152b9bec..00000000
--- a/app-android/src/main/play/listings/fr-FR/title.txt
+++ /dev/null
@@ -1 +0,0 @@
-Métro STM Montréal - MonTrans…
diff --git a/app-android/src/main/res-current/raw/current_gtfs_rts_stops b/app-android/src/main/res-current/raw/current_gtfs_rts_stops
index d08b0132..9f7fbbe8 100644
--- a/app-android/src/main/res-current/raw/current_gtfs_rts_stops
+++ b/app-android/src/main/res-current/raw/current_gtfs_rts_stops
@@ -8,7 +8,7 @@
9,'','Mont-Royal',45.52482,-73.58171,1,57
10,'','Sherbrooke',45.51906,-73.56922,2,1567
12,'','Champ-De-Mars',45.51006,-73.55645,1,1569
-13,'','Pl-D''Armes',45.50635,-73.55955,1,1570
+13,'','Place-D''Armes',45.50635,-73.55955,1,1570
14,'','Square-Victoria–OACI',45.50191,-73.56310,2,1571
15,'','Bonaventure',45.49813,-73.56729,1,1572
16,'','Lucien-L''Allier',45.49477,-73.57110,2,1573
@@ -25,8 +25,8 @@
27,'','Frontenac',45.53353,-73.55222,2,1605
28,'','Papineau',45.52412,-73.55296,2,1606
29,'','Beaudry',45.51949,-73.55731,2,1607
-30,'','St-Laurent',45.51108,-73.56496,2,1629
-31,'','Pl-Des-Arts',45.50822,-73.56843,1,1630
+30,'','Saint-Laurent',45.51108,-73.56496,2,1629
+31,'','Place-Des-Arts',45.50822,-73.56843,1,1630
32,'','McGill',45.50410,-73.57166,1,1631
33,'','Peel',45.50088,-73.57472,2,1632
34,'','Guy-Concordia',45.49557,-73.57931,2,1633
@@ -39,12 +39,12 @@
41,'','Jolicoeur',45.45703,-73.58195,1,1661
42,'','Monk',45.45116,-73.59324,2,1662
43,'','Angrignon',45.44647,-73.60312,1,1663
-44,'','Longueuil-UdeS -Zone B',45.52463,-73.52198,2,1664
+44,'','Longueuil-UdeS (Z:B)',45.52463,-73.52198,2,1664
45,'','Jean-Drapeau',45.51245,-73.53313,2,1665
-46,'','Pl-St-Henri',45.47732,-73.58663,2,1666
+46,'','Place-Saint-Henri',45.47732,-73.58663,2,1666
47,'','Vendôme',45.47391,-73.60376,1,1667
48,'','Villa-Maria',45.47975,-73.61976,1,1668
-50,'','Côte-Ste-Catherine',45.49234,-73.63310,2,1691
+50,'','Côte-Sainte-Catherine',45.49234,-73.63310,2,1691
51,'','Plamondon',45.49466,-73.63827,2,1692
52,'','Namur',45.49469,-73.65278,2,1693
53,'','De La Savane',45.50009,-73.66158,2,1694
@@ -58,11 +58,11 @@
61,'','De Castelnau',45.53547,-73.61987,2,1723
62,'','Fabre',45.54674,-73.60815,2,1724
63,'','D''Iberville',45.55358,-73.60199,2,1725
-64,'','St-Michel',45.55957,-73.60002,2,1726
+64,'','Saint-Michel',45.55957,-73.60002,2,1726
65,'','Côte-Vertu',45.51425,-73.68275,1,1727
-66,'','Cartier -Zone B',45.56004,-73.68223,1,1728
-67,'','De La Concorde -Zone B',45.56069,-73.70939,1,1729
-68,'','Montmorency -Zone B',45.55846,-73.72242,1,1730
+66,'','Cartier (Z:B)',45.56004,-73.68223,1,1728
+67,'','De La Concorde (Z:B)',45.56069,-73.70939,1,1729
+68,'','Montmorency (Z:B)',45.55846,-73.72242,1,1730
9999052,'','Jean-Talon',45.53891,-73.61394,1,734350477
9999055,'','Jean-Talon',45.53920,-73.61506,1,734350480
9999111,'','Berri-UQAM',45.51532,-73.56108,1,734351313
diff --git a/app-android/src/main/res-current/raw/current_gtfs_rts_trips b/app-android/src/main/res-current/raw/current_gtfs_rts_trips
index 710de11c..e47f8886 100644
--- a/app-android/src/main/res-current/raw/current_gtfs_rts_trips
+++ b/app-android/src/main/res-current/raw/current_gtfs_rts_trips
@@ -4,5 +4,5 @@
200,0,'Montmorency',2
400,0,'Berri-UQAM',4
401,0,'Longueuil-UdeS',4
+500,0,'Saint-Michel',5
501,0,'Snowdon',5
-500,0,'St-Michel',5
diff --git a/app-android/src/main/res/values-fr/gtfs_rts_strings.xml b/app-android/src/main/res/values-fr/gtfs_rts_strings.xml
deleted file mode 100755
index bfba3cc8..00000000
--- a/app-android/src/main/res/values-fr/gtfs_rts_strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Métro STM
- STM
-
\ No newline at end of file
diff --git a/app-android/src/main/res/values-fr/strings.xml b/app-android/src/main/res/values-fr/strings.xml
deleted file mode 100755
index 8e62b7d2..00000000
--- a/app-android/src/main/res/values-fr/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- MonTransit STM Métro (Montréal)
- Données du métro de la STM à Montréal pour MonTransit.
-
\ No newline at end of file
diff --git a/app-android/src/main/res/values/gtfs_rts_strings.xml b/app-android/src/main/res/values/gtfs_rts_strings.xml
deleted file mode 100755
index a50c3b14..00000000
--- a/app-android/src/main/res/values/gtfs_rts_strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- STM Subway
- STM
-
\ No newline at end of file
diff --git a/app-android/src/main/res/values/strings.xml b/app-android/src/main/res/values/strings.xml
deleted file mode 100644
index 5652906c..00000000
--- a/app-android/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- MonTransit STM Subway (Montreal)
- Montreal STM Subway data for MonTransit.
-
\ No newline at end of file
diff --git a/commons b/commons
index 691e1daa..914ca673 160000
--- a/commons
+++ b/commons
@@ -1 +1 @@
-Subproject commit 691e1daa11d3e7b1903a4a710ea682bd82907849
+Subproject commit 914ca6731033726c84fc4afc03e4f4e3f14d6801
diff --git a/commons-android b/commons-android
index 32f71240..b41c133a 160000
--- a/commons-android
+++ b/commons-android
@@ -1 +1 @@
-Subproject commit 32f7124079bc40e6fc26bb9f81a126a6f7edb0c0
+Subproject commit b41c133aae614115fea5ab82f1e10cfedec664f6
diff --git a/commons-java b/commons-java
index fe1138c3..9fd8a062 160000
--- a/commons-java
+++ b/commons-java
@@ -1 +1 @@
-Subproject commit fe1138c3af3485ac673dfe3799dc7ce897c93b54
+Subproject commit 9fd8a0628e32068e75d103cb457e91ca32642d6c
diff --git a/config/agency_location b/config/agency_location
new file mode 100644
index 00000000..5e31604f
--- /dev/null
+++ b/config/agency_location
@@ -0,0 +1 @@
+Montréal
\ No newline at end of file
diff --git a/config/agency_name b/config/agency_name
new file mode 100644
index 00000000..c3d9f49f
--- /dev/null
+++ b/config/agency_name
@@ -0,0 +1,2 @@
+STM
+Société de Transport de Montréal
\ No newline at end of file
diff --git a/config/cities b/config/cities
new file mode 100644
index 00000000..820c7107
--- /dev/null
+++ b/config/cities
@@ -0,0 +1 @@
+Montreal, Laval, Longueuil
\ No newline at end of file
diff --git a/config/fr/source_url b/config/fr/source_url
new file mode 100644
index 00000000..59c31851
--- /dev/null
+++ b/config/fr/source_url
@@ -0,0 +1 @@
+https://www.stm.info/fr/a-propos/developpeurs
\ No newline at end of file
diff --git a/config/gtfs/agency.json b/config/gtfs/agency.json
new file mode 100644
index 00000000..0bc131a6
--- /dev/null
+++ b/config/gtfs/agency.json
@@ -0,0 +1,16 @@
+{
+ "target_route_type_id": 1,
+ "additional_languages": [
+ "en"
+ ],
+ "default_color": "009EE0",
+ "default_color_comment": "STM bleue",
+ "default_strings_cleaner_enabled": true,
+ "ignore_upper_case_words": [
+ "UQAM",
+ "OACI",
+ "IX"
+ ],
+ "service_id_cleanup_regex": "(^\\d{2}[A-Z]-)",
+ "service_id_cleanup_regex_comment": "starts with YY + 1 Letter + dash // 26J-Globaux-01-I"
+}
\ No newline at end of file
diff --git a/config/gtfs/route.json b/config/gtfs/route.json
new file mode 100644
index 00000000..082abea2
--- /dev/null
+++ b/config/gtfs/route.json
@@ -0,0 +1,99 @@
+{
+ "default_route_id_enabled": true,
+ "use_route_short_name_for_route_id": false,
+ "use_route_short_name_for_route_id_comment": "route ID == default route short name",
+ "route_short_name_cleaners_comment": "route short name in long name because of logo",
+ "route_short_name_cleaners": [
+ {
+ "regex": ".*"
+ }
+ ],
+ "route_to_short_name_configs": [
+ {
+ "route_id": "1",
+ "route_short_name": ""
+ },
+ {
+ "route_id": "2",
+ "route_short_name": ""
+ },
+ {
+ "route_id": "4",
+ "route_short_name": ""
+ },
+ {
+ "route_id": "5",
+ "route_short_name": ""
+ }
+ ],
+ "default_route_long_name_enabled": false,
+ "default_route_long_name_enabled_comment": "route ID used to target Twitter news ...",
+ "route_long_name_cleaners": [
+ {
+ "regex": "bleu",
+ "ignore_case": true,
+ "is_word": true,
+ "replacement": "Bleue"
+ },
+ {
+ "regex": "(^(line|ligne) (\\d+) - )",
+ "ignore_case": true,
+ "replacement": "$3: "
+ }
+ ],
+ "route_colors_ignored": [
+ "FFD900"
+ ],
+ "route_colors": [
+ {
+ "route_comment": "Jaune https://www.stm.info/en/info/networks/metro/ligne-4---jaune",
+ "route_id": "4",
+ "route_short_name": "4",
+ "color": "FFD900"
+ }
+ ],
+ "trip_headsign_cleaners": [
+ {
+ "regex": "universit[é|e][-| ]de[-| ]montr[é|e]al",
+ "ignore_case": true,
+ "is_word": true,
+ "replacement": "UdeM"
+ },
+ {
+ "regex": "universit[e|é][-| ]de[-| ]sherbrooke",
+ "ignore_case": true,
+ "is_word": true,
+ "replacement": "UdeS"
+ },
+ {
+ "regex": "\\s*\\-\\s*zone\\s+([a-z]+)",
+ "ignore_case": true
+ }
+ ],
+ "direction_finder_enabled": true,
+ "stop_code_cleaners_comment": "stop code not visible on official website",
+ "stop_code_cleaners": [
+ {
+ "regex": ".*"
+ }
+ ],
+ "stop_name_cleaners": [
+ {
+ "regex": "universit[é|e][-| ]de[-| ]montr[é|e]al",
+ "ignore_case": true,
+ "is_word": true,
+ "replacement": "UdeM"
+ },
+ {
+ "regex": "universit[e|é][-| ]de[-| ]sherbrooke",
+ "ignore_case": true,
+ "is_word": true,
+ "replacement": "UdeS"
+ },
+ {
+ "regex": "\\s*\\-\\s*zone\\s+([a-z]+)",
+ "ignore_case": true,
+ "replacement": "(Z:$1)"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/config/source_url b/config/source_url
new file mode 100644
index 00000000..4b2ef78e
--- /dev/null
+++ b/config/source_url
@@ -0,0 +1 @@
+https://www.stm.info/en/about/developers
\ No newline at end of file
diff --git a/config/state b/config/state
new file mode 100644
index 00000000..c54dbcca
--- /dev/null
+++ b/config/state
@@ -0,0 +1,2 @@
+QC
+Québec
\ No newline at end of file
diff --git a/parser b/parser
index 2f2cf1f4..74282b73 160000
--- a/parser
+++ b/parser
@@ -1 +1 @@
-Subproject commit 2f2cf1f462fee8b3809f31a22d3831c63c41c399
+Subproject commit 74282b730c413a62164d1982026e12eae532ec1a