[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] 01/01: [metar] Unify station lat/lon conversion.
From: |
Mario Lang |
Subject: |
[elpa] 01/01: [metar] Unify station lat/lon conversion. |
Date: |
Mon, 02 Jun 2014 20:27:35 +0000 |
mlang pushed a commit to branch master
in repository elpa.
commit 1585aa024853b06815ea2da4a03cc7e7fe4dd2a7
Author: Mario Lang <address@hidden>
Date: Mon Jun 2 22:26:34 2014 +0200
[metar] Unify station lat/lon conversion.
---
packages/metar/metar.el | 35 ++++++++---------------------------
1 files changed, 8 insertions(+), 27 deletions(-)
diff --git a/packages/metar/metar.el b/packages/metar/metar.el
index 182e805..82b83b7 100644
--- a/packages/metar/metar.el
+++ b/packages/metar/metar.el
@@ -92,39 +92,20 @@
"Variable containing (cached) METAR station information.
Use the function `metar-stations' to get the actual station list.")
-(defun metar-station-convert-latitude (string)
+(defun metar-station-convert-dms-to-deg (string)
+ "Convert degrees, minutes and optional seconds, to degrees."
(when (string-match (rx string-start
- (group (1+ digit))
- ?-
- (group (1+ digit))
+ (group (1+ digit)) ?- (group (1+ digit))
(optional ?- (group (1+ digit)))
- (group (char ?N ?S))
+ (group (char ?N ?E ?S ?W))
string-end) string)
- (funcall (if (string= (match-string 4 string) "N") #'+ #'-)
+ (funcall (if (memq (aref (match-string 4 string) 0) '(?N ?E)) #'+ #'-)
(+ (string-to-number (match-string 1 string))
- (/ (string-to-number (match-string 2 string))
- 60.0)
+ (/ (string-to-number (match-string 2 string)) 60.0)
(if (match-string 3 string)
(/ (string-to-number (match-string 3 string)) 3600.0)
0)))))
-(defun metar-station-convert-longitude (string)
- (when (string-match (rx string-start
- (group (1+ digit))
- ?-
- (group (1+ digit))
- (optional ?- (group (1+ digit)))
- (group (char ?E ?W))
- string-end) string)
- (funcall (if (string= (match-string 4 string) "E") #'+ #'-)
- (+ (string-to-number (match-string 1 string))
- (/ (string-to-number (match-string 2 string))
- 60.0)
- (if (match-string 3 string)
- (/ (string-to-number (match-string 3 string))
- 3600.0)
- 0)))))
-
(defun metar-stations ()
"Retrieve a list of METAR stations.
Results are cached in variable `metar-stations'.
@@ -147,9 +128,9 @@ If this variable is nil, the information is retrieved from
the Internet."
(cons 'name (nth 3 item))
(cons 'country (nth 5 item))
(cons 'latitude
- (metar-station-convert-latitude (nth 7 item)))
+ (metar-station-convert-dms-to-deg (nth 7
item)))
(cons 'longitude
- (metar-station-convert-longitude (nth 8
item)))
+ (metar-station-convert-dms-to-deg (nth 8
item)))
(cons 'altitude (string-to-number (nth 12 item))))))
metar-stations)))
(setq data (cdr data)))