emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] 01/03: [metar] Fix humidity calculation when Fahrenheit is used


From: Mario Lang
Subject: [elpa] 01/03: [metar] Fix humidity calculation when Fahrenheit is used
Date: Fri, 30 May 2014 21:06:42 +0000

mlang pushed a commit to branch master
in repository elpa.

commit 9444f39279adf613110f4b7ab600bc1edc1f0701
Author: Mario Lang <address@hidden>
Date:   Fri May 30 11:30:50 2014 +0200

    [metar] Fix humidity calculation when Fahrenheit is used
---
 packages/metar/metar.el |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/packages/metar/metar.el b/packages/metar/metar.el
index 4909f00..02e27aa 100644
--- a/packages/metar/metar.el
+++ b/packages/metar/metar.el
@@ -72,7 +72,8 @@
               (cons :format "%v"
                     (const :tag "Temperature:" temperature)
                     (choice (const :tag "Degree Celsius" degC)
-                            (const :tag "Degree Kelvin" degK)
+                            ;; calc-units doesn't convert degC to degK
+                            ;(const :tag "Degree Kelvin" degK)
                             (const :tag "Degree Fahrenheit" degF)))))
 
 (defvar metar-stations-info-url "http://weather.noaa.gov/data/nsd_bbsss.txt";
@@ -238,14 +239,16 @@ and NEW-UNIT should be a unit name like \"kph\" or 
similar."
        " ")
     (cons (string-to-number value) (intern unit))))
 
-(defun metar-convert-temperature (string)
-  "Convert a METAR temperature."
+(defun metar-convert-temperature (string &optional unit)
+  "Convert a METAR temperature.
+If optional argument UNIT is provided, convert to that unit, otherwise,
+consult `metar-units'."
   (metar-convert-unit
    (concat (if (= (aref string 0) ?M)
               (concat "-" (substring string 1))
             string)
           "degC")
-   (cdr (assq 'temperature metar-units))))
+   (or unit (cdr (assq 'temperature metar-units)))))
 
 (defvar metar-url
   "http://weather.noaa.gov/pub/data/observations/metar/stations/%s.TXT";
@@ -413,8 +416,9 @@ If no record was found for STATION, nil is returned."
   (when (string-match metar-temperature-and-dewpoint-regexp info)
     (cons (round
           (metar-magnus-formula-humidity-from-dewpoint
-           (save-match-data (car (metar-convert-temperature (match-string 1 
info))))
-           (car (metar-convert-temperature (match-string 3 info)))))
+           (save-match-data (car (metar-convert-temperature
+                                  (match-string 1 info) 'degC)))
+           (car (metar-convert-temperature (match-string 3 info) 'degC))))
          'percent)))
 
 (defconst metar-pressure-regexp
@@ -503,11 +507,16 @@ Otherwise, determine the best station via 
latitude/longitude."
                                     nil t))))
     (let ((info (metar-decode (metar-get-record station))))
       (if info
-         (message "%d minutes ago at %s: %d°C, %d%% relative humidity%s"
-                  (/ (truncate (float-time (time-since (cdr (assoc 'timestamp 
info))))) 60)
+         (message "%d minutes ago at %s: %d°%c, %d%% relative humidity%s"
+                  (/ (truncate (float-time (time-since
+                                            (cdr (assoc 'timestamp info)))))
+                     60)
                   (or (metar-stations-get (cdr (assoc 'station info)) 'name)
                       (cdr (assoc 'station info)))
                   (cadr (assoc 'temperature info))
+                  (cond
+                   ((eq (cdr (assq 'temperature metar-units)) 'degC) ?C)
+                   ((eq (cdr (assq 'temperature metar-units)) 'degF) ?F))
                   (cadr (assoc 'humidity info))
                   (if (assoc 'phenomena info)
                       (concat "\n" "Phenomena: "



reply via email to

[Prev in Thread] Current Thread [Next in Thread]