This commit is contained in:
2022-06-27 10:59:01 +02:00
commit f0d1abf477
3 changed files with 50 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/priv

46
livebook.livemd Normal file
View File

@ -0,0 +1,46 @@
# Function components from systemuicons
```elixir
Mix.install([
{:jason, "~> 1.3"}
])
```
## Clone git repo
```elixir
System.cmd("git", ["clone", "--depth=1", "https://github.com/CoreyGinnivan/system-uicons.git"],
cd: "./priv"
)
{output, _} = System.cmd("ls", ["./priv/system-uicons/src/images/icons"])
IO.puts(output)
```
## Get icon data
```elixir
path = "./priv/system-uicons/src/js/data.js"
source_data = File.read!(path)
cl = String.to_charlist(source_data)
<<"var sourceData = "::utf8, rest::binary>> = source_data
# remove trailing semicolon
sslice = String.slice(rest, 0..-3//1)
# quote object keys
quote_keys = Regex.replace(~r/([\w_]+):/, sslice, "\"\\1\":")
# remove trailing commas
rm_trailing_commas = Regex.replace(~r/,\s+(}|])/, quote_keys, "\\1")
icon_data = Jason.decode!(rm_trailing_commas)
```
## fetch svg contents
```elixir
icon_map =
Enum.map(icon_data, fn %{"icon_path" => path} = icon ->
svg = File.read!("./priv/system-uicons/src/images/icons/#{path}.svg")
Map.put_new(icon, "icon_svg", svg)
end)
```

3
systemuicons_ex.exs Normal file
View File

@ -0,0 +1,3 @@
Mix.install([
])