oneliner - a new style guide for styler
Apr 1, 2018 00:00 · 326 words · 2 minute read
This article was also published on r-bloggers.com
I am happy to introduce oneliner, a package that implements the one-line-style as a third-party style guide ready to use with styler. Hence, after the tidyverse style guide, this is the first third-party style guide for styler I am aware of - and a particularly useful one.
Let’s see an example
# remotes::install_github("lorenzwalthert/oneliner")
library(oneliner)
style_text(
"sum <- function(x, y) {
x + # hi
y
}
1 + 1",
style = one_line_style
)
#> sum<-function(x,y){x+y};1+1
You can also use other interfaces such as styler::style_pkg(..., style = oneliner::one_line_style )
to style entire source trees.
As you can guess from the name and the code above, the style guide has three rules only:
- Remove all comments.
- Remove (almost all) spaces possible.
- Put all code on one line.
Compared to the tidyverse style guide, which contains 37 sections organized in seven chapters (with each section typically containing multiple rules), one-line-style is a great simplification to say the least. Further advantages of the style guide proposed include:
- Entirely self-explanatory (probably biggest plus).
- It ends the tabs / spaces indention war in an unexpected and elegant way.
- You don’t need to worry about EOL markers.
- You can easily export to csv. One command per column.
- People (including you) can’t read your code and think you are a genius.
- and so on.
I am sure I have convinced you that this style guide rocks. This is for real programmers. All code on one line. No spaces or comments. I am serious. Use this style guide to format your code like nerds do. Or if you quit a company and you want to give your team mates a little challenge.
As a final note, be aware that you can always use the tidyverse style guide on code that was styled according to one-line-style because the AST should not be changed with one-line-style.
library("styler")
style_text("sum<-function(x,y){x+y};1+1", style = tidyverse_style)
#> sum <- function(x, y) {
#> x + y
#> }
#> 1 + 1