diff --git a/DESCRIPTION b/DESCRIPTION
index 31caef7..5597fa9 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -17,7 +17,7 @@ License: AGPL
Suggests:
covr, tinytest
Depends:
- R (>= 3.5.0)
+ R (>= 3.6.0)
Imports:
dplyr,
forcats,
@@ -30,6 +30,7 @@ Imports:
stringi,
tibble,
tidyr,
+ utils,
xml2
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.1.1
diff --git a/NAMESPACE b/NAMESPACE
index e3890c5..4abc5ee 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -22,3 +22,4 @@ importFrom(forcats,fct_rev)
importFrom(magrittr,"%>%")
importFrom(tibble,as_tibble)
importFrom(tidyr,replace_na)
+importFrom(utils,globalVariables)
diff --git a/R/f5wx-package.R b/R/f5wx-package.R
index 8859c29..126cacb 100644
--- a/R/f5wx-package.R
+++ b/R/f5wx-package.R
@@ -12,4 +12,5 @@
#' @importFrom dplyr bind_rows mutate filter count rename left_join
#' @importFrom forcats fct_rev fct_inorder
#' @importFrom tidyr replace_na
+#' @importFrom utils globalVariables
"_PACKAGE"
diff --git a/R/main.R b/R/main.R
index 7220445..135514b 100644
--- a/R/main.R
+++ b/R/main.R
@@ -1,3 +1,7 @@
+utils::globalVariables(
+ c("V1", "V2", "V3", "c_alpha", "conditions")
+)
+
#' Start a session to F5 Weather
#'
#' @param user,pass F5 Weather creds; use `F5WX_USER` & `F5WX_PASS` environment
@@ -59,7 +63,9 @@ f5wx_login <- function(user = Sys.getenv("F5WX_USER"),
#' Retrieve a forecast table from F5 Weather
#'
#' @param search for this location
-#' @return httr `response` object
+#' @return `f5wx_cast` object which is a `list` that contains a data frame of
+#' forecast information and an httr `response` object in the event
+#' you want to do more processing of the HTML table
#' @export
#' @examples \dontrun{
#' library(ggplot2)
@@ -101,23 +107,6 @@ f5wx_forecast <- function(search = "Dover, NH") {
httr::stop_for_status(res)
- invisible(res)
-
-}
-
-#' Make a temperature & precipitation chart from the object returned by [f5wx_forecast()]
-#'
-#' @param res object returned by [f5wx_forecast()]
-#' @return ggplot2 object
-#' @export
-#' @examples \dontrun{
-#' library(ggplot2)
-#' f5wx_login()
-#' res <- f5wx_forecast()
-#' f5wx_chart(res) + labs(title = "ECMWF Forecast for Berwick, Maine")
-#' }
-f5wx_chart <- function(res) {
-
pg <- httr::content(res, as = "parsed")
# model date location elevation in the
@@ -179,6 +168,34 @@ f5wx_chart <- function(res) {
c_alpha = replace_na(c_alpha, 1)
) -> f_cast
+ list(
+ f_cast = f_cast,
+ response = res
+ ) -> out
+
+ class(out) <- c("f5wx_cast", "list")
+
+ invisible(out)
+
+}
+
+#' Make a temperature & precipitation chart from the object returned by [f5wx_forecast()]
+#'
+#' @param res object returned by [f5wx_forecast()]
+#' @return ggplot2 object
+#' @export
+#' @examples \dontrun{
+#' library(ggplot2)
+#' f5wx_login()
+#' res <- f5wx_forecast()
+#' f5wx_chart(res) + labs(title = "ECMWF Forecast for Berwick, Maine")
+#' }
+f5wx_chart <- function(res) {
+
+ stopifnot(inherits(res, "f5wx_cast"))
+
+ f_cast <- res$f_cast
+
ggplot() +
geom_segment(
data = f_cast,
@@ -186,11 +203,11 @@ f5wx_chart <- function(res) {
size = 5, lineend = "round"
) +
geom_text(
- data = f_cast, aes(V2, V1, label = sprintf("%s°", V2)),
+ data = f_cast, aes(V2, V1, label = sprintf("%s\u00B0", V2)),
hjust = 1, nudge_x = -0.75, size = 4, family = font_gs
) +
geom_text(
- data = f_cast, aes(V3, V1, label = sprintf("%s°", V3)),
+ data = f_cast, aes(V3, V1, label = sprintf("%s\u00B0", V3)),
hjust = 0, nudge_x = 0.75, size = 4, family = font_gs
) +
scale_x_continuous(
diff --git a/README.Rmd b/README.Rmd
index f0350d6..ae5dc0e 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -41,11 +41,15 @@ packageVersion("f5wx")
```{r ex01, fig.width=750/96, fig.height=450/96}
library(ggplot2)
+library(tibble)
f5wx_login()
-f5wx_forecast() %>%
- f5wx_chart() +
+res <- f5wx_forecast()
+
+res$f_cast
+
+f5wx_chart(res) +
labs(title = "ECMWF Forecast for Berwick, Maine")
```
diff --git a/README.md b/README.md
index 4e331cc..7251f9c 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ by](https://img.shields.io/badge/Keybase-Verified-brightgreen.svg)](https://keyb
[![Linux build
Status](https://travis-ci.org/hrbrmstr/f5wx.svg?branch=master)](https://travis-ci.org/hrbrmstr/f5wx)
![Minimal R
-Version](https://img.shields.io/badge/R%3E%3D-3.5.0-blue.svg)
+Version](https://img.shields.io/badge/R%3E%3D-3.6.0-blue.svg)
![License](https://img.shields.io/badge/License-AGPL-blue.svg)
# f5wx
@@ -55,11 +55,28 @@ packageVersion("f5wx")
``` r
library(ggplot2)
+library(tibble)
f5wx_login()
-f5wx_forecast() %>%
- f5wx_chart() +
+res <- f5wx_forecast()
+
+res$f_cast
+## # A tibble: 10 x 5
+## V1 V2 V3 conditions c_alpha
+##
+## 1 Sat 10/3 46 67 Clear 1
+## 2 Sun 10/4 45 68 Clear 1
+## 3 Mon 10/5 52 63 Rain 1
+## 4 Tue 10/6 48 68 Clear 1
+## 5 Wed 10/7 53 61 Rain 0.25
+## 6 Thu 10/8 50 56 Clear 1
+## 7 Fri 10/9 41 46 Clear 1
+## 8 Sat 10/10 38 51 Clear 1
+## 9 Sun 10/11 46 60 Clear 1
+## 10 Mon 10/12 50 61 Clear 1
+
+f5wx_chart(res) +
labs(title = "ECMWF Forecast for Berwick, Maine")
```
@@ -69,9 +86,9 @@ f5wx_forecast() %>%
| Lang | \# Files | (%) | LoC | (%) | Blank lines | (%) | \# Lines | (%) |
| :--- | -------: | --: | --: | ---: | ----------: | --: | -------: | ---: |
-| R | 4 | 0.4 | 161 | 0.46 | 26 | 0.3 | 59 | 0.33 |
-| Rmd | 1 | 0.1 | 13 | 0.04 | 18 | 0.2 | 30 | 0.17 |
-| SUM | 5 | 0.5 | 174 | 0.50 | 44 | 0.5 | 89 | 0.50 |
+| R | 4 | 0.4 | 171 | 0.46 | 31 | 0.3 | 62 | 0.34 |
+| Rmd | 1 | 0.1 | 15 | 0.04 | 20 | 0.2 | 30 | 0.16 |
+| SUM | 5 | 0.5 | 186 | 0.50 | 51 | 0.5 | 92 | 0.50 |
clock Package Metrics for f5wx
diff --git a/man/f5wx_forecast.Rd b/man/f5wx_forecast.Rd
index d0d3381..9b800f3 100644
--- a/man/f5wx_forecast.Rd
+++ b/man/f5wx_forecast.Rd
@@ -10,7 +10,9 @@ f5wx_forecast(search = "Dover, NH")
\item{search}{for this location}
}
\value{
-httr \code{response} object
+\code{f5wx_cast} object which is a \code{list} that contains a data frame of
+forecast information and an httr \code{response} object in the event
+you want to do more processing of the HTML table
}
\description{
Retrieve a forecast table from F5 Weather
|