From 0ac82a309b7b68abdd6269163692aaefc9c8b7ef Mon Sep 17 00:00:00 2001 From: Chris McCord Date: Tue, 30 Aug 2022 10:29:18 -0400 Subject: [PATCH] Avoid duplicate work --- lib/heroicons/generator.ex | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/heroicons/generator.ex b/lib/heroicons/generator.ex index 6ebcb6a..4ad02b9 100644 --- a/lib/heroicons/generator.ex +++ b/lib/heroicons/generator.ex @@ -5,6 +5,15 @@ defmodule Heroicons.Generator do |> Path.join("*.svg") |> Path.wildcard() + require Phoenix.Component + if function_exported?(Phoenix.Component, :assigns_to_attributes, 2) do + Module.put_attribute(__CALLER__.module, :assign_mod, Phoenix.Component) + Module.put_attribute(__CALLER__.module, :assigns_to_attrs_mod, Phoenix.Component) + else + Module.put_attribute(__CALLER__.module, :assign_mod, Phoenix.LiveView) + Module.put_attribute(__CALLER__.module, :assigns_to_attrs_mod, Phoenix.LiveView.Helpers) + end + for path <- icon_paths do generate(path) end @@ -43,16 +52,9 @@ defmodule Heroicons.Generator do @doc unquote(doc) def unquote(name)(assigns_or_opts \\ []) - - if function_exported?(Phoenix.Component, :assigns_to_attributes, 2) do - @assigns_to_attrs_mod Phoenix.Component - else - @assigns_to_attrs_mod Phoenix.LiveView.Helpers - end - def unquote(name)(var!(assigns)) when is_map(var!(assigns)) do var!(attrs) = @assigns_to_attrs_mod.assigns_to_attributes(var!(assigns)) - var!(assigns) = Phoenix.LiveView.assign(var!(assigns), :attrs, var!(attrs)) + var!(assigns) = @assign_mod.assign(var!(assigns), :attrs, var!(attrs)) unquote( EEx.compile_string(head <> "{@attrs}" <> body,