summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Lundblad <ml@update.uu.se>2021-02-15 22:40:52 +0100
committerMarcus Lundblad <ml@update.uu.se>2021-02-16 22:19:11 +0100
commitc03d188e7d90150093a70631ec2b83ff6808a220 (patch)
treeaea0e97601a0bd2e8dee763b29aa4789845ea7c4
parente5d14731a26eb685cb773debc7e60374f45f6d14 (diff)
downloadgnome-maps-wip/mlundblad/accept-extra-space-openinghours-interval.tar.gz
translations: Handle an extra space between time intervalswip/mlundblad/accept-extra-space-openinghours-interval
Handle OSM opening hour specifications of the form: Mo-Fr 09:00-12:00, 13:00-18:00 with an extra space between time intervals.
-rw-r--r--src/translations.js11
-rw-r--r--tests/translationsTest.js23
2 files changed, 31 insertions, 3 deletions
diff --git a/src/translations.js b/src/translations.js
index be16f0d4..417811e4 100644
--- a/src/translations.js
+++ b/src/translations.js
@@ -69,17 +69,22 @@ function translateOpeningHours(string) {
* 09:00-12:00,13:00-19:00
* Mo-Fr 10:00-19:00
* Mo-We,Fr 10:00-12:00,13:00-17:00
+ * Mo-We,Fr 10:00-12:00, 13:00-17:00
*/
function _translateOpeningHoursPart(string) {
let splitString = string.split(/\s+/);
+ let len = splitString.length;
- if (splitString.length === 1) {
+ if (len === 1) {
return [_translateOpeningHoursTimeIntervalList(string.trim())];
- } else if (splitString.length === 2) {
+ } else if (len === 2 || len === 3) {
let dayIntervalSpec =
_translateOpeningHoursDayIntervalList(splitString[0].trim());
+ let intervalString =
+ len === 2 ? splitString[1].trim() :
+ splitString[1].trim() + splitString[2].trim();
let timeIntervalSpec =
- _translateOpeningHoursTimeIntervalList(splitString[1].trim());
+ _translateOpeningHoursTimeIntervalList(intervalString);
return [Utils.firstToLocaleUpperCase(dayIntervalSpec),
timeIntervalSpec];
diff --git a/tests/translationsTest.js b/tests/translationsTest.js
index ac662f7f..ce7d7009 100644
--- a/tests/translationsTest.js
+++ b/tests/translationsTest.js
@@ -48,6 +48,11 @@ const SAMPLE8 = 'Mo-Fr 09:00-12:00,13:00-18:00; Sa,Su 10:00-14:00; PH off';
// sample with school holidays
const SAMPLE9 = 'Mo-Fr 09:00-12:00,13:00-18:00; Sa,Su 10:00-14:00; SH off';
+/* sample with 2 components, one day-range, one two day set,
+ * one with 2 time intervals, with an extra space between time components
+ */
+const SAMPLE10 = 'Mo-Fr 09:00-12:00, 13:00-18:00; Sa,Su 10:00-14:00';
+
pkg.initGettext();
pkg.initFormat();
@@ -140,6 +145,15 @@ function translateOpeningHoursTest() {
JsUnit.assertEquals('School holidays', translated[2][0]);
JsUnit.assertEquals('not open', translated[2][1]);
+ translated = Translations.translateOpeningHours(SAMPLE10);
+ JsUnit.assertEquals(2, translated.length);
+ JsUnit.assertEquals(2, translated[0].length);
+ JsUnit.assertEquals('Mon-Fri', translated[0][0]);
+ JsUnit.assertEquals('09:00-12:00, 13:00-18:00', translated[0][1]);
+ JsUnit.assertEquals(2, translated[1].length);
+ JsUnit.assertEquals('Sat,Sun', translated[1][0]);
+ JsUnit.assertEquals('10:00-14:00', translated[1][1]);
+
// mock to always use 12-hour clock format
Time._is12Hour = function () { return true; };
@@ -223,4 +237,13 @@ function translateOpeningHoursTest() {
JsUnit.assertEquals(2, translated[2].length);
JsUnit.assertEquals('School holidays', translated[2][0]);
JsUnit.assertEquals('not open', translated[2][1]);
+
+ translated = Translations.translateOpeningHours(SAMPLE10);
+ JsUnit.assertEquals(2, translated.length);
+ JsUnit.assertEquals(2, translated[0].length);
+ JsUnit.assertEquals('Mon-Fri', translated[0][0]);
+ JsUnit.assertEquals('9:00 AM-12:00 PM, 1:00 PM-6:00 PM', translated[0][1]);
+ JsUnit.assertEquals(2, translated[1].length);
+ JsUnit.assertEquals('Sat,Sun', translated[1][0]);
+ JsUnit.assertEquals('10:00 AM-2:00 PM', translated[1][1]);
}