237 lines
8.8 KiB
Markdown
Raw Normal View History

2025-01-12 00:52:51 +08:00
# glue 1.8.0
* glue has a two new articles:
- "Get started", with contributions from @stephhazlitt and @BrennanAntone
(#137, #170, #332).
- How to write a function that wraps glue (#281).
* 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:
``` r
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()`.
# glue 1.7.0
* 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 1.6.2
* Modify a test for better forward compatibility with R.
# glue 1.6.1
* glue now registers its custom knitr engines in a way that is more robust to namespace-loading edge cases that can arise during package installation (#254).
# glue 1.6.0
* `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).
# glue 1.5.1
* 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).
# glue 1.5.0
## Breaking changes
* Long deprecated function `collapse()` has been removed (#213)
## New functions and arguments
* 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).
## Bugfixes and minor changes
* `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)
* Unterminated comments in glue expression now throw an error (#227, @gaborcsardi)
* Unterminated quotes in glue expressions now throw an error (#226, @gaborcsardi)
# glue 1.4.2
* `glue_safe()` gives a slightly nicer error message
* The required version of R is now 3.2 (#189)
* `glue_sql()` now collapses `DBI::SQL()` elements correctly (#192 @shrektan)
* The internal `compare()` method gains a `...` argument, for compatibility with testthat 3.0.0
# glue 1.4.1
* Internal changes for compatibility with vctrs 0.3.0 (#187).
* `glue_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)
# glue 1.4.0
* `.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 1.3.2
* 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 1.3.1
## Features
* `glue()` now has a `+` method to combine strings.
* `glue_sql()` now collapses zero-length vector into `DBI::SQL("NULL")` (#134 @shrektan).
## Bugfixes and minor changes
* `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).
* A potential protection error reported by rchk was fixed.
# glue 1.3.0
## Breaking changes
* 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()`.
## Features
* `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.
## Bugfixes and minor changes
* 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)
# glue 1.2.0
* 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.
# glue 1.1.1
* Another fix for PROTECT / REPROTECT found by the rchk static analyzer.
# glue 1.1.0
* 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).
# glue 0.0.0.9000
* Fix `glue()` to admit `.` as an embedded expression in a string (#15, @egnha).
* Added a `NEWS.md` file to track changes to the package.