Skip to content

v0.1.0

Latest

Choose a tag to compare

@foxbenjaminfox foxbenjaminfox released this 07 Sep 06:18
· 2 commits to master since this release

Initial release.

Added

  • Eleven mutator families over the Decimal call surface, each reported under
    its own name and independently enable-able:
    • Mutare.Decimal.Arithmetic (:decimal_arithmetic) — swaps same-arity
      arithmetic calls (add/sub/mult/div/div_int/rem) and reverses
      visible operands of the non-commutative ones.
    • Mutare.Decimal.Comparison (:decimal_comparison) — swaps comparison
      predicates (gt?/gte?/lt?/lte?), min/max, and reverses operands
      of compare/2,3 and the deprecated cmp/2.
    • Mutare.Decimal.Classification (:decimal_classification) — swaps
      classification predicates (positive?negative?, nan?inf?).
    • Mutare.Decimal.ZeroBoundary (:decimal_zero_boundary) — replaces
      positive?/negative? with inclusive zero-boundary comparisons.
    • Mutare.Decimal.Sign (:decimal_sign) — swaps abs/1negate/1 and
      flips literal signs in Decimal.new/3.
    • Mutare.Decimal.DivRem (:decimal_div_rem) — rebuilds div_rem/2 with
      the quotient/remainder pair in the wrong tuple order.
    • Mutare.Decimal.Transform (:decimal_transform) — removes
      value-transforming calls (normalize, apply_context, abs, negate,
      sqrt, round/1,2,3).
    • Mutare.Decimal.ModeSwap (:decimal_mode_swap) — swaps round/3
      rounding modes and to_string/2,3 output formats.
    • Mutare.Decimal.DefaultDrop (:decimal_default_drop) — drops
      refinement/default arguments (round/2,3, compare/3, eq?/3).
    • Mutare.Decimal.LimitsDrop (:decimal_limits_drop) — drops
      parsing/rendering limit arguments (parse/2, cast/2, new/2,
      to_string/2,3).
    • Mutare.Decimal.Context (:decimal_context) — removes
      Decimal.Context.with/set/update effects.
  • Calls match written qualified, aliased, imported, or as a pipe stage.
  • Ignore-variant labels on every mutation (target operation, mode, dropped
    argument, or operation kind), so # mutare:ignore[family:label] can
    suppress a single variant.
  • Mutare.Decimal.all/0 for splicing all families into a :mutators list.

Supports Decimal >= 2.2.0 and < 4.0.0.