Skip to content

Commit

Permalink
Fix conversion breaking when compass directions are used as delimiters
Browse files Browse the repository at this point in the history
  • Loading branch information
j433866 committed Jan 21, 2019
1 parent 6f8a5ea commit 3209c94
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions src/core/lib/ConvertCoordinates.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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, " ");
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 3209c94

Please sign in to comment.