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);
+ }
}