# nolint start

Installation

Compared to many other R packages, ‘box’ uses a somewhat different development workflow:

While ‘box’ uses ‘devtools’ and ‘roxygen2’ to generate documentation and package infrastructure, generated code and data is not checked into version control! This means in particular that the project does not contain a NAMESPACE file, since that is auto-(re)generated by tools. Therefore, attempting to install the current development version of ‘box’ via pak::pak('klmr/box') or equivalent means will fail!

Instead, an up-to-date, automatically generated build of the development version of ‘box’ should be installed from R-Universe:

install.packages('box', repos = 'https://klmr.r-universe.dev')

… or from the corresponding build branch:

pak::pak('klmr/box@build')

Alternatively it can be built manually using the instructions below.

Development

Building

The project contains a Makefile written in the GNU Make dialect that contains various development utilities. Invoking make without target will show a list of available targets with short descriptions. Using this Makefile isn’t necessary, but it helps. In particular:

Branches

All new code should be developed on a new branch with a name prefixed fix/ (for bug fixes), feature/ (for new features/enhancements), and chore/ (for any other contributions: fixed typos, project infrastructure, tests, etc.). Branches for pull requests will be merged into the main branch.

Code style

The code style of ‘box’ is similar to the Tidyverse style guide, but with several notable differences:

Rationale: using capital letters in file extensions is a pointless violation of established convention that creates unnecessary inconsistencies.

Rationale: a function declaration in R does not use function call syntax; rather, it’s a special syntactic construct equivalent to if and while, so the same formatting conventions apply.

Rationale: raw strings cannot be used since ‘box’ supports R versions pre R 4.0.

# nolint end


klmr/box documentation built on Feb. 15, 2025, 12:59 a.m.