From c4dab8df258d7128be99aaf2d34d9982749a34e0 Mon Sep 17 00:00:00 2001 From: bardoor Date: Tue, 21 Oct 2025 00:54:18 +0300 Subject: [PATCH 1/2] refactor(then): mix format --- lib/then.ex | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/lib/then.ex b/lib/then.ex index 2947982..8e903d1 100644 --- a/lib/then.ex +++ b/lib/then.ex @@ -11,13 +11,19 @@ defmodule Then do defmacro __using__(_opts) do quote do Module.register_attribute(__MODULE__, :then, persist: false) - Module.register_attribute(__MODULE__, :functions_with_then, accumulate: true, persist: false) + + Module.register_attribute(__MODULE__, :functions_with_then, + accumulate: true, + persist: false + ) + @on_definition Then @before_compile Then end end - def __on_definition__(env, kind, function_name, args, _guards, _body) when kind in [:def, :defp] do + def __on_definition__(env, kind, function_name, args, _guards, _body) + when kind in [:def, :defp] do then_callback = Module.get_attribute(env.module, :then) if then_callback do @@ -32,11 +38,16 @@ defmodule Then do raise CompileError, file: env.file, line: env.line, - description: "Multiple @then attributes for function #{function_name}/#{arity}. " <> - "Only one @then per function is allowed." + description: + "Multiple @then attributes for function #{function_name}/#{arity}. " <> + "Only one @then per function is allowed." end - Module.put_attribute(env.module, :functions_with_then, {function_name, arity, validated_callback}) + Module.put_attribute( + env.module, + :functions_with_then, + {function_name, arity, validated_callback} + ) end end @@ -62,7 +73,8 @@ defmodule Then do raise CompileError, file: env.file, line: env.line, - description: "Invalid @then format. Expected :function_name or {Module, :function_name}, got: #{inspect(callback)}" + description: + "Invalid @then format. Expected :function_name or {Module, :function_name}, got: #{inspect(callback)}" end end From 3339919fc7d19ea60c81684c7eb28b07b064d69f Mon Sep 17 00:00:00 2001 From: bardoor Date: Tue, 21 Oct 2025 01:15:37 +0300 Subject: [PATCH 2/2] deps: add credo --- mix.exs | 3 ++- mix.lock | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index a9e9668..d7a0944 100644 --- a/mix.exs +++ b/mix.exs @@ -52,7 +52,8 @@ defmodule Then.MixProject do defp deps do [ - {:ex_doc, "~> 0.14", only: :dev, runtime: false} + {:ex_doc, "~> 0.14", only: :dev, runtime: false}, + {:credo, "~> 1.7", only: :dev, runtime: false} ] end end diff --git a/mix.lock b/mix.lock index cc0e73b..4205f63 100644 --- a/mix.lock +++ b/mix.lock @@ -1,6 +1,10 @@ %{ + "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, + "credo": {:hex, :credo, "1.7.13", "126a0697df6b7b71cd18c81bc92335297839a806b6f62b61d417500d1070ff4e", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "47641e6d2bbff1e241e87695b29f617f1a8f912adea34296fb10ecc3d7e9e84f"}, "earmark_parser": {:hex, :earmark_parser, "1.4.44", "f20830dd6b5c77afe2b063777ddbbff09f9759396500cdbe7523efd58d7a339c", [:mix], [], "hexpm", "4778ac752b4701a5599215f7030989c989ffdc4f6df457c5f36938cc2d2a2750"}, "ex_doc": {:hex, :ex_doc, "0.38.3", "ddafe36b8e9fe101c093620879f6604f6254861a95133022101c08e75e6c759a", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "ecaa785456a67f63b4e7d7f200e8832fa108279e7eb73fd9928e7e66215a01f9"}, + "file_system": {:hex, :file_system, "1.1.1", "31864f4685b0148f25bd3fbef2b1228457c0c89024ad67f7a81a3ffbc0bbad3a", [:mix], [], "hexpm", "7a15ff97dfe526aeefb090a7a9d3d03aa907e100e262a0f8f7746b78f8f87a5d"}, + "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, "makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"}, "makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"},