Provides elm-review
rules to forbid pipelines for code-style reasons.
ReviewPipelineStyles - Reports pipelines that are not valid by user-defined rules.For example, the usage of <| or the usage of excessively-long |> pipelines.
This rule works with the following pipeline types:
|> -- Right "pizza" pipelines, i.e. right function application, so-called
because the operator resembles a slice of pizza 🍕.<| -- Left "pizza" pipelines, i.e. left function application, so-called
because the operator resembles a slice of pizza 🍕.>> -- Right composition pipelines.<< -- Left composition pipelines.foo (bar (baz (i (j k)))) -- Parenthetical application pipelines.If you don't know where to start, be sure to check out
ReviewPipelineStyles.Premade
for some ready-made rules, as well as examples of how to construct them.
import Review.Rule exposing (Rule)
import ReviewPipelineStyles
import ReviewPipelineStyles.Premade
exposing
( noMultilineLeftPizza
, noPipelinesWithConfusingNonCommutativeFunctions
, noPipelinesWithSimpleInputs
, noRepeatedParentheticalApplication
, noSemanticallyInfixFunctionsInLeftPipelines
, noSingleLineRightPizza
)
config : List Rule
config =
[ ReviewPipelineStyles.rule <|
List.concat
[ noMultilineLeftPizza
, noSingleLineRightPizza
, noPipelinesWithSimpleInputs
, noRepeatedParentheticalApplication
, noPipelinesWithConfusingNonCommutativeFunctions
, noSemanticallyInfixFunctionsInLeftPipelines
]
]You can try the example configuration above out by running the following command:
elm-review --template SiriusStarr/elm-review-pipeline-styles/example1.3.1 -- 🐛 Fix aSemanticallyInfixFunction. Previously, it did not check
how many args were applied, leading to it flagging things as infix that
weren't yet infix, because no args had been applied. Now it requires exactly
one arg to be applied.1.3.0noPipelinesWithSimpleInputs.
Now flags all unnecessary left inputs (since the operator does not
improve clarity in any way), but only flags simple (non-semantic) right
inputs.noPipelinesWithConfusingNonCommutativeFunctions.
Now only flags all non-commutative functions in right pipelines, whereas
only confusing prefix operators are flagged in left/parenthetical
pipelines, as the other functions are in the correct argument order.StepPredicate:
aConfusingNonCommutativePrefixOperator
This only flags non-commutative prefix operators rather than also flagging
e.g. compare.1.2.0noMultilineLeftComposition
and noSingleLineRightComposition
premade rules.1.1.0ReviewPipelineStyles.Premade
module. The documentation for these rules includes the source for how to construct them as a sort of tutorial to learn to create your own.StepPredicates. Easily inspect
individual steps of pipelines!elm-syntax to avoid mangling fixes involving some lambdas.1.0.0 -- Initial release