-
Notifications
You must be signed in to change notification settings - Fork 2.1k
replace parse() with parse_safe() in geom_text() #2867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 11 commits
34c01cc
fe7216a
aa9bfc3
5dd869e
252e7b2
4b6b02f
aa00e13
5a21915
f65ea71
f5a853f
82d6e34
2a089c0
66c9234
8c798ee
2b8b459
637a88e
95025cb
54d87c7
0615062
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -476,10 +476,6 @@ CoordSf <- ggproto("CoordSf", CoordCartesian, | |
if (!is.null(graticule$plot12)) | ||
graticule$degree_label[!graticule$plot12] <- NA | ||
|
||
# parse labels into expressions if required | ||
if (any(grepl("degree", graticule$degree_label))) | ||
graticule$degree_label <- lapply(graticule$degree_label, function(x) parse(text = x)[[1]]) | ||
|
||
graticule | ||
}, | ||
|
||
|
@@ -511,6 +507,21 @@ CoordSf <- ggproto("CoordSf", CoordCartesian, | |
graticule$y_start <- sf_rescale01_x(graticule$y_start, y_range) | ||
graticule$y_end <- sf_rescale01_x(graticule$y_end, y_range) | ||
|
||
# Convert 'degree' to the degree symbol | ||
parse_ids <- grepl("\\bdegree\\b", graticule$degree_label) | ||
if (any(parse_ids)) { | ||
graticule$degree_label <- Map( | ||
function(parse_id, label) { | ||
if (parse_id) { | ||
parse(text = label)[[1]] | ||
} else { | ||
as.expression(label)[[1]] | ||
} | ||
}, | ||
parse_ids, graticule$degree_label | ||
) | ||
} | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would you mind moving this code block into the |
||
list( | ||
x_range = x_range, | ||
y_range = y_range, | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -430,3 +430,21 @@ is_column_vec <- function(x) { | |
dims <- dim(x) | ||
length(dims) == 2L && dims[[2]] == 1L | ||
} | ||
|
||
# Parse takes takes n strings and returns n expressions | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I noticed "takes takes". Since I asked for one more substantive change, maybe you could fix this also. |
||
# See https://github.com/tidyverse/ggplot2/issues/2864 for discussion | ||
# | ||
# parse(text = c("alpha", "", "gamma")) | ||
# #> expression(alpha, gamma) | ||
# | ||
# parse_safe(text = c("alpha", "", "gamma")) | ||
# #> expression(alpha, NA, gamma) | ||
# | ||
parse_safe <- function(text) { | ||
slowkow marked this conversation as resolved.
Show resolved
Hide resolved
|
||
out <- vector("expression", length(text)) | ||
for (i in seq_along(text)) { | ||
expr <- parse(text = text[[i]]) | ||
out[[i]] <- if (length(expr) == 0) NA else expr[[1]] | ||
} | ||
out | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not valid isn't quite the right turn of phrase - they are valid; they're just empty. We also fixed handling of multiple expressions in a single string.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it, will try to make the comment more accurate.