Skip to content

Commit

Permalink
Update types for extractText() in hbs_extractor.ts
Browse files Browse the repository at this point in the history
  • Loading branch information
NullVoxPopuli committed Apr 5, 2024
1 parent 2513f62 commit 010ca6b
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 64 deletions.
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
"@commitlint/cli": "17",
"@commitlint/config-angular": "17",
"@glimmer/env": "^0.1.7",
"@glimmer/reference": "^0.89.0",
"@glimmer/syntax": "^0.89.0",
"@glimmer/validator": "^0.89.0",
"@glimmer/reference": "^0.91.1",
"@glimmer/syntax": "^0.91.1",
"@glimmer/validator": "^0.91.1",
"@jest/transform": "29",
"@jest/types": "29",
"@lerna-lite/cli": "2",
Expand Down
6 changes: 3 additions & 3 deletions packages/cli-lib/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@
"@formatjs/icu-messageformat-parser": "workspace:*",
"@formatjs/ts-transformer": "workspace:*",
"@glimmer/env": "^0.1.7",
"@glimmer/reference": "^0.89.0",
"@glimmer/syntax": "^0.89.0",
"@glimmer/validator": "^0.89.0",
"@glimmer/reference": "^0.91.1",
"@glimmer/syntax": "^0.91.1",
"@glimmer/validator": "^0.91.1",
"@types/estree": "^1.0.0",
"@types/fs-extra": "^9.0.1",
"@types/json-stable-stringify": "^1.0.32",
Expand Down
47 changes: 36 additions & 11 deletions packages/cli-lib/src/hbs_extractor.ts
Original file line number Diff line number Diff line change
@@ -1,31 +1,56 @@
import {transform} from 'ember-template-recast'
import { transform } from 'ember-template-recast'
import type { AST } from '@glimmer/syntax';
import { Opts } from '@formatjs/ts-transformer'

function extractText(
node: AST.MustacheStatement | AST.SubExpression,
fileName: string,
options: Opts
) {
if (!options.onMsgExtracted) return;
if (!options.overrideIdFn) return;

if (node.path.type !== 'PathExpression') return;

function extractText(node: any, fileName: any, options: any) {
if (['format-message', 'formatMessage'].includes(node.path.original)) {
let message = node.params[0]?.original
let desc = node.params[1]?.original?.trim().replace(/\s+/gm, ' ')
let [first, second] = node.params

if (first.type !== 'StringLiteral') return;

let message = first?.value;

let desc: string | undefined;
if (second?.type === 'StringLiteral') {
desc = second.value?.trim().replace(/\s+/gm, ' ')
}

let defaultMessage = message?.trim().replace(/\s+/gm, ' ')

let id = options.overrideIdFn(undefined, defaultMessage, desc, fileName)
options.onMsgExtracted(undefined, {
let id = typeof options.overrideIdFn === 'string'
? options.overrideIdFn
: options.overrideIdFn(undefined, defaultMessage, desc, fileName);

options.onMsgExtracted(fileName, [{
id: id,
defaultMessage: defaultMessage,
description: desc,
})
}])
}
}

export function parseFile(source: string, fileName: string, options: any) {
let visitor = function () {
let visitor = function() {
return {
MustacheStatement(node: any) {
MustacheStatement(node: AST.MustacheStatement) {
extractText(node, fileName, options)
},
SubExpression(node: any) {
SubExpression(node: AST.SubExpression) {
extractText(node, fileName, options)
},
}
}

transform(source, visitor)
// SAFETY: ember-template-recast's types are out of date,
// but it does not affect runtime
transform(source, visitor as any)
}
94 changes: 47 additions & 47 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 010ca6b

Please sign in to comment.