CRAN status downloads R-win build status R-mac build status R-linux build status Codecov test coverage Covrpage Summary

details

Suppose you’re opening an issue in GitHub and there’s a lot noisey logs that may be useful or you want to add the sessionInfo() to the end of the issue.

Rather than wrecking readability, wrapping it in a <details> tag is a great solution

<details>
 <summary>Summary Goes Here</summary>
 ...this is hidden, collapsable content...
</details>

Doing this manually every time is a pain.

details is a package lets you create and customize details blocks for markdown documents and Roxygen2 documentation within R.

Installation

CRAN

install.packages("details")

Dev

remotes::install_github("yonicd/details")

Markdown

Input

The function details::details can handle inputs

Output

The function details::details can output the result to

Examples

One the most popular uses for details is to paste the sessioninfo at the bottom of a GitHub issue.

library(details)

sessioninfo::session_info()%>%
  details::details(summary = 'current session info')

current session info

─ Session info ───────────────────────────────────────────────────────────────
 setting  value                       
 version  R version 4.1.0 (2021-05-18)
 os       macOS Big Sur 10.16         
 system   x86_64, darwin17.0          
 ui       X11                         
 language (EN)                        
 collate  en_US.UTF-8                 
 ctype    en_US.UTF-8                 
 tz       America/New_York            
 date     2022-03-27                  

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date       lib source            
 cli           3.2.0   2022-02-14 [1] standard (@3.2.0) 
 clipr         0.7.1   2020-10-08 [1] standard (@0.7.1) 
 desc          1.4.1   2022-03-06 [1] standard (@1.4.1) 
 details     * 0.2.1   2020-01-12 [1] standard (@0.2.1) 
 digest        0.6.27  2020-10-24 [1] standard (@0.6.27)
 evaluate      0.14    2019-05-28 [1] standard (@0.14)  
 fastmap       1.1.0   2021-01-25 [1] standard (@1.1.0) 
 htmltools     0.5.2   2021-08-25 [1] standard (@0.5.2) 
 httr          1.4.2   2020-07-20 [1] standard (@1.4.2) 
 knitr         1.37    2021-12-16 [1] standard (@1.37)  
 magrittr      2.0.1   2020-11-17 [1] standard (@2.0.1) 
 png           0.1-7   2013-12-03 [1] standard (@0.1-7) 
 R6            2.5.0   2020-10-28 [1] standard (@2.5.0) 
 rlang         0.4.11  2021-04-30 [1] standard (@0.4.11)
 rmarkdown     2.13    2022-03-10 [1] standard (@2.13)  
 rprojroot     2.0.2   2020-11-15 [1] standard (@2.0.2) 
 rstudioapi    0.13    2020-11-12 [1] standard (@0.13)  
 sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.1.0)    
 stringi       1.7.6   2021-11-29 [1] standard (@1.7.6) 
 stringr       1.4.0   2019-02-10 [1] standard (@1.4.0) 
 withr         2.5.0   2022-03-03 [1] standard (@2.5.0) 
 xfun          0.30    2022-03-02 [1] standard (@0.30)  
 xml2          1.3.2   2020-04-23 [1] standard (@1.3.2) 
 yaml          2.3.5   2022-02-21 [1] standard (@2.3.5) 

[1] /Users/yonis/Library/R/x86_64/4.1/library
[2] /Library/Frameworks/R.framework/Versions/4.1/Resources/library


You can also use the knitr chunk engine that is shipped with details to created outputs in Rmarkdown documents.

```{details, echo = FALSE, details.summary = 'current session info'}
sessioninfo::session_info()
```

current session info

─ Session info ───────────────────────────────────────────────────────────────
 setting  value                       
 version  R version 4.1.0 (2021-05-18)
 os       macOS Big Sur 10.16         
 system   x86_64, darwin17.0          
 ui       X11                         
 language (EN)                        
 collate  en_US.UTF-8                 
 ctype    en_US.UTF-8                 
 tz       America/New_York            
 date     2022-03-27                  

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date       lib source            
 cli           3.2.0   2022-02-14 [1] standard (@3.2.0) 
 clipr         0.7.1   2020-10-08 [1] standard (@0.7.1) 
 desc          1.4.1   2022-03-06 [1] standard (@1.4.1) 
 details     * 0.2.1   2020-01-12 [1] standard (@0.2.1) 
 digest        0.6.27  2020-10-24 [1] standard (@0.6.27)
 evaluate      0.14    2019-05-28 [1] standard (@0.14)  
 fastmap       1.1.0   2021-01-25 [1] standard (@1.1.0) 
 htmltools     0.5.2   2021-08-25 [1] standard (@0.5.2) 
 httr          1.4.2   2020-07-20 [1] standard (@1.4.2) 
 knitr         1.37    2021-12-16 [1] standard (@1.37)  
 magrittr      2.0.1   2020-11-17 [1] standard (@2.0.1) 
 png           0.1-7   2013-12-03 [1] standard (@0.1-7) 
 R6            2.5.0   2020-10-28 [1] standard (@2.5.0) 
 rlang         0.4.11  2021-04-30 [1] standard (@0.4.11)
 rmarkdown     2.13    2022-03-10 [1] standard (@2.13)  
 rprojroot     2.0.2   2020-11-15 [1] standard (@2.0.2) 
 rstudioapi    0.13    2020-11-12 [1] standard (@0.13)  
 sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 4.1.0)    
 stringi       1.7.6   2021-11-29 [1] standard (@1.7.6) 
 stringr       1.4.0   2019-02-10 [1] standard (@1.4.0) 
 withr         2.5.0   2022-03-03 [1] standard (@2.5.0) 
 xfun          0.30    2022-03-02 [1] standard (@0.30)  
 xml2          1.3.2   2020-04-23 [1] standard (@1.3.2) 
 yaml          2.3.5   2022-02-21 [1] standard (@2.3.5) 

[1] /Users/yonis/Library/R/x86_64/4.1/library
[2] /Library/Frameworks/R.framework/Versions/4.1/Resources/library


There are a number of objects that can be placed in a details block other than a character object. An example of a object is a device output such as a plot

details(plot(x=mtcars$mpg,y=mtcars$wt), summary = 'My plot')

My plot


Package Documentation

Many times in documentation there is a lot to say, but you do not want to overwhelm the user.

To solve this we can use folding blocks in the documentation (which are then rendered into pkgdown website automatically)

Setup

To make it easy to set up the DESCRIPTION file of your package so you can use details macros run the following :

use_details('PATH_TO_DESCRIPTION_FILE')

This will append three elements to the DESCRIPTION file

Usage

You can use this feature by wrapping documentation with the macros

\foldstart{[SUMMARY TEXT]}

#' DOCUMENTATION
#' ...
#' DOCUMENTATION

\foldend

The SUMMARY_TEXT is optional, where the folded block will have a header of SUMMARY TEXT.

The default will display details.

These folded blocks can be inserted anywhere in the documentation, eg @description, @param, @details, @return, ….

Vignettes

More information can be found in the articles of the package site.

Code of Conduct

Please note that the ‘details’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.