Packages
phoenix_webcomponent
3.1.2
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
3.1.5
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
2.8.0
2.7.0
2.6.0
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.0
2.3.6
2.3.5
2.3.4
2.3.3
2.3.2
2.3.1
2.2.3
2.2.2
2.2.1
2.2.0
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.0
1.2.0
1.1.1
1.1.0
1.0.0
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
0.0.0
Phoenix view functions for working with WebComponent
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/gen_rs_icon.ex
defmodule Mix.Tasks.PhxWc.GenRsIcons do
# Generate Material Design Icons and Bootstrap Icons to yew components
@moduledoc """
Generate mdi.rs or bsi.rs fron svg files.
"""
use Mix.Task
@shortdoc "Generate mdi.rs or bsi.rs file"
def run(["mdi"]) do
Mix.Task.run("app.start")
ns = "MD"
icons =
File.ls!(Application.app_dir(:phoenix_webcomponent, "priv/mdi/svg"))
|> Enum.filter(&String.ends_with?(&1, ".svg"))
|> Enum.map(&String.trim(&1, ".svg"))
icon_names =
icons
|> Enum.map(fn name ->
name |> String.split("-") |> Enum.map(&String.capitalize/1) |> Enum.join("")
end)
wd = Path.expand("../../../mdi", __DIR__)
File.mkdir_p!(wd)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_mod.eex")
{result, _bindings} = Code.eval_quoted(quoted, icons: icons, icon_names: icon_names, ns: ns)
fl = "#{wd}/mod.rs"
File.write!(fl, result)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_props.eex")
{result, _bindings} = Code.eval_quoted(quoted, ns: ns)
fl = "#{wd}/props.rs"
File.write!(fl, result)
icons
|> Enum.each(fn name ->
inner =
File.read!(Application.app_dir(:phoenix_webcomponent, "priv/mdi/svg/#{name}.svg"))
|> String.replace(~r/<svg[^>]+>/, "")
|> String.replace("</svg>", "")
|> String.trim()
quoted = EEx.compile_file("#{__DIR__}/yew_icon_item.eex")
{result, _bindings} =
Code.eval_quoted(quoted, ns: ns, name: name, inner: inner, vb: "0 0 24 24")
fl = "#{wd}/icon_#{name |> String.replace("-", "_")}.rs"
File.write!(fl, result)
end)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_names.eex")
{result, _bindings} =
Code.eval_quoted(quoted, icons: icons, icon_names: icon_names, ns: ns, mod_name: "mdi")
fl = "#{wd}/mdi_names.rs"
File.write!(fl, result)
end
def run(["bsi"]) do
Mix.Task.run("app.start")
ns = "BS"
icons =
File.ls!(Application.app_dir(:phoenix_webcomponent, "priv/bsi/svg"))
|> Enum.filter(&String.ends_with?(&1, ".svg"))
|> Enum.map(&String.trim(&1, ".svg"))
icon_names =
icons
|> Enum.map(fn name ->
name |> String.split("-") |> Enum.map(&String.capitalize/1) |> Enum.join("")
end)
wd = Path.expand("../../../bsi", __DIR__)
File.mkdir_p!(wd)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_mod.eex")
{result, _bindings} = Code.eval_quoted(quoted, icons: icons, icon_names: icon_names, ns: ns)
fl = "#{wd}/mod.rs"
File.write!(fl, result)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_props.eex")
{result, _bindings} = Code.eval_quoted(quoted, ns: ns)
fl = "#{wd}/props.rs"
File.write!(fl, result)
icons
|> Enum.each(fn name ->
inner =
File.read!(Application.app_dir(:phoenix_webcomponent, "priv/bsi/svg/#{name}.svg"))
|> String.replace(~r/<svg[^>]+>/, "")
|> String.replace("</svg>", "")
|> String.trim()
quoted = EEx.compile_file("#{__DIR__}/yew_icon_item.eex")
{result, _bindings} =
Code.eval_quoted(quoted, ns: ns, name: name, inner: inner, vb: "0 0 16 16")
fl = "#{wd}/icon_#{name |> String.replace("-", "_")}.rs"
File.write!(fl, result)
end)
quoted = EEx.compile_file("#{__DIR__}/yew_icon_names.eex")
{result, _bindings} =
Code.eval_quoted(quoted, icons: icons, icon_names: icon_names, ns: ns, mod_name: "bsi")
fl = "#{wd}/bsi_names.rs"
File.write!(fl, result)
end
def run(_) do
IO.puts("Use `mix phx_wc.gen_rs_icons bsi` or `mix phx_wc.gen_rs_icons mdi`")
end
end