parse Übergang

git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@144 0924bc21-9374-b0fa-ee44-9ff1593b38f0
This commit is contained in:
andreas.schildbach 2010-09-07 17:48:16 +00:00
parent 8b482b80f1
commit c9b139b653
2 changed files with 42 additions and 37 deletions

View file

@ -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("<p class=\"con\\w\">\n?(.+?)\n?</p>", Pattern.DOTALL);
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:<a href=\".*?input=(\\d+).*?\">(?:\\n?<strong>)?" // departureId
+ "(.+?)(?:</strong>\\n?)?</a>)?.*?" // departure
private static final Pattern P_CONNECTION_DETAILS_COARSE = Pattern.compile("<p class=\"con\\w\">\n(.+?)</p>", Pattern.DOTALL);
static final Pattern P_CONNECTION_DETAILS_FINE = Pattern.compile("(?:<a href=\".*?input=(\\d+).*?\">(?:\n<strong>)?" // departureId
+ "(.+?)(?:</strong>\n)?</a>)?.*?" // departure
+ "(?:" //
+ "ab (\\d+:\\d+)\n?" // departureTime
+ "ab (\\d+:\\d+)\n" // departureTime
+ "(Gl\\. \\d+)?.*?" // departurePosition
+ "<strong>\\s*(.*?)\\s*</strong>.*?" // line
+ "Ri\\. (.*?)[\n\\.]*<.*?" // destination
+ "an (\\d+:\\d+)\n?" // arrivalTime
+ "an (\\d+:\\d+)\n" // arrivalTime
+ "(Gl\\. \\d+)?.*?" // arrivalPosition
+ "<a href=\".*?input=(\\d+).*?\">\n?" // arrivalId
+ "<a href=\".*?input=(\\d+).*?\">\n" // arrivalId
+ "<strong>(.*?)</strong>" // arrival
+ "|" //
+ "(\\d+) Min\\.[\n\\s]?" // footway
+ "Fussweg.*?" //
+ "(\\d+) Min\\.\n" // footway
+ "(?:Fussweg|&#220;bergang)\n" //
+ "<br />\n" //
+ "(?:<a href=\"/Fahrinfo.*?input=(\\d+)\">\n" // arrivalId
+ "<strong>(.*?)</strong>|<a href=\"/Stadtplan.*?WGS84,(\\d+),(\\d+)&.*?\">([^<]*)</a>|<strong>([^<]*)</strong>).*?" // arrival
+ ").*?", Pattern.DOTALL);

View file

@ -31,57 +31,61 @@ public class VbbProviderTest
@Test
public void footwayWithLink()
{
assertFineConnectionDetails("<a href=\"/Stadtplan/index/mobil?language=d&amp;location=,ADR,WGS84,13426558,52536061&amp;label=10405 Bln Pankow, Christburger Str. 123\">10405 Bln Pankow, Christburger Str. 123</a>\n"
+ "<br />\n"
+ "10 Min.\n"
+ "Fussweg\n"
+ "<br />\n"
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=c6.0318411.1278336553&amp;rt=0&amp;input=9110017\">\n"
assertFineConnectionDetails("" //
+ "<a href=\"/Stadtplan/index/mobil?language=d&amp;location=,ADR,WGS84,13426558,52536061&amp;label=10405 Bln Pankow, Christburger Str. 123\">10405 Bln Pankow, Christburger Str. 123</a>\n"
+ "<br />\n" //
+ "10 Min.\n" //
+ "Fussweg\n" //
+ "<br />\n" //
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=c6.0318411.1278336553&amp;rt=0&amp;input=9110017\">\n" //
+ "<strong>Prenzlauer Allee/Danziger Str. (Berlin)</strong>\n" //
+ "</a>\n" //
+ "<br />");
+ "<br />\n");
}
@Test
public void footwayWithoutLink()
{
assertFineConnectionDetails("18 Min.\n" //
assertFineConnectionDetails("" //
+ "18 Min.\n" //
+ "Fussweg\n" //
+ "<br />\n" //
+ "<strong>Berlin, Deutschlandhalle</strong>\n" //
+ "<br/>Messedamm 26; 14055 Berlin\n" //
+ "<br />"); //
+ "<br />\n");
}
@Test
public void footwayStripped()
public void footwayUebergang()
{
assertFineConnectionDetails("6 Min. " //
+ "Fussweg" //
+ "<br />" //
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=00.072331.1278280801&amp;rt=0&amp;input=9024106\">" //
+ "<strong>S Messe Nord/ICC (Berlin)</strong> "//
+ "</a>" //
+ "<br />");
assertFineConnectionDetails("" //
+ "17 Min.\n" //
+ "&#220;bergang\n" //
+ "<br />\n" //
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=fx.0101111.1283848693&amp;rt=0&amp;input=9025321\">\n" //
+ "<strong>S Olympiastadion (Berlin)</strong>\n" //
+ "</a>\n" //
+ "<br />\n");
}
@Test
public void trip()
{
assertFineConnectionDetails("<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=er.042611.1278315324&amp;rt=0&amp;input=9275402\">\n"
+ "<strong>Brandenburg, Frhr.-v.-Th&#252;ngen-Str.</strong>\n"
+ "</a>\n"
+ "<br />\n"
+ "ab 09:35\n"
+ "<br/><strong>BusH/528</strong>\n"
+ "Ri. Brandenburg, Potsdamer Str.\n"
+ "<br />\n"
+ "an 09:41\n"
+ "<br />\n"
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=er.042611.1278315324&amp;rt=0&amp;input=9275104\">\n"
assertFineConnectionDetails("" //
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=er.042611.1278315324&amp;rt=0&amp;input=9275402\">\n" //
+ "<strong>Brandenburg, Frhr.-v.-Th&#252;ngen-Str.</strong>\n" //
+ "</a>\n" //
+ "<br />\n" //
+ "ab 09:35\n" //
+ "<br/><strong>BusH/528</strong>\n" //
+ "Ri. Brandenburg, Potsdamer Str.\n" //
+ "<br />\n" //
+ "an 09:41\n" //
+ "<br />\n" //
+ "<a href=\"/Fahrinfo/bin/stboard.bin/dox?ld=0.1&amp;n=2&amp;i=er.042611.1278315324&amp;rt=0&amp;input=9275104\">\n" //
+ "<strong>Brandenburg, Plauer Str.</strong>\n" //
+ "</a>\n" //
+ "<br />");
+ "<br />\n");
}
private void assertFineConnectionDetails(String s)