diff --git a/src/de/schildbach/pte/BahnProvider.java b/src/de/schildbach/pte/BahnProvider.java index 6f1d31db..64648d6c 100644 --- a/src/de/schildbach/pte/BahnProvider.java +++ b/src/de/schildbach/pte/BahnProvider.java @@ -442,12 +442,12 @@ public final class BahnProvider implements NetworkProvider + "Abfahrt (\\d+:\\d+)\\n?Uhr, (\\d+\\.\\d+\\.\\d+).*?" // currentTime , Pattern.DOTALL); private static final Pattern P_DEPARTURES_COARSE = Pattern.compile("
\n(.+?)
", Pattern.DOTALL); - private static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?" // + static final Pattern P_DEPARTURES_FINE = Pattern.compile(".*?" // + "(.*?).*?" // line + ">>\n\\s*(.+?)\\s*\n
\n" // destination + "(\\d{1,2}:\\d{2})" // time + "(?: ca. ([+-]?\\d+))?" // delay - + "(?:, (Gl\\. " + ParserUtils.P_PLATFORM + "))?" // position + + "(?:(?:, )?(Gl\\. " + ParserUtils.P_PLATFORM + "))?" // position , Pattern.DOTALL); private static final Pattern P_DEPARTURES_URI_STATION_ID = Pattern.compile("input=(\\d+)"); @@ -770,6 +770,8 @@ public final class BahnProvider implements NetworkProvider return "RZr" + number; if (type.equals("N")) // Frankreich, Tours, OrlĂ©ans return "RN" + number; + if (type.equals("VE")) // Lutherstadt Wittenberg + return "RVE" + number; if (type.equals("S")) return "SS" + number; diff --git a/test/de/schildbach/pte/BahnProviderTest.java b/test/de/schildbach/pte/BahnProviderTest.java index 93708db3..20f65ecb 100644 --- a/test/de/schildbach/pte/BahnProviderTest.java +++ b/test/de/schildbach/pte/BahnProviderTest.java @@ -29,7 +29,7 @@ import org.junit.Test; public class BahnProviderTest { @Test - public void uebergang() + public void connectionUebergang() { assertFineConnectionDetails("Berlin Hbf
\n" // + "Übergang\n" // @@ -37,10 +37,29 @@ public class BahnProviderTest + "Berlin-Lichtenberg
"); } + @Test + public void departureWithPlatform() + { + assertFineDepartures("\n" // + + "S 1\n" // + + "\n" // + + ">>\n" // + + "Gänserndorf\n" // + + "
\n" // + + "10:42Gl. 1"); + } + private void assertFineConnectionDetails(String s) { Matcher m = BahnProvider.P_CONNECTION_DETAILS_FINE.matcher(s); assertTrue(m.matches()); // ParserUtils.printGroups(m); } + + private void assertFineDepartures(String s) + { + Matcher m = BahnProvider.P_DEPARTURES_FINE.matcher(s); + assertTrue(m.matches()); + // ParserUtils.printGroups(m); + } }