Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions lib/tailwind_formatter/heex_tokenizer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ defmodule TailwindFormatter.HEExTokenizer do
alias TailwindFormatter.PhoenixLiveViewTokenizer, as: Tokenizer

# Taken directly from Phoenix.LiveView.HTMLFormatter
# https://github.com/phoenixframework/phoenix_live_view/blob/v0.20.1/lib/phoenix_live_view/html_formatter.ex#L288-L335
# https://github.com/phoenixframework/phoenix_live_view/blob/v1.0.10/lib/phoenix_live_view/html_formatter.ex#L277-L304
@eex_expr [:start_expr, :expr, :end_expr, :middle_expr]

def tokenize(source) do
{:ok, eex_nodes} = EEx.tokenize(source)
{tokens, cont} = Enum.reduce(eex_nodes, {[], :text}, &do_tokenize(&1, &2, source))
{tokens, cont} = Enum.reduce(eex_nodes, {[], {:text, :enabled}}, &do_tokenize(&1, &2, source))
Tokenizer.finalize(tokens, "nofile", cont, source)
end

Expand Down
9 changes: 4 additions & 5 deletions lib/tailwind_formatter/phoenix_live_view_html_engine.ex
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
# Taken directly from Phoenix.LiveView.HTMLEngine
# https://github.com/phoenixframework/phoenix_live_view/blob/v0.20.1/lib/phoenix_live_view/html_engine.ex#L41-L57
# https://github.com/phoenixframework/phoenix_live_view/blob/v1.0.10/lib/phoenix_live_view/html_engine.ex#L39-L54
defmodule TailwindFormatter.PhoenixLiveViewHTMLEngine do
@moduledoc false
def classify_type(":" <> name), do: {:slot, name}
def classify_type(":inner_block"), do: {:error, "the slot name :inner_block is reserved"}
def classify_type(":" <> name), do: {:slot, name}

def classify_type(<<first, _::binary>> = name) when first in ?A..?Z,
do: {:remote_component, name}

def classify_type("." <> name),
do: {:local_component, name}

def classify_type("."), do: {:error, "a component name is required after ."}
def classify_type("." <> name), do: {:local_component, name}
def classify_type(name), do: {:tag, name}

for void <- ~w(area base br col hr img input link meta param command keygen source) do
Expand Down
Loading