Skip to content

Commit

Permalink
feat: add quoted class short syntax (#737)
Browse files Browse the repository at this point in the history
  • Loading branch information
morigs authored Dec 16, 2024
1 parent 9ca3603 commit 89eda0c
Showing 2 changed files with 7 additions and 0 deletions.
2 changes: 2 additions & 0 deletions packages/abbreviation/src/parser/index.ts
Original file line number Diff line number Diff line change
@@ -181,6 +181,8 @@ function shortAttribute(scanner: TokenScanner, type: 'class' | 'id', options: Pa
if (options.jsx && text(scanner)) {
attr.value = getText(scanner);
attr.expression = true;
} else if (quoted(scanner)) {
attr.value = slice(scanner, scanner.start + 1, scanner.pos - 1) as ValueToken[];
} else {
attr.value = literal(scanner) ? slice(scanner) as ValueToken[] : void 0;
}
5 changes: 5 additions & 0 deletions packages/abbreviation/test/parser.ts
Original file line number Diff line number Diff line change
@@ -105,9 +105,14 @@ describe('Parser', () => {
// Elements with attributes
equal(str('div[foo=bar]'), '<div foo=bar></div>');
equal(str('div.a[b=c]'), '<div class=a b=c></div>');
equal(str('div.mr-\\[500\\][a=b]'), '<div class=mr-[500] a=b></div>');
equal(str('div[b=c].a'), '<div b=c class=a></div>');
equal(str('div[a=b][c="d"]'), '<div a=b c="d"></div>');
equal(str('[b=c]'), '<? b=c></?>');
equal(str('.a\\[b-c\\]'), '<? class=a[b-c]></?>');
equal(str('."a:[b-c]"'), '<? class=a:[b-c]></?>');
equal(str('."peer-[.is-dirty]:peer-required:block"'), '<? class=peer-[.is-dirty]:peer-required:block></?>');
equal(str('."mr-50"."peer-[:nth-of-type(3)_&]:block"'), '<? class=mr-50 class=peer-[:nth-of-type(3)_&]:block></?>');
equal(str('.a[b=c]'), '<? class=a b=c></?>');
equal(str('[b=c].a#d'), '<? b=c class=a id=d></?>');
equal(str('[b=c]a'), '<? b=c></?><a></a>', 'Do not consume node name after attribute set');

0 comments on commit 89eda0c

Please sign in to comment.