summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMichael Knabe <github@mfkhh.de>2015-12-09 19:41:16 +0100
committerMichael Knabe <github@mfkhh.de>2015-12-09 19:41:16 +0100
commit23aa6876b069f05b7f2c4791bb4b344a3a7387b2 (patch)
tree0fbbbb3dfb541e71b5a9332de07ab4c52d1e80dd
parentc6071cc0da601851381a7fd2954923556dcbc802 (diff)
downloadxmobar-23aa6876b069f05b7f2c4791bb4b344a3a7387b2.tar.gz
xmobar-23aa6876b069f05b7f2c4791bb4b344a3a7387b2.tar.bz2
Add template variables for wind speed in m/s and km/h to weather plugin
-rw-r--r--readme.md2
-rw-r--r--src/Plugins/Monitors/Weather.hs19
2 files changed, 15 insertions, 6 deletions
diff --git a/readme.md b/readme.md
index e94caeb..7b9d3f1 100644
--- a/readme.md
+++ b/readme.md
@@ -742,7 +742,7 @@ something like:
- Args: default monitor arguments
- Variables that can be used with the `-t`/`--template` argument:
`station`, `stationState`, `year`, `month`, `day`, `hour`,
- `windCardinal`, `windAzimuth`, `windMph`, `windKnots`,
+ `windCardinal`, `windAzimuth`, `windMph`, `windKnots`, `windMs`, `windKmh`
`visibility`, `skyCondition`, `tempC`, `tempF`,
`dewPointC`, `dewPointF`, `rh`, `pressure`
- Default template: `<station>: <tempC>C, rh <rh>% (<hour>)`
diff --git a/src/Plugins/Monitors/Weather.hs b/src/Plugins/Monitors/Weather.hs
index d458279..b2520a9 100644
--- a/src/Plugins/Monitors/Weather.hs
+++ b/src/Plugins/Monitors/Weather.hs
@@ -43,6 +43,8 @@ weatherConfig = mkMConfig
, "windAzimuth"
, "windMph"
, "windKnots"
+ , "windKmh"
+ , "windMs"
, "visibility"
, "skyCondition"
, "tempC"
@@ -59,6 +61,8 @@ data WindInfo =
, windAzimuth :: String -- azimuth direction
, windMph :: String -- speed (MPH)
, windKnots :: String -- speed (knot)
+ , windKmh :: String -- speed (km/h)
+ , windMs :: String -- speed (m/s)
} deriving (Show)
data WeatherInfo =
@@ -91,7 +95,7 @@ pTime = do y <- getNumbersAsString
return (y, m, d ,h:hh:":"++mi:mimi)
noWind :: WindInfo
-noWind = WindInfo "μ" "μ" "0" "0"
+noWind = WindInfo "μ" "μ" "0" "0" "0" "0"
pWind :: Parser WindInfo
pWind =
@@ -105,7 +109,7 @@ pWind =
string "MPH ("
knot <- tospace
manyTill anyChar newline
- return $ WindInfo "μ" "μ" mph knot
+ return $ WindInfo "μ" "μ" mph knot (toKmh knot) (toMs knot)
wind = do manyTill skipRestOfLine (string "Wind: from the ")
cardinal <- tospace
char '('
@@ -115,8 +119,13 @@ pWind =
string "MPH ("
knot <- tospace
manyTill anyChar newline
- return $ WindInfo cardinal azimuth mph knot
+ return $ WindInfo cardinal azimuth mph knot (toKmh knot) (toMs knot)
in try wind0 <|> try windVar <|> try wind <|> return noWind
+ where
+ toKmh knots = knots $* 1.852
+ toMs knots = knots $* 0.514
+ ($*) :: String -> Double -> String
+ op1 $* op2 = show (round ((read op1::Double) * op2)::Integer)
pTemp :: Parser (Int, Int)
pTemp = do let num = digit <|> char '-' <|> char '.'
@@ -199,10 +208,10 @@ getData station = do
#endif
formatWeather :: [WeatherInfo] -> Monitor String
-formatWeather [WI st ss y m d h (WindInfo wc wa wm wk) v sk tC tF dC dF r p] =
+formatWeather [WI st ss y m d h (WindInfo wc wa wm wk wkh wms) v sk tC tF dC dF r p] =
do cel <- showWithColors show tC
far <- showWithColors show tF
- parseTemplate [st, ss, y, m, d, h, wc, wa, wm, wk, v, sk, cel, far, show dC, show dF, show r , show p ]
+ parseTemplate [st, ss, y, m, d, h, wc, wa, wm, wk, wkh, wms, v, sk, cel, far, show dC, show dF, show r , show p ]
formatWeather _ = getConfigValue naString
runWeather :: [String] -> Monitor String