Skip to content

Commit

Permalink
GH-67 time parsing: handle leading whitespace
Browse files Browse the repository at this point in the history
  • Loading branch information
cheesasaurus committed May 30, 2020
1 parent d3ba838 commit dfbf4da
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Scrape/time.js
Expand Up @@ -18,7 +18,7 @@ function parseArrival(text, market) {

function parseArrivalEnglish(text) {
// e.g. "Jun 12, 2019 15:36:23:000"
let expr = /(\D+) (\d+), (\d+) (\d+):(\d+):(\d+):?(\d+)?/;
let expr = /(\S+) (\d+), (\d+) (\d+):(\d+):(\d+):?(\d+)?/;
let [, monthName, day, year, hours, minutes, seconds, millis] = text.match(expr);
let month = TwCheeseDate.monthNumber(monthName);
return TwCheeseDate.newServerDate(year, month, day, hours, minutes, seconds, millis || 0);
Expand All @@ -42,7 +42,7 @@ function parseArrivalPortuguese(text) {

function parseArrivalBrazilianPortuguese(text) {
// e.g. "mai 20, 2020 11:54:33:503"
let expr = /(\D+) (\d+), (\d+) (\d+):(\d+):(\d+):?(\d+)?/;
let expr = /(\S+) (\d+), (\d+) (\d+):(\d+):(\d+):?(\d+)?/;
let [, monthName, day, year, hours, minutes, seconds, millis] = text.match(expr);
let month = ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'].indexOf(monthName.toLowerCase());
return TwCheeseDate.newServerDate(year, month, day, hours, minutes, seconds, millis || 0);
Expand Down
112 changes: 112 additions & 0 deletions test/unit/Scrape/time/parseArrival.test.js
Expand Up @@ -33,6 +33,34 @@ describe('parseArrival', function() {
assertServerTime(expected, actual);
});

it('should handle en format with leading tab', function() {
let actual = parseArrival("\tJul 08, 2019 19:36:07:906", 'en');
let expected = {
year: 2019,
month: 6,
date: 8,
hours: 19,
minutes: 36,
seconds: 7,
millis: 906
};
assertServerTime(expected, actual);
});

it('should handle en format with leading spaces', function() {
let actual = parseArrival(" Jul 08, 2019 19:36:07:906", 'en');
let expected = {
year: 2019,
month: 6,
date: 8,
hours: 19,
minutes: 36,
seconds: 7,
millis: 906
};
assertServerTime(expected, actual);
});

it('should handle en format with millis disabled', function() {
let actual = parseArrival('Jul 08, 2019 19:36:07', 'en');
let expected = {
Expand Down Expand Up @@ -61,6 +89,34 @@ describe('parseArrival', function() {
assertServerTime(expected, actual);
});

it('should handle cz format with leading tab', function() {
let actual = parseArrival("\t10.07.19 04:43:15:967", 'cz');
let expected = {
year: 2019,
month: 6,
date: 10,
hours: 4,
minutes: 43,
seconds: 15,
millis: 967
};
assertServerTime(expected, actual);
});

it('should handle cz format with leading spaces', function() {
let actual = parseArrival(" 10.07.19 04:43:15:967", 'cz');
let expected = {
year: 2019,
month: 6,
date: 10,
hours: 4,
minutes: 43,
seconds: 15,
millis: 967
};
assertServerTime(expected, actual);
});

it('should handle cz format with millis disabled', function() {
let actual = parseArrival('10.07.19 04:43:15', 'cz');
let expected = {
Expand Down Expand Up @@ -89,6 +145,34 @@ describe('parseArrival', function() {
assertServerTime(expected, actual);
});

it('should handle pt format with leading tab', function() {
let actual = parseArrival("\t09/jul/2019 (20:03:15):895", 'pt');
let expected = {
year: 2019,
month: 6,
date: 9,
hours: 20,
minutes: 3,
seconds: 15,
millis: 895
};
assertServerTime(expected, actual);
});

it('should handle pt format with leading spaces', function() {
let actual = parseArrival(" 09/jul/2019 (20:03:15):895", 'pt');
let expected = {
year: 2019,
month: 6,
date: 9,
hours: 20,
minutes: 3,
seconds: 15,
millis: 895
};
assertServerTime(expected, actual);
});

it('should handle pt format with millis disabled', function() {
let actual = parseArrival('09/jul/2019 (20:03:15)', 'pt');
let expected = {
Expand Down Expand Up @@ -117,6 +201,34 @@ describe('parseArrival', function() {
assertServerTime(expected, actual);
});

it('should handle br format with leading tab', function() {
let actual = parseArrival("\tmai 20, 2020 11:54:33:503", 'br');
let expected = {
year: 2020,
month: 4,
date: 20,
hours: 11,
minutes: 54,
seconds: 33,
millis: 503
};
assertServerTime(expected, actual);
});

it('should handle br format with leading spaces', function() {
let actual = parseArrival(" mai 20, 2020 11:54:33:503", 'br');
let expected = {
year: 2020,
month: 4,
date: 20,
hours: 11,
minutes: 54,
seconds: 33,
millis: 503
};
assertServerTime(expected, actual);
});

it('should handle br format with millis disabled', function() {
let actual = parseArrival('mai 20, 2020 11:54:33', 'br');
let expected = {
Expand Down

0 comments on commit dfbf4da

Please sign in to comment.