oneliner - a new style guide for styler

Apr 1, 2018 00:00 · 308 words · 2 minute read packages styler

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

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
tweet Share