diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java
index 5c731105..3588a737 100644
--- a/src/de/schildbach/pte/VbbProvider.java
+++ b/src/de/schildbach/pte/VbbProvider.java
@@ -356,21 +356,22 @@ public final class VbbProvider implements NetworkProvider
}
private static final Pattern P_CONNECTION_DETAILS_HEAD = Pattern.compile(".*(?:Datum|Abfahrt): (\\d\\d\\.\\d\\d\\.\\d\\d).*", Pattern.DOTALL);
- private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("
\n?(.+?)\n?
", Pattern.DOTALL);
- static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:(?:\\n?)?" // departureId
- + "(.+?)(?:\\n?)?)?.*?" // departure
+ private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("\n(.+?)
", Pattern.DOTALL);
+ static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:(?:\n)?" // departureId
+ + "(.+?)(?:\n)?)?.*?" // departure
+ "(?:" //
- + "ab (\\d+:\\d+)\n?" // departureTime
+ + "ab (\\d+:\\d+)\n" // departureTime
+ "(Gl\\. \\d+)?.*?" // departurePosition
+ "\\s*(.*?)\\s*.*?" // line
+ "Ri\\. (.*?)[\n\\.]*<.*?" // destination
- + "an (\\d+:\\d+)\n?" // arrivalTime
+ + "an (\\d+:\\d+)\n" // arrivalTime
+ "(Gl\\. \\d+)?.*?" // arrivalPosition
- + "\n?" // arrivalId
+ + "\n" // arrivalId
+ "(.*?)" // arrival
+ "|" //
- + "(\\d+) Min\\.[\n\\s]?" // footway
- + "Fussweg.*?" //
+ + "(\\d+) Min\\.\n" // footway
+ + "(?:Fussweg|Übergang)\n" //
+ + "
\n" //
+ "(?:\n" // arrivalId
+ "(.*?)|([^<]*)|([^<]*)).*?" // arrival
+ ").*?", Pattern.DOTALL);
diff --git a/test/de/schildbach/pte/VbbProviderTest.java b/test/de/schildbach/pte/VbbProviderTest.java
index 135b84bf..8e2d3ffb 100644
--- a/test/de/schildbach/pte/VbbProviderTest.java
+++ b/test/de/schildbach/pte/VbbProviderTest.java
@@ -31,57 +31,61 @@ public class VbbProviderTest
@Test
public void footwayWithLink()
{
- assertFineConnectionDetails("10405 Bln Pankow, Christburger Str. 123\n"
- + "
\n"
- + "10 Min.\n"
- + "Fussweg\n"
- + "
\n"
- + "\n"
+ assertFineConnectionDetails("" //
+ + "10405 Bln Pankow, Christburger Str. 123\n"
+ + "
\n" //
+ + "10 Min.\n" //
+ + "Fussweg\n" //
+ + "
\n" //
+ + "\n" //
+ "Prenzlauer Allee/Danziger Str. (Berlin)\n" //
+ "\n" //
- + "
");
+ + "
\n");
}
@Test
public void footwayWithoutLink()
{
- assertFineConnectionDetails("18 Min.\n" //
+ assertFineConnectionDetails("" //
+ + "18 Min.\n" //
+ "Fussweg\n" //
+ "
\n" //
+ "Berlin, Deutschlandhalle\n" //
+ "
Messedamm 26; 14055 Berlin\n" //
- + "
"); //
+ + "
\n");
}
@Test
- public void footwayStripped()
+ public void footwayUebergang()
{
- assertFineConnectionDetails("6 Min. " //
- + "Fussweg" //
- + "
" //
- + "" //
- + "S Messe Nord/ICC (Berlin) "//
- + "" //
- + "
");
+ assertFineConnectionDetails("" //
+ + "17 Min.\n" //
+ + "Übergang\n" //
+ + "
\n" //
+ + "\n" //
+ + "S Olympiastadion (Berlin)\n" //
+ + "\n" //
+ + "
\n");
}
@Test
public void trip()
{
- assertFineConnectionDetails("\n"
- + "Brandenburg, Frhr.-v.-Thüngen-Str.\n"
- + "\n"
- + "
\n"
- + "ab 09:35\n"
- + "
BusH/528\n"
- + "Ri. Brandenburg, Potsdamer Str.\n"
- + "
\n"
- + "an 09:41\n"
- + "
\n"
- + "\n"
+ assertFineConnectionDetails("" //
+ + "\n" //
+ + "Brandenburg, Frhr.-v.-Thüngen-Str.\n" //
+ + "\n" //
+ + "
\n" //
+ + "ab 09:35\n" //
+ + "
BusH/528\n" //
+ + "Ri. Brandenburg, Potsdamer Str.\n" //
+ + "
\n" //
+ + "an 09:41\n" //
+ + "
\n" //
+ + "\n" //
+ "Brandenburg, Plauer Str.\n" //
+ "\n" //
- + "
");
+ + "
\n");
}
private void assertFineConnectionDetails(String s)