View Source Changelog

main

main

v0-9-4

v0.9.4

improvements

Improvements

  • if statements: drop else clauses whose body is simply nil

v0-9-3

v0.9.3

fixes

Fixes

  • fix unless a do b else c end rewrites to if not flopping do/else bodies! (#77, h/t @jcowgar)
  • fix pipes styling ranges with steps (a..b//c) incorrectly (#76, h/t @cschmatzler)

v0-9-2

v0.9.2

fixes-1

Fixes

  • fix exception styling module attributes named @def (we confused them with real defs, whoops!) (#75, h/t @randycoulman)

v0-9-1

v0.9.1

the boolean blocks edition!

improvements-1

Improvements

  • auto-fix Credo.Check.Refactor.CondStatements (detects any truthy atom, not just true)
  • if/unless rewrites:
    • Credo.Check.Refactor.NegatedConditionsWithElse
    • Credo.Check.Refactor.NegatedConditionsInUnless
    • Credo.Check.Refactor.UnlessWithElse

v0-9-0

v0.9.0

the with statement edition!

improvements-2

Improvements

  • Added right-hand-pattern-matching rewrites to for and with left arrow expressions <- (ex: with map = %{} <- foo() => with %{} = map <- foo)
  • with statement rewrites, solving the following credo rules
    • Credo.Check.Readability.WithSingleClause
    • Credo.Check.Refactor.RedundantWithClauseResult
    • Credo.Check.Refactor.WithClauses

v0-8-5

v0.8.5

fixes-2

Fixes

  • Fixed exception when encountering non-arrowed case statements ala case foo, do: unquote(quoted) (#69, h/t @brettinternet, nice)

v0-8-4

v0.8.4

fixes-3

Fixes

v0-8-3

v0.8.3

improvements-3

Improvements

  • DateTime rewrites (#62, ht @milmazz)
    • DateTime.compare => DateTime.{before/after} (elixir >= 1.15)
    • Timex.now => DateTime.utc_now
    • Timex.today => Date.utc_today

fixes-4

Fixes

  • Pipes: add !=, !==, ===, and, and or to list of valid infix operators (#64)

v0-8-2

v0.8.2

fixes-5

Fixes

  • Pipes always de-sugars keyword lists when unpiping them (#60)

v0-8-1

v0.8.1

fixes-6

Fixes

  • ModuleDirectives doesn't mistake variables for directives (#57, h/t @leandrocp)

v0-8-0

v0.8.0

improvements-bug-fix

Improvements (Bug Fix!?)

  • ModuleDirectives no longer throws comments around a file when hoisting directives up (#53)

v0-7-14

v0.7.14

improvements-4

Improvements

  • rewrite Logger.warn/1,2 to Logger.warning/1,2 due to Elixir 1.15 deprecation

v0-7-13

v0.7.13

fixes-7

Fixes

  • don't unpipe single-piped unquote expressions (h/t @elliottneilclark)

v0-7-12

v0.7.12

fixes-8

Fixes

  • fix 0-arity paren removal on metaprogramming creating uncompilable code (h/t @simonprev)

v0-7-11

v0.7.11

fixes-9

Fixes

  • fix crash from mix style running plugins as part of formatting (no longer runs formatter plugins)

improvements-5

Improvements

  • single-quote charlists are rewritten to use the ~c sigil ('foo' -> ~c'foo') (h/t @fhunleth)
  • mix style warns the user that Styler is primarily meant to be used as a plugin

v0-7-10

v0.7.10

fixes-10

Fixes

  • fix crash when encountering single-quote charlists (h/t @fhunleth)

improvements-6

Improvements

  • single-quote charlists are rewritten to use the ~c sigil ('foo' -> ~c'foo')
  • when encountering _ = bar ->, replace it with bar ->

v0-7-9

v0.7.9

fixes-11

Fixes

  • Fix a toggle state resulting from (ahem, nonsense) code like _ = bar -> encountering ParameterPatternMatching style

v0-7-8

v0.7.8

fixes-12

Fixes

  • Fix crash trying to remove 0-arity parens from metaprogramming ala def unquote(foo)()

v0-7-7

v0.7.7

improvements-7

Improvements

  • Rewrite Enum.into/2,3 into Map.new/1,2 when the collectable is %{} or Map.new/0

v0-7-6

v0.7.6

fixes-13

Fixes

v0-7-5

v0.7.5

fixes-14

Fixes

  • Fix bug from ParameterPatternMatching implementation that re-ordered pattern matching in cond do -> clauses

v0-7-4

v0.7.4

features

Features

  • Implement Credo.Check.Readability.PreferImplicitTry
  • Implement Credo.Check.Consistency.ParameterPatternMatching for def|defp|fn|case

v0-7-3

v0.7.3

features-1

Features

  • Remove parens from 0-arity function definitions (Credo.Check.Readability.ParenthesesOnZeroArityDefs)

v0-7-2

v0.7.2

features-2

Features

  • Rewrite case ... true -> ...; _ -> ... to if statements as well

v0-7-1

v0.7.1

features-3

Features

  • Rewrite case ... true / else -> to be if statements

v0-7-0

v0.7.0

features-4

Features

  • Styler.Style.Simple:
    • Optimize Enum.reverse(foo) ++ bar to Enum.reverse(foo, bar)
  • Styler.Style.Pipes:
    • Rewrite |> (& ...).() to |> then(& ...) (Credo.Check.Readability.PipeIntoAnonymousFunctions)
    • Add parens to 1-arity pipe functions (Credo.Check.Readability.OneArityFunctionInPipe)
    • Optimize a |> Enum.reverse() |> Enum.concat(enum) to Enum.reverse(a, enum)

v0-6-1

v0.6.1

improvements-8

Improvements

  • Better error handling: mix format will still format files if a style fails

fixes-15

Fixes

  • mix style: only run on .ex and .exs files
  • ModuleDirectives: now expands alias __MODULE__.{A, B} (h/t @adriankumpf)

v0-6-0

v0.6.0

features-5

Features

  • mix style: brought back to life for folks who want to incrementally introduce Styler

fixes-16

Fixes

  • Styler.Style.Pipes:
    • include x in y and ^foo (for ecto) as a valid pipe starts
    • work even harder to keep rewrites on one line

v0-5-2

v0.5.2

fixes-17

Fixes

  • ModuleDirectives: handle dynamic module names
  • Pipes: include Ecto.Query.from and Query.from as valid pipe starts

v0-5-1

v0.5.1

improvements-9

Improvements

  • Sped up styling just a little bit

v0-5-0

v0.5.0

improvements-10

Improvements

  • Styler now implements Mix.Task.Format, meaning it is now an Elixir formatter plugin. See the README for new installation & usage instructions

breaking-change-wooo

Breaking Change! Wooo!

v0-4-1

v0.4.1

improvements-11

Improvements

  • Pipes rewrites |> Enum.into(%{}[, mapper]) and Enum.into(Map.new()[, mapper]) to Map.new/1,2 calls

v0-4-0

v0.4.0

improvements-12

Improvements

  • Pipes rewrites some two-step processes into one, fixing these credo issues in pipe chains:
    • Credo.Check.Refactor.FilterCount
    • Credo.Check.Refactor.MapJoin
    • Credo.Check.Refactor.MapInto

fixes-18

Fixes

  • ModuleDirectives handles even weirder places to hide your aliases (anonymous functions, in this case)
  • Pipes tries even harder to keep single-pipe rewrites of invocations on one line

v0-3-1

v0.3.1

fixes-19

Fixes

  • Pipes
    • fixed omission of == as a valid pipe start operator (h/t @peake100 for the issue)
    • fixed rewrite of a |> b, where b was invoked without parenthesis

v0-3-0

v0.3.0

improvements-13

Improvements

  • Enabled Defs style and overhauled it to properly handles comments
  • Optimized and tweaked ModuleDirectives style
    • Now culls newlines between "groups" of the same directive
    • sorts @behaviour directives
    • orders directives within non defmodule contexts (eg, a def do) if there's at least one alias|require|use|import

fixes-20

Fixes

  • Pipes will try to keep single-pipe rewrites on one line

v0-2-0

v0.2.0

improvements-14

Improvements

  • Added ModuleDirectives style
    • Note that this is potentially destructive in some rare cases. See moduledoc for more.
    • This supersedes the Aliases style, which has been removed.
  • mix style - reads and writes to stdin/stdout

fixes-21

Fixes

  • Pipes style is now aware of unless blocks

v0-1-1

v0.1.1

improvements-15

Improvements

  • Lots of README tweaking =)
  • Optimized some Zipper operations
  • Added Simple style, replacing the following Credo rule:
    • Credo.Check.Readability.LargeNumbers

fixes-22

Fixes

  • Exceptions while parsing code now appropriately render filename rather than nofile:xx
  • Fixed opaque Zipper.path() typespec implementation mismatches (thanks @sega-yarkin)
  • Made ex_doc dev only, removing it as a dependency for users of Styler

v0-1-0

v0.1.0

improvements-16

Improvements

  • Initial release of Styler
  • Added Aliases style, replacing the following Credo rules:
    • Credo.Check.Readability.AliasOrder
    • Credo.Check.Readability.MultiAlias
    • Credo.Check.Readability.UnnecessaryAliasExpansion
  • Added Pipes style, replacing the following Credo rules:
    • Credo.Check.Readability.BlockPipe
    • Credo.Check.Readability.SinglePipe
    • Credo.Check.Refactor.PipeChainStart
  • Added Defs style (currently disabled by default)