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.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