glue has a two new articles:
If the last argument of glue()
is empty, it is
dropped (#320). This makes it easy to structure glue()
calls with one argument per line, and to anticipate adding
arguments:
glue(
"here's some text, ",
"and maybe more text will be added in the future?",
)
glue_sql("{var*}")
once again generates
NULL
if var is empty.
This reverts #292. (#318).
The .envir
argument to glue()
and
glue_data()
really must be an environment now, as
documented. Previously a list-ish object worked in some cases (by
accident, not really by design). When you need to lookup values in a
list-ish object, use glue_data(.x =)
(#308, #317). Ditto
for glue_sql()
and glue_data_sql()
.
If rlang is installed, glue will generate more informative errors if an interpolated expression either can’t be parsed or fails to evaluate (#229).
+
now works in more situations, and gives errors
when one side isn’t a character vector. It no longer automatically
applies glue interpolation to a non-glue input, if there is one. You’ll
need to do that yourself (#286).
glue_collapse(character())
(and hence
glue_sql_collapse(character())
) now return ""
,
so that they always return a single string (#88).
glue_sql()
now collapses an empty vector to
""
not "NULL"
(#272).
glue_sql()
now uses
DBI::dbQuoteLiteral()
for all object types. This should
increase fidelity of escaping for different object types
(#279).
The “Speed of glue” vignette has been converted to an article,
which allows several package to be removed from Suggests
(and re-located to Config/Needs/website
). The code got a
light refresh, including a switch from microbenchmark to bench and more
modern use of ggplot2.
Add $(C_VISIBILITY)
to compiler flags to hide
internal symbols from the dll (#284 @lionel-).
glue()
, glue_data()
,
glue_col()
, and glue_data_col()
gain a new
.literal
argument, which controls how quotes and the
comment character are treated when parsing the expression string (#235).
This is mostly useful when using a custom transformer.
Trailing whitespace-only lines don’t interfere with indentation (#247).
Jennifer Bryan is now the maintainer.
The existing custom language engines for knitr, glue
and glue_sql
, are documented in a new vignette (#71).
Detail added after release: glue now sets up registration of these
engines in .onLoad()
.
glue_col()
gives special treatment to styling
functions from the crayon package,
e.g. glue_col("{blue foo}")
“just works” now, even if
crayon is not attached (but is installed) (#241).
Unterminated backticks trigger the same error as unterminated single or double quotes (#237).
glue_sql()
collapses zero-length
DBI::SQL
object into DBI::SQL("NULL")
(#244
@shrektan).
collapse()
has been removed
(#213)New glue_sql_collapse()
function to collapse inputs
and return a DBI::SQL()
object (#103).
glue()
gains a new .comment
argument,
to control the comment character (#193).
glue()
gains a new .null
argument, to
control the value to replace NULL
values with (#217, @echasnovski).
sql_quote_transformer()
is now allows whitespace after
the trailing *
(#218).compare_proxy.glue()
method defined so glue objects can
be compared to strings in testthat 3e without errors (#212)print.glue()
no longer prints an empty newline for 0
length inputs (#214)glue_safe()
gives a slightly nicer error messageglue_sql()
now collapses DBI::SQL()
elements correctly (#192 @shrektan)compare()
method gains a ...
argument, for compatibility with testthat 3.0.0glue_sql()
now replaces missing values correctly when
collapsing values (#185).glue_sql()
now always preserves the type of the column
even in the presence of missing values (#130).envir = NULL
is now supported and is equivalent to
passing .envir = emptyenv()
(#140)
New glue_safe()
and glue_data_safe()
functions, safer versions of glue()
that do not execute
code, only look up values (using get()
). These alternatives
are useful for things like shiny applications where you do not have
control of the input for your glue expressions. (#140)
Fixed memory access issue and memory leaks found by valgrind.
glue now implements vctrs methods. This ensures that vectors of glue strings are compatible with tidyverse packages like tidyr (r-lib/tidyselect#170, tidyverse/tidyr#773, @lionel-).
Fix a LTO type mismatch warning (#146)
glue_sql()
now quotes lists of values appropriate to
their type, rather than coercing all values to characters
(#153)
glue_data()
now implicitly coerces .x
to a list.
glue()
gains the .trim
argument, like
glue_data()
.
single_quote()
double_quote()
and
backtick()
all return NA
for NA
inputs (#135).
Improve trim()
’s handling of lines containing only
indentation (#162, #163, @alandipert)
glue()
now has a +
method to combine
strings.glue_sql()
now collapses zero-length vector into
DBI::SQL("NULL")
(#134 @shrektan).glue_sql()
now supports unquoting lists of Id
objects.glue_sql()
now quotes characters with NAs appropriately
(#115).glue_sql()
now quotes Dates appropriately (#98).The evaluate()
function has been removed. Changes
elsewhere in glue made the implementation trivial so it was removed for
the sake of clarity. Previous uses can be replaced by
eval(parse(text = text), envir)
.
collapse()
has been renamed to
glue_collapse()
to avoid namespace collisions with
dplyr::collapse()
.
compare.glue()
was added, to make it easier to use
glue objects in testthat::expect_equal()
statements.
glue_col()
and glue_data_col()
functions added to display strings with color.
Glue now throws an informative error message when it cannot interpolate a function into a string (#114, @haleyjeppson & @ijlyttle).
Glue now evaluates unnamed arguments lazily with
delayedAssign()
, so there is no performance cost if an
argument is not used. (#83, @egnha).
Fixed a bug where names in the assigned expression of an interpolation variable would conflict with the name of the variable itself (#89, @egnha).
Do not drop the glue
class when subsetting
(#66).
Fix glue()
and collapse()
always return
UTF-8 encoded strings (#81, @dpprdan)
The implementation has been tweaked to be slightly faster in most cases.
glue()
now has a .transformer
argument,
which allows you to use custom logic on how to evaluate the code within
glue blocks. See vignette("transformers")
for more details
and example transformer functions.
glue()
now returns NA
if any of the
results are NA
and .na
is NULL
.
Otherwise NA
values are replaced by the value of
.na
.
trim()
to use the trimming logic from glue is now
exported.
glue_sql()
and glue_data_sql()
functions added to make constructing SQL statements with glue safer and
easier.
glue()
is now easier to use when used within helper
functions such as lapply
.
Fix when last expression in glue()
is NULL.
Fix for PROTECT errors when resizing output strings.
glue()
always returns ‘UTF-8’ strings, converting
inputs if in other encodings if needed.
to()
and to_data()
have been
removed.
glue()
and glue_data()
can now take
alternative delimiters to {
and }
. This is
useful if you are writing to a format that uses a lot of braces, such as
LaTeX. (#23)
collapse()
now returns 0 length output if given 0
length input (#28).
Fix glue()
to admit .
as an embedded
expression in a string (#15, @egnha).
Added a NEWS.md
file to track changes to the
package.