diff --git a/src/main/java/org/mtransit/parser/DefaultAgencyTools.java b/src/main/java/org/mtransit/parser/DefaultAgencyTools.java index 8cc6af1..0c0640e 100644 --- a/src/main/java/org/mtransit/parser/DefaultAgencyTools.java +++ b/src/main/java/org/mtransit/parser/DefaultAgencyTools.java @@ -893,7 +893,7 @@ public boolean directionFinderEnabled(long routeId, @NotNull GRoute gRoute) { @Override public boolean allowNonDescriptiveHeadSigns(long routeId) { - return false; // this is bad, some transit agency data can NOT be fixed :( + return Configs.getRouteConfig().allowNonDescriptiveHeadSigns(getTodayDateInt(), routeId); // this is bad, some transit agency data can NOT be fixed :( } @Override diff --git a/src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt b/src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt index c7bdd72..88fafed 100644 --- a/src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt +++ b/src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt @@ -82,6 +82,10 @@ data class RouteConfig( val directionSplitterEnabled: Boolean = false, // OPT-IN feature @SerialName("direction_finder_enabled") val directionFinderEnabled: Boolean = false, // OPT-IN feature + @SerialName("allow_non_descriptive_head_signs") + val allowNonDescriptiveHeadSigns: Map = emptyMap(), // OPT-IN feature + @SerialName("allow_non_descriptive_head_signs_until") + val allowNonDescriptiveHeadSignsUntil: Map = emptyMap(), // OPT-IN feature // STOP @SerialName("stop_id_cleanup_regex") val stopIdCleanupRegex: String? = null, // optional @@ -339,5 +343,11 @@ data class RouteConfig( } fun allowIgnoreInvalidStopTimes(todayDate: Int) = - allowInvalidStopTimes || (allowInvalidStopTimesUntil?.toIntOrNull()?.let { todayDate <= it } ?: false) + allowInvalidStopTimes || isAllowedUntil(allowInvalidStopTimesUntil, todayDate) + + fun allowNonDescriptiveHeadSigns(todayDate: Int, mRouteId: Long) = + allowNonDescriptiveHeadSigns[mRouteId] == true || isAllowedUntil(allowNonDescriptiveHeadSignsUntil[mRouteId], todayDate) + + private fun isAllowedUntil(dateStr: String?, todayDate: Int) = + dateStr?.toIntOrNull()?.let { todayDate <= it } ?: false }