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)