diff --git a/src/Scrape/time.js b/src/Scrape/time.js index 1f18badb..d947b970 100644 --- a/src/Scrape/time.js +++ b/src/Scrape/time.js @@ -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); @@ -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); diff --git a/test/unit/Scrape/time/parseArrival.test.js b/test/unit/Scrape/time/parseArrival.test.js index a80b6ad1..99229e0c 100644 --- a/test/unit/Scrape/time/parseArrival.test.js +++ b/test/unit/Scrape/time/parseArrival.test.js @@ -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 = { @@ -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 = { @@ -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 = { @@ -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 = {