tailwindcss/crates/oxide
Jordan Pittman 8c8033017d
Detect classes inside Elixir charlist, word list, and string sigils (#18432)
Fixes #18431

The `~W(…)` syntax in Elixir is a _sigil_. It's basically another way to
write strings, arrays of strings, etc… The syntax lets you use a handful
of surrounding brackets like `~W(…)`, `~W[…]`, `~W{…}`, `~W"…"`, etc… to
let you write lists without necessarily having to escape characters.

In v3 our extractor was able to pick these up but in v4 Oxide does not.
I've added a preprocessor for Elixir files so we can modify the code
before our main extractor sees it.

Now things like this: `~W(text-white bg-gray-600)` will get turned into
` ~W text-white bg-gray-600 ` which can easily be processed by our
extractor.

The sigils we support are:
- `~s` / `~S` (strings)
- `~w` / `~W` (word lists)
- `~c` / `~C` (charlists)

We're specifically detecting the use of `(…)`, `[…]`, and `{…}` as using
quotes already works today.

---------

Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2025-07-02 16:01:13 -04:00
..
fuzz Hoist oxide/crates to just crates (#13333) 2024-03-23 09:00:48 -04:00
src Detect classes inside Elixir charlist, word list, and string sigils (#18432) 2025-07-02 16:01:13 -04:00
tests Ignore binary extensions, except in folder names (#17595) 2025-04-12 13:30:17 +02:00
Cargo.toml Fix HAML extraction with embedded Ruby (#17846) 2025-05-05 10:26:17 -04:00