From 3209c94622ea4f498550f5794dcf9c54c5f93c6b Mon Sep 17 00:00:00 2001 From: j433866 Date: Mon, 21 Jan 2019 12:50:30 +0000 Subject: [PATCH] Fix conversion breaking when compass directions are used as delimiters --- src/core/lib/ConvertCoordinates.mjs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/core/lib/ConvertCoordinates.mjs b/src/core/lib/ConvertCoordinates.mjs index ad592b74..af13882d 100644 --- a/src/core/lib/ConvertCoordinates.mjs +++ b/src/core/lib/ConvertCoordinates.mjs @@ -72,7 +72,7 @@ export function convertCoordinates (input, inFormat, inDelim, outFormat, outDeli if (inDelim === null) { throw new OperationError("Unable to detect the input delimiter automatically."); } - } else { + } else if (!inDelim.includes("Direction")) { // Convert the delimiter argument value to the actual character inDelim = realDelim(inDelim); } @@ -89,7 +89,16 @@ export function convertCoordinates (input, inFormat, inDelim, outFormat, outDeli outDelim = realDelim(outDelim); if (!NO_CHANGE.includes(inFormat)) { - split = input.split(inDelim); + if (inDelim.includes("Direction")) { + // Split on directions + split = input.split(/[NnEeSsWw]/g); + if (split[0] === "") { + // Remove first element if direction preceding + split = split.slice(1); + } + } else { + split = input.split(inDelim); + } // Replace any co-ordinate symbols with spaces so we can split on them later for (let i = 0; i < split.length; i++) { split[i] = split[i].replace(/[°˝´'"]/g, " "); @@ -196,7 +205,7 @@ export function convertCoordinates (input, inFormat, inDelim, outFormat, outDeli if (inFormat.includes("Degrees")) { // If the input string contains directions, we need to check if they're S or W. // If either of the directions are, we should make the decimal value negative - const dirs = input.match(/[NnEeSsWw]/g); + const dirs = input.toUpperCase().match(/[NESW]/g); if (dirs && dirs.length >= 1) { // Make positive lat/lon values with S/W directions into negative values if (dirs[0] === "S" || dirs[0] === "W" && latlon.lat > 0) {