Skip to content

Commit bf591fe

Browse files
authored
Fix missing extracted classes containing . in Clojure (#18038)
This PR fixes an issue in the Clojure pre-processor where candidates including `.` characters were not extracted correctly. The solution here is to only replace the `.` with a ` ` when the `.` is not surrounded by numbers. This means that: ``` :.foo.bar ``` Becomes ``` : foo bar ``` But ``` :.gap-1.5.flex ``` Becomes ``` : gap-1.5 flex ``` This way the `gap-1.5` is correctly extracted. ## Test plan 1. Added a test for this case 2. Tested this in the extractor tool as well. Notice how the `gap-1.5` is correctly extracted here. <img width="1247" alt="image" src="https://github.com/user-attachments/assets/f5dd2600-5c5e-4ad8-88af-4e5be44340f5" /> Fixes: 17760
1 parent 1ada8e0 commit bf591fe

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- Upgrade: Change casing of utilities with named values to kebab-case to match updated theme variables ([#18017](https://github.com/tailwindlabs/tailwindcss/pull/18017))
2020
- Upgrade: Fix unsafe migrations in Vue files ([#18025](https://github.com/tailwindlabs/tailwindcss/pull/18025))
2121
- Ignore custom variants using `:merge(…)` selectors in legacy JS plugins ([#18020](https://github.com/tailwindlabs/tailwindcss/pull/18020))
22+
- Fix missing extracted classes containing `.` in Clojure ([#18038](https://github.com/tailwindlabs/tailwindcss/pull/18038))
2223

2324
### Added
2425

crates/oxide/src/extractor/pre_processors/clojure.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,18 @@ impl PreProcessor for Clojure {
4242
}
4343
}
4444

45+
// A `.` surrounded by digits is a decimal number, so we don't want to replace it.
46+
//
47+
// E.g.:
48+
// ```
49+
// gap-1.5
50+
// ^
51+
// ``
52+
b'.' if cursor.prev.is_ascii_digit() && cursor.next.is_ascii_digit() => {
53+
54+
// Keep the `.` as-is
55+
}
56+
4557
b':' | b'.' => {
4658
result[cursor.pos] = b' ';
4759
}
@@ -156,4 +168,14 @@ mod tests {
156168

157169
Clojure::test_extract_contains(input, vec!["hover:flex", "px-1.5"]);
158170
}
171+
172+
// https://github.com/tailwindlabs/tailwindcss/issues/17760
173+
#[test]
174+
fn test_extraction_of_classes_with_dots() {
175+
let input = r#"
176+
($ :div {:class [:flex :gap-1.5 :p-1]} …)
177+
"#;
178+
179+
Clojure::test_extract_contains(input, vec!["flex", "gap-1.5", "p-1"]);
180+
}
159181
}

0 commit comments

Comments
 (0)