geo-coordinates-parser 1.5.3 → 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/converter.js +17 -4
- package/failFormats.js +5 -0
- package/package.json +1 -1
- package/testFormats.json +14 -0
- package/testIndividual.js +1 -1
- package/testformats.js +28 -0
    
        package/converter.js
    CHANGED
    
    | @@ -78,7 +78,7 @@ function converter(coordsString, decimalPlaces) { | |
| 78 78 | 
             
                  }
         | 
| 79 79 |  | 
| 80 80 | 
             
                  if (match[6]){
         | 
| 81 | 
            -
                    ddLat += match[6]/3600;
         | 
| 81 | 
            +
                    ddLat += match[6].replace(',', '.')/3600;
         | 
| 82 82 | 
             
                  }
         | 
| 83 83 |  | 
| 84 84 | 
             
                  if (parseInt(match[2]) < 0) {
         | 
| @@ -92,7 +92,7 @@ function converter(coordsString, decimalPlaces) { | |
| 92 92 | 
             
                  }
         | 
| 93 93 |  | 
| 94 94 | 
             
                  if (match[13]) {
         | 
| 95 | 
            -
                    ddLng += match[13]/3600;
         | 
| 95 | 
            +
                    ddLng += match[13].replace(',', '.')/3600;
         | 
| 96 96 | 
             
                  }
         | 
| 97 97 |  | 
| 98 98 | 
             
                  if (parseInt(match[9]) < 0) {
         | 
| @@ -108,10 +108,18 @@ function converter(coordsString, decimalPlaces) { | |
| 108 108 | 
             
                    latdir = match[7];
         | 
| 109 109 | 
             
                    lngdir = match[14];
         | 
| 110 110 | 
             
                  }
         | 
| 111 | 
            +
                  else { //we have to catch an edge case where we have no direction indicators
         | 
| 112 | 
            +
                    throw new Error("invalid DMS coordinates format")	
         | 
| 113 | 
            +
                  }
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                  //we have to catch another edge case here, same or missing direction indicators
         | 
| 116 | 
            +
                  if(!latdir || !lngdir) {
         | 
| 117 | 
            +
                    throw new Error("invalid DMS coordinates format")	
         | 
| 118 | 
            +
                  }
         | 
| 111 119 |  | 
| 112 120 | 
             
                }
         | 
| 113 121 | 
             
                else {
         | 
| 114 | 
            -
                  throw new Error("invalid DMS coordinates format") | 
| 122 | 
            +
                  throw new Error("invalid DMS coordinates format")
         | 
| 115 123 | 
             
                }
         | 
| 116 124 | 
             
              }
         | 
| 117 125 | 
             
              else if (dms_abbr.test(coordsString)) {
         | 
| @@ -409,11 +417,16 @@ function coordsCloseEnough(coordsToTest) { | |
| 409 417 | 
             
            }
         | 
| 410 418 |  | 
| 411 419 | 
             
            //Coordinates pattern matching regex
         | 
| 420 | 
            +
             | 
| 421 | 
            +
            //decimal degrees
         | 
| 412 422 | 
             
            var dd_re = /(NORTH|SOUTH|[NS])?[\s]*([+-]?[0-8]?[0-9](?:[\.,]\d{3,}))[\s]*([•º°]?)[\s]*(NORTH|SOUTH|[NS])?[\s]*[,/;]?[\s]*(EAST|WEST|[EW])?[\s]*([+-]?[0-1]?[0-9]?[0-9](?:[\.,]\d{3,}))[\s]*([•º°]?)[\s]*(EAST|WEST|[EW])?/i;
         | 
| 423 | 
            +
             | 
| 413 424 | 
             
            //degrees minutes seconds with '.' as separator - gives array with 15 values
         | 
| 414 | 
            -
            var dms_periods = /(NORTH|SOUTH|[NS]) | 
| 425 | 
            +
            var dms_periods = /(NORTH|SOUTH|[NS])?\s*([+-]?[0-8]?[0-9])\s*(\.)\s*([0-5]?[0-9])\s*(\.)?\s*((?:[0-5]?[0-9])(?:[\.,]{1}\d{1,3})?)?\s*(NORTH|SOUTH|[NS])?(?:\s*[,/;]\s*|\s*)(EAST|WEST|[EW])?\s*([+-]?[0-1]?[0-9]?[0-9])\s*(\.)\s*([0-5]?[0-9])\s*(\.)?\s*((?:[0-5]?[0-9])(?:[\.,]\d{1,3})?)?\s*(EAST|WEST|[EW])?/i;
         | 
| 426 | 
            +
             | 
| 415 427 | 
             
            //degrees minutes seconds with words 'degrees, minutes, seconds' as separators (needed because the s of seconds messes with the S of SOUTH) - gives array of 17 values
         | 
| 416 428 | 
             
            var dms_abbr = /(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)?[\ \t]*(NORTH|SOUTH|[NS])?(?:[\ \t]*[,/;][\ \t]*|[\ \t]*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*(D(?:EG)?(?:REES)?)[\ \t]*([0-5]?[0-9])[\ \t]*(M(?:IN)?(?:UTES)?)[\ \t]*((?:[0-5]?[0-9])(?:\.\d{1,3})?)?(S(?:EC)?(?:ONDS)?)[\ \t]*(EAST|WEST|[EW])?/i;
         | 
| 429 | 
            +
             | 
| 417 430 | 
             
            //everything else - gives array of 17 values 
         | 
| 418 431 | 
             
            var coords_other = /(NORTH|SOUTH|[NS])?[\ \t]*([+-]?[0-8]?[0-9])[\ \t]*([•º°\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['′´’\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|′′|’’|´´|["″”\.])?[\ \t]*(NORTH|SOUTH|[NS])?(?:\s*[,/;]\s*|\s*)(EAST|WEST|[EW])?[\ \t]*([+-]?[0-1]?[0-9]?[0-9])[\ \t]*([•º°\.:]|D(?:EG)?(?:REES)?)?[\ \t]*,?([0-5]?[0-9](?:\.\d{1,})?)?[\ \t]*(['′´’\.:]|M(?:IN)?(?:UTES)?)?[\ \t]*,?((?:[0-5]?[0-9])(?:\.\d{1,3})?)?[\ \t]*(''|′′|´´|’’|["″”\.])?[\ \t]*(EAST|WEST|[EW])?/i;
         | 
| 419 432 |  | 
    
        package/failFormats.js
    CHANGED
    
    | @@ -7,6 +7,11 @@ const failingFormats = [ | |
| 7 7 | 
             
              '50°4\'17.698"east, 23°4\'17.698"south', //directions wrong way round
         | 
| 8 8 | 
             
              'E23.34355,S25.324234', // directions wrong way round
         | 
| 9 9 | 
             
              '23°45\'12.2\'\'S 18.33\'56.7\'\'E', //symbols don't match
         | 
| 10 | 
            +
              'S 27.45.34 23.23.23', //missing direction on right side
         | 
| 11 | 
            +
              'S 27.45.34 S 23.23.23', //invalid direction on right side
         | 
| 12 | 
            +
              'S 90°4\'17.698" S 23°4\'17.698"',
         | 
| 13 | 
            +
              '27.45.34 S S 23.23.23', //invalid direction on right side
         | 
| 14 | 
            +
              '27.45.34  23.23.23 E' //no dir on one side
         | 
| 10 15 | 
             
            ]
         | 
| 11 16 |  | 
| 12 17 | 
             
            module.exports = failingFormats
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "geo-coordinates-parser",
         | 
| 3 | 
            -
              "version": "1.5. | 
| 3 | 
            +
              "version": "1.5.6",
         | 
| 4 4 | 
             
              "description": "A Javascript function for reading a variety of coordinate formats and converting to decimal numbers. Builds on other efforts by returning the verbatim coordinates and the decimal coordinates all in one object.",
         | 
| 5 5 | 
             
              "main": "merge.js",
         | 
| 6 6 | 
             
              "scripts": {
         | 
    
        package/testFormats.json
    CHANGED
    
    | @@ -251,6 +251,13 @@ | |
| 251 251 | 
             
                "decimalLatitude": 40.123256,
         | 
| 252 252 | 
             
                "decimalLongitude": -74.123256
         | 
| 253 253 | 
             
              },
         | 
| 254 | 
            +
              {
         | 
| 255 | 
            +
                "verbatimCoordinates": "18°24S 22°45E",
         | 
| 256 | 
            +
                "verbatimLatitude": "18°24S",
         | 
| 257 | 
            +
                "verbatimLongitude": "22°45E",
         | 
| 258 | 
            +
                "decimalLatitude": -18.4,
         | 
| 259 | 
            +
                "decimalLongitude": 22.75
         | 
| 260 | 
            +
              },
         | 
| 254 261 | 
             
              {
         | 
| 255 262 | 
             
                "verbatimCoordinates": "18.24S 22.45E",
         | 
| 256 263 | 
             
                "verbatimLatitude": "18.24S",
         | 
| @@ -299,5 +306,12 @@ | |
| 299 306 | 
             
                "verbatimLongitude": "23,07771° E",
         | 
| 300 307 | 
             
                "decimalLatitude": -27.71372,
         | 
| 301 308 | 
             
                "decimalLongitude": 23.07771
         | 
| 309 | 
            +
              },
         | 
| 310 | 
            +
              {
         | 
| 311 | 
            +
                "verbatimCoordinates": "27.45.34 S 23.23.23 E",
         | 
| 312 | 
            +
                "verbatimLatitude": "27.45.34 S",
         | 
| 313 | 
            +
                "verbatimLongitude": "23.23.23 E",
         | 
| 314 | 
            +
                "decimalLatitude": -27.759444,
         | 
| 315 | 
            +
                "decimalLongitude": 23.38972222
         | 
| 302 316 | 
             
              }
         | 
| 303 317 | 
             
            ]
         | 
    
        package/testIndividual.js
    CHANGED
    
    
    
        package/testformats.js
    CHANGED
    
    | @@ -273,6 +273,20 @@ var otherFormats = [ | |
| 273 273 | 
             
                decimalLatitude: -27.2625,
         | 
| 274 274 | 
             
                decimalLongitude: 18.548055
         | 
| 275 275 | 
             
              }, 
         | 
| 276 | 
            +
              {
         | 
| 277 | 
            +
                verbatimCoordinates: '27.15.45.2S 18.32.53.4E',
         | 
| 278 | 
            +
                verbatimLatitude: '27.15.45.2S', 
         | 
| 279 | 
            +
                verbatimLongitude: '18.32.53.4E',
         | 
| 280 | 
            +
                decimalLatitude: -27.262556,
         | 
| 281 | 
            +
                decimalLongitude: 18.548167
         | 
| 282 | 
            +
              }, 
         | 
| 283 | 
            +
              {
         | 
| 284 | 
            +
                verbatimCoordinates: '27.15.45,2S 18.32.53,4E',
         | 
| 285 | 
            +
                verbatimLatitude: '27.15.45,2S', 
         | 
| 286 | 
            +
                verbatimLongitude: '18.32.53,4E',
         | 
| 287 | 
            +
                decimalLatitude: -27.262556,
         | 
| 288 | 
            +
                decimalLongitude: 18.548167
         | 
| 289 | 
            +
              }, 
         | 
| 276 290 | 
             
              {
         | 
| 277 291 | 
             
                verbatimCoordinates: 'S23.43563 °  E22.45634 °', //decimals with spaces before the symbol!!
         | 
| 278 292 | 
             
                verbatimLatitude: 'S23.43563 °', 
         | 
| @@ -286,6 +300,20 @@ var otherFormats = [ | |
| 286 300 | 
             
                verbatimLongitude: '23,07771° E',
         | 
| 287 301 | 
             
                decimalLatitude: -27.71372,
         | 
| 288 302 | 
             
                decimalLongitude: 23.07771
         | 
| 303 | 
            +
              }, 
         | 
| 304 | 
            +
              {
         | 
| 305 | 
            +
                verbatimCoordinates: '27.45.34 S 23.23.23 E',
         | 
| 306 | 
            +
                verbatimLatitude: '27.45.34 S', 
         | 
| 307 | 
            +
                verbatimLongitude: '23.23.23 E',
         | 
| 308 | 
            +
                decimalLatitude: -27.759444,
         | 
| 309 | 
            +
                decimalLongitude: 23.38972222
         | 
| 310 | 
            +
              }, 
         | 
| 311 | 
            +
              {
         | 
| 312 | 
            +
                verbatimCoordinates: 'S 27.45.34 E 23.23.23',
         | 
| 313 | 
            +
                verbatimLatitude: 'S 27.45.34', 
         | 
| 314 | 
            +
                verbatimLongitude: 'E 23.23.23',
         | 
| 315 | 
            +
                decimalLatitude: -27.759444,
         | 
| 316 | 
            +
                decimalLongitude: 23.38972222
         | 
| 289 317 | 
             
              }
         | 
| 290 318 | 
             
            ]
         | 
| 291 319 |  |