Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions src/main/java/org/mtransit/parser/DefaultAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -192,23 +192,20 @@ public void start(@NotNull String[] args) {

@Override
public void addSupportedLanguage(@Nullable String supportedLanguage) {
if (supportedLanguage == null) {
return;
}
if (supportedLanguage == null) return;
final Locale supportedLocale = Locale.forLanguageTag(supportedLanguage);
if (this.supportedLanguages.contains(supportedLocale)) {
return;
}
if (this.supportedLanguages.contains(supportedLocale)) return;
this.supportedLanguages.add(supportedLocale);
}

@Nullable
@Override
public List<Locale> getSupportedLanguages() {
if (!this.supportedLanguages.isEmpty()) {
if (Configs.getAgencyConfig() != null) {
return Configs.getAgencyConfig().getAllLanguages(this.supportedLanguages);
} else {
return this.supportedLanguages;
}
return null; // no-op
}

@SuppressWarnings("WeakerAccess")
Expand Down Expand Up @@ -1276,15 +1273,20 @@ public String cleanStopHeadSign(@NotNull String stopHeadsign) {
public String getStopCode(@NotNull GStop gStop) {
final String prepend = getStopCodePrependIfMissing();
//noinspection DiscouragedApi
final String stopCode =
String stopCode =
Configs.getRouteConfig().getUseStopIdForStopCode() ? gStop.getStopId() :
gStop.getStopCode();
cleanStopCode(gStop.getStopCode());
if (prepend != null && !stopCode.startsWith(prepend)) {
return prepend + stopCode;
}
Comment thread
mmathieum marked this conversation as resolved.
return stopCode;
}

@NotNull
private String cleanStopCode(@NotNull String stopCode) {
return Configs.getRouteConfig().cleanStopCode(getFirstLanguageNN(), stopCode);
Comment thread
mmathieum marked this conversation as resolved.
}

@Deprecated
@Nullable
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.mtransit.parser.config.gtfs.data

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.util.Locale

@Serializable
data class AgencyConfig(
Expand All @@ -28,6 +29,8 @@ data class AgencyConfig(
val originalRouteTypeId: Int = targetRouteTypeId, // REQUIRED (default to target route type ID)
@SerialName("extended_target_route_type_id")
val extendedTargetRouteTypeId: Int? = null, // OPTIONAL
@SerialName("additional_languages")
val additionalLanguages: List<String> = emptyList(), // OPT-IN feature
// STRINGS
/**
* (Optional) Default string cleaner enabled/disabled (based on language/country/field)
Expand Down Expand Up @@ -58,4 +61,9 @@ data class AgencyConfig(
val serviceIdCleanMerged: Boolean = false, // OPT-IN feature
@SerialName("service_id_not_unique_allowed")
val serviceIdNotUniqueAllowed: Boolean = false, // OPT-IN feature
)
) {
fun getAllLanguages(supportedLanguages: List<Locale>?): List<Locale>? {
supportedLanguages?.takeIf { it.isNotEmpty() } ?: return null
return supportedLanguages + additionalLanguages.map { Locale.forLanguageTag(it) }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ data class RouteConfig(
val stopIdPreviousCharConfigs: List<IdCharToIdPartConfig> = emptyList(),
@SerialName("stop_original_id_to_stop_id_configs")
val stopOriginalIdToStopIdConfigs: List<StopOriginalIdToStopIdConfig> = emptyList(),
@SerialName("stop_code_cleaners")
val stopCodeCleaners: List<Cleaner> = emptyList(),
@SerialName("stop_code_prepend_if_missing")
val stopCodePrependIfMissing: String? = null, // optional
@SerialName("use_stop_id_hash_code")
Expand Down Expand Up @@ -290,6 +292,9 @@ data class RouteConfig(
fun cleanStopName(lang: Locale, stopName: String) =
cleanString(lang, stopName, this.stopNameCleaners)

fun cleanStopCode(lang: Locale, stopCode: String) =
cleanString(lang, stopCode, this.stopCodeCleaners)

fun cleanStopHeadsign(gRoute: GRoute, gTrip: GTrip, @Suppress("unused") gStopTime: GStopTime, stopHeadsign: String): String {
if (stopHeadsign.isEmpty()) return stopHeadsign
if (stopHeadsignRemoveTripHeadsign && stopHeadsign == gTrip.tripHeadsign) {
Expand Down