>>>>> Kurt Hornik writes: Thanks again. All added now with c87633.
Best -k >>>>> Ivan Krylov via R-devel writes: > Thanks. I am already looking handling the 4.2.0 placeholder syntax, but > likely will need to refactor the code I added yesterday. > The "experimental" 4.3.0 extra placeholder feature looks like a lot of > effort: ideally there would be a simpler way. I'll ask on R Core. > My guess would be that the new syntax is particularly prominently used > in examples: if so, it would be good to also have coverage for this. > Best > -k >> Many thanks to Henrik for remembering the report in Bugzilla and to >> Kurt for implementing the change and finding out the true number of >> affected packages. >> On Wed, 22 Jan 2025 15:34:41 -0500 >> Ian Farm <ian.f...@maine.edu> wrote: >>> Would packages using the underscore placeholder with the native pipe >>> need to also depend on R >= 4.2.0? >> That's a good find! For the R >= 4.2 syntax, we only need to check for >> getParseData(...)$token %in% 'PLACEHOLDER'. The R >= 4.3 syntax feature >> is harder to test for: >>>> As an experimental feature the placeholder _ can now also be used in >>>> the rhs of a forward pipe |> expression as the first argument in an >>>> extraction call, such as _$coef. More generally, it can be used as >>>> the head of a chain of extractions, such as _$coef[[2]]. >> I think it might be possible to parse(text = paste('PLACEHOLDER |>', >> grandparent_expression)) and then look at the top-level function in the >> call, but that feels quite fragile: >> x <- utils::getParseData(parse(f, keep.source = TRUE)) >> i <- x$token %in% "PLACEHOLDER" >> pi <- x[i, "parent"] >> ppi <- x[x$id %in% pi, "parent"] >> placeholder_expressions <- utils::getParseText(x, ppi) >> extractor_used <- vapply(placeholder_expressions, function(src) { >> toplevel <- parse(text = paste("PLACEHOLDER |> ", src))[[1]][[1]] >> identical(toplevel, quote(`$`)) || >> identical(toplevel, quote(`[`)) || >> identical(toplevel, quote(`[[`)) >> }, FALSE) >> Alternatively, we may find the first child of the grandparent of the >> placeholder. If it's the placeholder expression, then the pipe must be >> of the form ...|> _..., which is the R >= 4.3 syntax: >> x <- utils::getParseData(parse(f, keep.source = TRUE)) >> i <- x$token %in% "PLACEHOLDER" >> vapply(which(i), function(i) { >> pi <- x[i, "parent"] >> ppi <- x[x$id %in% pi, "parent"] >> cppi <- x[x$parent %in% ppi, "id"] >> min(cppi) == pi >> }, FALSE) >> -- >> Best regards, >> Ivan >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel