diff --git a/.changeset/moody-adults-camp.md b/.changeset/moody-adults-camp.md new file mode 100644 index 0000000..43662eb --- /dev/null +++ b/.changeset/moody-adults-camp.md @@ -0,0 +1,5 @@ +--- +"@intlify/eslint-plugin-svelte": minor +--- + +Apply rule against root-level strings diff --git a/lib/rules/no-raw-text.ts b/lib/rules/no-raw-text.ts index f2b6720..7b31544 100644 --- a/lib/rules/no-raw-text.ts +++ b/lib/rules/no-raw-text.ts @@ -111,7 +111,7 @@ function checkSvelteLiteralOrText( const loc = literal.loc! context.report({ loc, - message: `raw text '${literal.value}' is used` + message: `raw text '${literal.value.trim()}' is used` }) } @@ -132,7 +132,7 @@ function checkLiteral( const loc = literal.loc! context.report({ loc, - message: `raw text '${value}' is used` + message: `raw text '${String(value).trim()}' is used` }) } /** @@ -155,6 +155,7 @@ function parseTargetAttrs( function create(context: RuleContext): RuleListener { const sourceCode = context.getSourceCode() + const config: Config = { attributes: [], ignorePattern: /^$/, @@ -178,9 +179,12 @@ function create(context: RuleContext): RuleListener { function isIgnore(node: SvAST.SvelteMustacheTag | SvAST.SvelteText) { const element = getElement(node) - return ( - !element || - config.ignoreNodes.includes(sourceCode.text.slice(...element.name.range!)) + if (!element) { + return false + } + + return config.ignoreNodes.includes( + sourceCode.text.slice(...element.name.range!) ) } function getElement(node: SvAST.SvelteMustacheTag | SvAST.SvelteText) { diff --git a/tests/lib/rules/no-raw-text.ts b/tests/lib/rules/no-raw-text.ts index 980275f..30e592d 100644 --- a/tests/lib/rules/no-raw-text.ts +++ b/tests/lib/rules/no-raw-text.ts @@ -47,6 +47,12 @@ tester.run('no-raw-text', rule as never, {
world
`, options: [{ ignoreText: ['hello', 'world'] }] + }, + { + code: ` + { $_('root level translation') } + `, + options: [] } ], @@ -224,6 +230,19 @@ tester.run('no-raw-text', rule as never, { column: 23 } ] + }, + { + code: ` + + + text at the root of the template + `, + errors: [ + { + message: "raw text 'text at the root of the template' is used" + } + ] } ] })