From 21d57c0e2a19f6502d505c39c109b91d31bf4437 Mon Sep 17 00:00:00 2001 From: Emily Guthrie Date: Wed, 5 Feb 2025 08:36:54 -0800 Subject: [PATCH] Add flag to toggle rewriting deprecations --- README.md | 2 +- lib/quokka/config.ex | 16 +++++++++++----- test/config_test.exs | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 095d622..6401ae9 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ Quokka can be configured in your `.formatter.exs` file Quokka has several configuration options: - `:reorder_configs`, which controls whether or not the configs in your `config/*.exs` files are alphabetized. This is true by default. - +- `:rewrite_deprecations`, which controls whether or not Quokka will rewrite deprecated functions to their new form. This is true by default. ## WARNING: Quokka can change the behaviour of your program! In some cases, this can introduce bugs. It goes without saying, but look over your changes before committing to main :) diff --git a/lib/quokka/config.ex b/lib/quokka/config.ex index ae757c2..18e74a8 100644 --- a/lib/quokka/config.ex +++ b/lib/quokka/config.ex @@ -58,6 +58,9 @@ defmodule Quokka.Config do reorder_configs = if is_nil(config[:reorder_configs]), do: true, else: config[:reorder_configs] + rewrite_deprecations = + if is_nil(config[:rewrite_deprecations]), do: true, else: config[:rewrite_deprecations] + :persistent_term.put(@key, %{ block_pipe_flag: credo_opts[:block_pipe_flag] || false, block_pipe_exclude: credo_opts[:block_pipe_exclude] || [], @@ -67,6 +70,7 @@ defmodule Quokka.Config do pipe_chain_start_excluded_functions: credo_opts[:pipe_chain_start_excluded_functions] || [], pipe_chain_start_excluded_argument_types: credo_opts[:pipe_chain_start_excluded_argument_types] || [], reorder_configs: reorder_configs, + rewrite_deprecations: rewrite_deprecations, lift_alias: credo_opts[:lift_alias] || false, lift_alias_depth: credo_opts[:lift_alias_depth] || 0, lift_alias_excluded_namespaces: MapSet.new(lift_alias_excluded_namespaces ++ @stdlib), @@ -91,11 +95,13 @@ defmodule Quokka.Config do end def get_styles() do - if get(:reorder_configs) == true do - @styles - else - @styles -- [Configs] - end + @styles + |> maybe_remove_style(Configs, :reorder_configs) + |> maybe_remove_style(Quokka.Style.Deprecations, :rewrite_deprecations) + end + + defp maybe_remove_style(styles, module, flag_name) do + if get(flag_name) != true, do: styles -- [module], else: styles end def sort_order() do diff --git a/test/config_test.exs b/test/config_test.exs index fdd93fb..de1da1d 100644 --- a/test/config_test.exs +++ b/test/config_test.exs @@ -6,4 +6,20 @@ defmodule Quokka.ConfigTest do test "no config is good times" do assert :ok = set!([]) end + + test "rewrite deprecations flag is respected" do + assert :ok = set!(rewrite_deprecations: false) + assert Quokka.Style.Deprecations not in Quokka.Config.get_styles() + + assert :ok = set!(rewrite_deprecations: true) + assert Quokka.Style.Deprecations in Quokka.Config.get_styles() + end + + test "reorder configs flag is respected" do + assert :ok = set!(reorder_configs: false) + assert Quokka.Style.Configs not in Quokka.Config.get_styles() + + assert :ok = set!(reorder_configs: true) + assert Quokka.Style.Configs in Quokka.Config.get_styles() + end end