From 5d5393654029cb076c70620c90db8e682f399fc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Sun, 1 Mar 2026 15:09:34 -0500 Subject: [PATCH] Strings cleaner > remove Line/Station auto - #20 --- .../java/org/mtransit/commons/CleanUtils.java | 4 ++- .../org/mtransit/commons/StringsCleaner.kt | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/mtransit/commons/CleanUtils.java b/src/main/java/org/mtransit/commons/CleanUtils.java index d802faf..683ad3a 100644 --- a/src/main/java/org/mtransit/commons/CleanUtils.java +++ b/src/main/java/org/mtransit/commons/CleanUtils.java @@ -695,6 +695,8 @@ public static String cleanMergedID(@NotNull String mergedId) { return ID_MERGED.matcher(mergedId).replaceAll(ID_MERGED_REPLACEMENT); } + static final Pattern LINE = cleanWords("line"); + // http://www.semaphorecorp.com/cgi/abbrev.html private static final Pattern STREET = cleanWords("street"); private static final String STREET_REPLACEMENT = cleanWordsReplacement("St"); @@ -762,7 +764,7 @@ public static String cleanMergedID(@NotNull String mergedId) { private static final String VIEW_REPLACEMENT = cleanWordsReplacement("Vw"); private static final Pattern VILLAGE = cleanWords("village"); private static final String VILLAGE_REPLACEMENT = cleanWordsReplacement("Vlg"); - private static final Pattern STATION = cleanWords("station"); + static final Pattern STATION = cleanWords("station"); private static final String STATION_REPLACEMENT = cleanWordsReplacement("Sta"); private static final Pattern RANCH = cleanWords("ranch"); private static final String RANCH_REPLACEMENT = cleanWordsReplacement("Rnch"); diff --git a/src/main/java/org/mtransit/commons/StringsCleaner.kt b/src/main/java/org/mtransit/commons/StringsCleaner.kt index 2394741..b27aac6 100644 --- a/src/main/java/org/mtransit/commons/StringsCleaner.kt +++ b/src/main/java/org/mtransit/commons/StringsCleaner.kt @@ -1,5 +1,6 @@ package org.mtransit.commons +import org.mtransit.commons.StringUtils.EMPTY import java.util.Locale object StringsCleaner { @@ -9,11 +10,15 @@ object StringsCleaner { fun cleanRouteLongName( originalRouteLongName: String, languages: List?, + @Suppress("unused") routeType: Int, lowerUCStrings: Boolean = false, lowerUCWords: Boolean = false, vararg ignoredUCWords: String = emptyArray(), ): String { var routeLongName = originalRouteLongName + if (languages?.contains(Locale.ENGLISH) == true) { + routeLongName = CleanUtils.LINE.matcher(routeLongName).replaceAll(EMPTY) + } routeLongName = cleanString(routeLongName, languages, lowerUCStrings, lowerUCWords, *ignoredUCWords, short = false) return routeLongName } @@ -23,12 +28,22 @@ object StringsCleaner { fun cleanTripHeadsign( originalTripHeadsign: String, languages: List?, + routeType: Int, lowerUCStrings: Boolean = false, lowerUCWords: Boolean = false, vararg ignoredUCWords: String = emptyArray(), removeVia: Boolean = false, ): String { var tripHeadsign = originalTripHeadsign + if (languages?.contains(Locale.ENGLISH) == true) { + when (routeType) { + 1, // subway + 2, // train/rail + -> { + tripHeadsign = CleanUtils.STATION.matcher(tripHeadsign).replaceAll(EMPTY) + } + } + } if (languages?.contains(Locale.ENGLISH) == true) { tripHeadsign = if (removeVia) { CleanUtils.keepToAndRemoveVia(tripHeadsign) @@ -48,11 +63,22 @@ object StringsCleaner { fun cleanStopName( originalStopName: String, languages: List?, + routeType: Int, lowerUCStrings: Boolean = false, lowerUCWords: Boolean = false, vararg ignoredUCWords: String = emptyArray(), ): String { var stopName = originalStopName + if (languages?.contains(Locale.ENGLISH) == true) { + when (routeType) { + 1, // subway + 2, // train/rail + -> { + stopName = CleanUtils.STATION.matcher(stopName).replaceAll(EMPTY) + } + } + + } stopName = cleanString(stopName, languages, lowerUCStrings, lowerUCWords, *ignoredUCWords, short = true) return stopName }