-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
135 lines (97 loc) · 4.09 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r setup, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# err <img src="man/figures/logo.png" align="right" />
<!-- badges: start -->
[![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable)
[![R-CMD-check](https://github.com/poissonconsulting/err/workflows/R-CMD-check/badge.svg)](https://github.com/poissonconsulting/err/actions)
[![Coverage status](https://codecov.io/gh/poissonconsulting/err/branch/master/graph/badge.svg)](https://codecov.io/github/poissonconsulting/err?branch=master)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![CRAN status](https://www.r-pkg.org/badges/version/err)](https://cran.r-project.org/package=err)
![CRAN Downloads](http://cranlogs.r-pkg.org/badges/err)
<!-- badges: end -->
## Introduction
> To err is human - Alexander Pope (1711)
`err` is a light-weight R package to produce customizable number and object sensitive error and warning messages.
## Demonstration
### Object Sensitive
The `co` functions produce object sensitive strings.
```{r}
library(err)
fox <- c("The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog")
co(fox)
co(fox[1])
co(fox[0])
co(fox, nlots = 5)
```
### Customizable
The object sensitive strings are fully customized.
```{r}
one <- "darn! the vector %o of length %n has the following value: %c"
none <- "phew! vector %o is empty"
some <- "rats! vector %o has the following %n element%s: %c"
lots <- "really?! the %n elements of vector %o are too numerous to print"
co(fox[0], one = one, none = none, some = some, lots = lots, nlots = 5)
co(fox[1], one = one, none = none, some = some, lots = lots, nlots = 5)
co(fox[1:3], one = one, none = none, some = some, lots = lots, nlots = 5)
co(fox[1:5], one = one, none = none, some = some, lots = lots, nlots = 5)
```
The following `sprintf`-like types can be used in the custom messages:
- `%c`: the object as a comma separated list (produced by a `cc` function)
- `%n`: the length of the object
- `%o`: the name of the object
- `%s`: 's' if n != 1 otherwise ''
- `%r`: 'are' if n != 1 otherwise 'is'
And there are various formatting options
```{r}
co(fox[1:6], conjunction = "or", bracket = "|", oxford = TRUE, ellipsis = 5)
```
### Data Frames
There is also a method for data frames.
```{r}
cat(co(datasets::mtcars, conjunction = "and", oxford = TRUE, ellipsis = 5))
```
### Number Sensitive
The `cn` function produces number sensitive customizable messages
```{r}
cn(0)
cn(1)
cn(2)
cn(100, lots = "there %r %n value%s - this is a lot")
```
### Warning and Error Messages
The `co` and `cn` functions can be combined with the wrappers `msg`, `wrn` and `err` to produce a message, warning and error (without the call as part of the warning/error message).
```{r, error = TRUE}
msg(cn(2))
wrn(cn(2))
err(cn(2))
```
## Installation
To install the latest release version from [CRAN](https://cran.r-project.org)
```
install.packages("err")
```
To install the latest development version from [GitHub](https://github.com/poissonconsulting/err)
```
if(!"devtools" %in% installed.packages()[,1])
install.packages("devtools")
devtools::install_github("poissonconsulting/err")
```
## Inspiration
[`concatenate`](https://github.com/jamesdunham/concatenate) by [James Dunham](https://github.com/jamesdunham)
## Contribution
Please report any [issues](https://github.com/poissonconsulting/err/issues).
[Pull requests](https://github.com/poissonconsulting/err/pulls) are always welcome.
Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md).
By participating in this project you agree to abide by its terms.
## Code of Conduct
Please note that the err project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.