From cb71a17545a8ab972e79ed172e7dd82f23866fce Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Sat, 6 Oct 2012 21:28:42 +0200 Subject: [PATCH] strip Bus, Tram and Trolley prefixes from Zurich lines --- .../src/de/schildbach/pte/ZvvProvider.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/enabler/src/de/schildbach/pte/ZvvProvider.java b/enabler/src/de/schildbach/pte/ZvvProvider.java index 956f5587..75601c38 100644 --- a/enabler/src/de/schildbach/pte/ZvvProvider.java +++ b/enabler/src/de/schildbach/pte/ZvvProvider.java @@ -217,12 +217,18 @@ public class ZvvProvider extends AbstractHafasProvider final String number = m.group(1).replaceAll("\\s+", " "); final String type = m.group(2); + if ("Bus".equals(type)) + return newLine('B', stripPrefix(number, "Bus")); if ("Bus-NF".equals(type)) - return newLine('B', number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('B', stripPrefix(number, "Bus", "Bus-NF"), Line.Attr.WHEEL_CHAIR_ACCESS); + if ("Tro".equals(type) || "Trolley".equals(type)) + return newLine('B', stripPrefix(number, "Tro")); if ("Tro-NF".equals(type)) - return newLine('B', number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('B', stripPrefix(number, "Tro", "Tro-NF"), Line.Attr.WHEEL_CHAIR_ACCESS); + if ("Trm".equals(type)) + return newLine('T', stripPrefix(number, "Trm")); if ("Trm-NF".equals(type)) - return newLine('T', number, Line.Attr.WHEEL_CHAIR_ACCESS); + return newLine('T', stripPrefix(number, "Trm", "Trm-NF"), Line.Attr.WHEEL_CHAIR_ACCESS); if (type.length() > 0) { @@ -237,6 +243,19 @@ public class ZvvProvider extends AbstractHafasProvider throw new IllegalStateException("cannot normalize line#type " + lineAndType); } + private String stripPrefix(final String str, final String... prefixes) + { + for (final String prefix : prefixes) + { + if (str.equals(prefix)) + return ""; + if (str.startsWith(prefix + ' ')) + return str.substring(prefix.length() + 1); + } + + return str; + } + @Override protected char normalizeType(final String type) {