Thanks.  I installed the latest roxygen2 and pkgdown, and tried to make a 
simple reprex
git clone https://github.com/dankelley/mooring.git
cd mooring
git checkout S7
Rscript -e "pkgdown::clean_site()"
Rscript -e "pkgdown::build_site()"

but it still fails.  (Full output is below, for completeness.) I wonder whether 
I ought to be doing something extra in the Roxygen code (in file R/plot.R 
within this directory.). Please note that I can rename it as "draw()" or 
something, but I'm hoping to learn S7 properly, because I'm really quite keen 
to leave my S3 and S4 days behind me.  (PS to Hadley: I loved the presentation 
you gave on what was then R7, and have recommended it to colleagues not just 
for the R7 information, but for the concise explanation of the benefit of OOP 
and generics.)

── Installing package mooring into temporary library ───────────────────────────
── Building pkgdown site for package mooring ───────────────────────────────────
Reading from: /Users/kelley/wednesday/mooring
Writing to: /Users/kelley/wednesday/mooring/docs
── Initialising site ───────────────────────────────────────────────────────────
Copying
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/bootstrap-toc.css,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/bootstrap-toc.js,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/docsearch.css,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/docsearch.js,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/link.svg,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/pkgdown.css,
and
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/pkgdown.js
to bootstrap-toc.css, bootstrap-toc.js, docsearch.css, docsearch.js, link.svg,
pkgdown.css, and pkgdown.js
── Building home ───────────────────────────────────────────────────────────────
Writing authors.html
Copying man/figures/Makefile, man/figures/README-example-1.png,
man/figures/README-example-2.png, man/figures/force_diagram.R, and
man/figures/force_diagram.png
to reference/figures/Makefile, reference/figures/README-example-1.png,
reference/figures/README-example-2.png, reference/figures/force_diagram.R, and
reference/figures/force_diagram.png
Writing 404.html
── Building function reference ─────────────────────────────────────────────────
Error:
! in callr subprocess.
Caused by error in `map2(.x, vec_index(.x), .f, ...)`:
! In index: 1.
---
Standard error:
── Building pkgdown site for package mooring ───────────────────────────────────
Reading from: /Users/kelley/wednesday/mooring
Writing to: /Users/kelley/wednesday/mooring/docs
── Initialising site ───────────────────────────────────────────────────────────
Copying
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/bootstrap-toc.css,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/bootstrap-toc.js,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/docsearch.css,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/docsearch.js,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/link.svg,
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/pkgdown.css,
and
../../../../Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/pkgdown/BS3/assets/pkgdown.js
to bootstrap-toc.css, bootstrap-toc.js, docsearch.css, docsearch.js, link.svg,
pkgdown.css, and pkgdown.js
── Building home ───────────────────────────────────────────────────────────────
Writing authors.html
Copying man/figures/Makefile, man/figures/README-example-1.png,
man/figures/README-example-2.png, man/figures/force_diagram.R, and
man/figures/force_diagram.png
to reference/figures/Makefile, reference/figures/README-example-1.png,
reference/figures/README-example-2.png, reference/figures/force_diagram.R, and
reference/figures/force_diagram.png
Writing 404.html
── Building function reference ─────────────────────────────────────────────────
---
Backtrace:
1. pkgdown::build_site()
2. pkgdown:::build_site_external(pkg = pkg, examples = examples, run_dont_run = 
run_don…
3. callr::r(function(..., cli_colors, pkgdown_internet) { …
4. callr:::get_result(output = out, options)
5. callr:::throw(callr_remote_error(remerr, output), parent = 
fix_msg(remerr[[3]]))
---
Subprocess backtrace:
 1. pkgdown::build_site(...)
 2. pkgdown:::build_site_local(pkg = pkg, examples = examples, run_dont_run = 
run_dont_r…
 3. pkgdown::build_reference(pkg, lazy = lazy, examples = examples, 
run_dont_run = run_…
 4. pkgdown::build_reference_index(pkg)
 5. pkgdown::render_page(pkg, "reference-index", data = 
data_reference_index(pkg), …
 6. pkgdown:::render_page_html(pkg, name = name, data = data, depth = depth)
 7. utils::modifyList(data_template(pkg, depth = depth), data)
 8. base::stopifnot(is.list(x), is.list(val))
 9. pkgdown:::data_reference_index(pkg)
10. meta %>% purrr::imap(data_reference_index_rows, pkg = pkg) %>% …
11. base::unlist(., recursive = FALSE)
12. purrr::compact(.)
13. purrr::discard(.x, function(x) is_empty(.f(x)))
14. purrr:::where_if(.x, .p, ...)
15. purrr:::map_(.x, .p, ..., .type = "logical", .purrr_error_call = 
.purrr_error_call)
16. purrr:::vctrs_vec_compat(.x, .purrr_user_env)
17. purrr::imap(., data_reference_index_rows, pkg = pkg)
18. purrr::map2(.x, vec_index(.x), .f, ...)
19. purrr:::map2_("list", .x, .y, .f, ..., .progress = .progress)
20. purrr:::with_indexed_errors(i = i, names = names, error_call = 
.purrr_error_call, …
21. base::withCallingHandlers(expr, error = function(cnd) { …
22. purrr:::call_with_cleanup(map2_impl, environment(), .type, .progress, …
23. local .f(.x[[i]], .y[[i]], ...)
24. pkgdown:::section_topics(section$contents, pkg$topics, pkg$src_path)
25. base::rbind(topics, ext_topics(ext_strings))
26. base::rbind(deparse.level, ...)
27. pkgdown:::ext_topics(ext_strings)
28. purrr::map2(pkg, fun, get_rd_from_help)
29. purrr:::map2_("list", .x, .y, .f, ..., .progress = .progress)
30. purrr:::with_indexed_errors(i = i, names = names, error_call = 
.purrr_error_call, …
31. base::withCallingHandlers(expr, error = function(cnd) { …
32. purrr:::call_with_cleanup(map2_impl, environment(), .type, .progress, …
33. local .f(.x[[i]], .y[[i]], ...)
34. rlang::check_installed(package, "as it's used in the reference index.")
35. base::stop(cnd)
36. (function (cnd) …
37. cli::cli_abort(message, location = i, name = name, parent = cnd, …
38. | rlang::abort(message, ..., call = call, use_cli_format = TRUE, …
39. | rlang:::signal_abort(cnd, .file)
40. | base::signalCondition(cnd)
41. (function (cnd) …
42. cli::cli_abort(message, location = i, name = name, parent = cnd, …
43. | rlang::abort(message, ..., call = call, use_cli_format = TRUE, …
44. | rlang:::signal_abort(cnd, .file)
45. | base::signalCondition(cnd)
46. global (function (e) …
Execution halted



On Jan 3, 2024, at 1:06 PM, Hadley Wickham <h.wick...@gmail.com> wrote:

CAUTION: The Sender of this email is not from within Dalhousie.
This bug is fixed in the dev version (I don’t remember off the top of my head 
in which of pkgdown and roxygen2 you need but it might be both). I’m planning 
CRAN updates for both in the near future.

Hadley

On Thursday, January 4, 2024, Daniel Kelley 
<kel...@dal.ca<mailto:kel...@dal.ca>> wrote:
# Question

Is there an online example online of specializing `plot()` for S7 objects, such 
that `pkgdown::build_site()` will produce webpages?  I ask because I find lots 
of users (of other packages) tend to consult websites made with pkgdown, rather 
than using the online help within R.  I think the problem I am having 
(discussed in the following sections) has to do with my specialization of 
plot().  I say that because when I was using S3 objects in an earlier version 
of my package, `pkgdown::build_site()` worked as intended.

# Background

In my 'mooring' package (https://github.com/dankelley/mooring/tree/S7), I am 
writing code like 
(https://github.com/dankelley/mooring/blob/f70b53ca12e88968f65710c205b50a64f750a99d/R/plot.R#L69)

```R
#' @aliases plot.mooring
#' ETC
`plot.mooring::mooring` <- plot(ETC) ETC
```

to handle objects made with 
(https://github.com/dankelley/mooring/blob/f70b53ca12e88968f65710c205b50a64f750a99d/R/oo.R#L2)

```R
mooringS7 <- S7::new_class("mooring",
    package = "mooring",
ETC
```

Built up in Rstudio, with Roxygen2 being used to create documentation, things 
seem to work, e.g.

```R
m <- mooring(anchor(), wire(length = 80), float(), waterDepth = 100)
plot(m)
```

produces a plot as intended, and

```R
?plot.mooring
```

produces documentation as intended.

*However* I encounter a problem comes when I try building a website with

```R
pkgdown::build_site()
```

This yields results as in the next section.  (I apologize for the length. I'm 
including the whole thing because I thought that would be less bothersome than 
writing another email to the list.)

I am not sure how to find the problem, and so I hope that someone on this list 
can point out an example of how to set up `plot()` to work with S7 objects, in 
such a way that documentation can be created with Roxygen2 and websites can be 
made with `pkgdown::build_site()`.

# What pkgdown::build_site() gives

```
> library(pkgdown)
> build_site()
Warning: Failed to parse usage:

S3method(`plot`, ``mooring::mooring``)(
  x,
  which = "shape",
  showInterfaces = TRUE,
  showDepths = FALSE,
  showLabels = TRUE,
  showDetails = FALSE,
  fancy = FALSE,
  title = "",
  mar = c(1.5, 3.5, 3.5, 1),
  mgp = c(2, 0.7, 0),
  xlim = NULL,
  xaxs = "r",
  yaxs = "r",
  type = "l",
  debug = 0,
  ...
)

-- Installing package into temporary library ----------------
== Building pkgdown site =======================================================
Reading from: '/Users/kelley/git/mooring'
Writing to:   '/Users/kelley/git/mooring/docs'
-- Initialising site -----------------------------------------------------------
-- Building home ---------------------------------------------------------------
Writing '404.html'
-- Building function reference -------------------------------------------------
Error:
! in callr subprocess.
Caused by error in `map2(.x, vec_index(.x), .f, ...)`:
! In index: 1.
ℹ See `$stdout` for standard output.
Type .Last.error to see the more details.
> .Last.error
<callr_error/rlib_error_3_0/rlib_error/error>
Error:
! in callr subprocess.
Caused by error in `map2(.x, vec_index(.x), .f, ...)`:
! In index: 1.
ℹ See `$stdout` for standard output.
---
Backtrace:
1. pkgdown::build_site()
2. pkgdown:::build_site_external(pkg = pkg, examples = examples, run…
3. callr::r(function(..., cli_colors, pkgdown_internet) { …
4. callr:::get_result(output = out, options)
5. callr:::throw(callr_remote_error(remerr, output), parent = fix_…
---
Subprocess backtrace:
 1. pkgdown::build_site(...)
 2. pkgdown:::build_site_local(pkg = pkg, examples = examples, run_do…
 3. pkgdown::build_reference(pkg, lazy = lazy, examples = examples, …
 4. pkgdown::build_reference_index(pkg)
 5. pkgdown::render_page(pkg, "reference-index", data = data_referen…
 6. pkgdown:::render_page_html(pkg, name = name, data = data, depth =…
 7. utils::modifyList(data_template(pkg, depth = depth), da…
 8. base::stopifnot(is.list(x), is.list(val))
 9. pkgdown:::data_reference_index(pkg)
10. meta %>% purrr::imap(data_reference_index_rows, pkg = p…
11. base::unlist(., recursive = FALSE)
12. purrr::compact(.)
13. purrr::discard(.x, function(x) is_empty(.f(x)))
14. purrr:::where_if(.x, .p, ...)
15. purrr:::map_(.x, .p, ..., .type = "logical", .purrr_error_call …
16. purrr:::vctrs_vec_compat(.x, .purrr_user_env)
17. purrr::imap(., data_reference_index_rows, pkg = pkg)
18. purrr::map2(.x, vec_index(.x), .f, ...)
19. purrr:::map2_("list", .x, .y, .f, ..., .progress = .progress)
20. purrr:::with_indexed_errors(i = i, names = names, error_call = …
21. base::withCallingHandlers(expr, error = function(cnd) { …
22. purrr:::call_with_cleanup(map2_impl, environment(), .type, .pro…
23. local .f(.x[[i]], .y[[i]], ...)
24. pkgdown:::section_topics(section$contents, pkg$topics, pkg$src_pa…
25. base::rbind(topics, ext_topics(ext_strings))
26. base::rbind(deparse.level, ...)
27. pkgdown:::ext_topics(ext_strings)
28. purrr::map2(pkg, fun, get_rd_from_help)
29. purrr:::map2_("list", .x, .y, .f, ..., .progress = .progress)
30. purrr:::with_indexed_errors(i = i, names = names, error_call = …
31. base::withCallingHandlers(expr, error = function(cnd) { …
32. purrr:::call_with_cleanup(map2_impl, environment(), .type, .pro…
33. local .f(.x[[i]], .y[[i]], ...)
34. rlang::check_installed(package, "as it's used in the reference…
35. base::stop(cnd)
36. (function (cnd) …
37. cli::cli_abort(message, location = i, name = name, pare…
38. | rlang::abort(message, ..., call = call, use_cli_format …
39. | rlang:::signal_abort(cnd, .file)
40. | base::signalCondition(cnd)
41. (function (cnd) …
42. cli::cli_abort(message, location = i, name = name, pare…
43. | rlang::abort(message, ..., call = call, use_cli_format …
44. | rlang:::signal_abort(cnd, .file)
45. | base::signalCondition(cnd)
46. global (function (e) …
```

______________________________________________
R-package-devel@r-project.org<mailto:R-package-devel@r-project.org> mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel


--
http://hadley.nz<http://hadley.nz/>


        [[alternative HTML version deleted]]

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to