diff --git a/index.ts b/index.ts index 11b552c..9a8f7f9 100644 --- a/index.ts +++ b/index.ts @@ -23,7 +23,7 @@ interface LooseObject { [key: string]: any } -function findProps(node: ts.Node): LooseObject[] { +function findProps(node: ts.Node, tagName: string): LooseObject[] { var res: LooseObject[] = []; find(node); function find(node: ts.Node): LooseObject[] { @@ -31,24 +31,38 @@ function findProps(node: ts.Node): LooseObject[] { return undefined; } if (ts.isObjectLiteralExpression(node)) { - node.properties.forEach(p => { - var prop: LooseObject = {}; - if ( - ts.isPropertyAssignment(p) && - ts.isObjectLiteralExpression(p.initializer) && - p.initializer.properties - ) { - p.initializer.properties.forEach(ip => { - if (ts.isIdentifier(ip.name)) { - let name = ip.name.text - if (ts.isPropertyAssignment(ip) && ts.isStringLiteral(ip.initializer)) { - prop[name] = ip.initializer.text; + node.properties.forEach(p => { + var prop: LooseObject = {}; + if ( + ts.isPropertyAssignment(p) && + ts.isObjectLiteralExpression(p.initializer) && + p.initializer.properties + ) { + p.initializer.properties.forEach(ip => { + if (ts.isIdentifier(ip.name)) { + let name = ip.name.text + if (ts.isPropertyAssignment(ip) && ts.isStringLiteral(ip.initializer)) { + prop[name] = ip.initializer.text; + } } + }); + res.push(prop); + } + }); + + if (tagName === "formatMessage") { + var prop: LooseObject = {}; + let name; + + node.properties.forEach(p => { + if (ts.isPropertyAssignment(p) && ts.isStringLiteral(p.initializer)) { + name = (p.name as any).escapedText; + prop[name] = p.initializer.text; } }); + res.push(prop); - } - }); + } } return ts.forEachChild(node, find); } @@ -85,7 +99,7 @@ function findFirstJsxOpeningLikeElementWithName( el.initializer.arguments.length ) { var nodeProps = el.initializer.arguments[0]; - var props = findProps(nodeProps); + var props = findProps(nodeProps, tagName); // props is an array of LooseObject res = res.concat(props); } @@ -136,6 +150,11 @@ function main(contents: string): {}[] { "defineMessages", true ); + var fm = findFirstJsxOpeningLikeElementWithName( + sourceFile, + "formatMessage", + true + ); var res = elements .map(element => { @@ -152,7 +171,7 @@ function main(contents: string): {}[] { }) .filter(r => !emptyObject(r)); - return res.concat(dm); + return res.concat(dm).concat(fm); } export default main; diff --git a/lib/index.js b/lib/index.js index 2c9e544..8f26a10 100644 --- a/lib/index.js +++ b/lib/index.js @@ -15,7 +15,7 @@ function emptyObject(obj) { } return true; } -function findProps(node) { +function findProps(node, tagName) { var res = []; find(node); function find(node) { @@ -39,6 +39,17 @@ function findProps(node) { res.push(prop); } }); + if (tagName === "formatMessage") { + var prop = {}; + var name_2; + node.properties.forEach(function (p) { + if (ts.isPropertyAssignment(p) && ts.isStringLiteral(p.initializer)) { + name_2 = p.name.escapedText; + prop[name_2] = p.initializer.text; + } + }); + res.push(prop); + } } return ts.forEachChild(node, find); } @@ -65,7 +76,7 @@ function findFirstJsxOpeningLikeElementWithName(node, tagName, dm) { if (ts.isCallExpression(el.initializer) && el.initializer.arguments.length) { var nodeProps = el.initializer.arguments[0]; - var props = findProps(nodeProps); + var props = findProps(nodeProps, tagName); res = res.concat(props); } } @@ -88,6 +99,7 @@ function main(contents) { var sourceFile = ts.createSourceFile("file.ts", contents, ts.ScriptTarget.ES2015, false, ts.ScriptKind.TSX); var elements = findFirstJsxOpeningLikeElementWithName(sourceFile, "FormattedMessage"); var dm = findFirstJsxOpeningLikeElementWithName(sourceFile, "defineMessages", true); + var fm = findFirstJsxOpeningLikeElementWithName(sourceFile, "formatMessage", true); var res = elements .map(function (element) { var msg = {}; @@ -102,7 +114,7 @@ function main(contents) { return msg; }) .filter(function (r) { return !emptyObject(r); }); - return res.concat(dm); + return res.concat(dm).concat(fm); } exports.default = main; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index 75d5297..7b514de 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/app/wrappedComponent.tsx b/test/app/wrappedComponent.tsx new file mode 100644 index 0000000..39aa385 --- /dev/null +++ b/test/app/wrappedComponent.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { FormattedMessage, injectIntl } from 'react-intl' +import messages from './defineMessages' + +class WrappedComponent extends React.Component{ + render() { + const { formatMessage } = this.props.intl; + + const emailPlaceholder = formatMessage({ + id: "emailPlaceholder", + defaultMessage: "Email" + }); + + return
+ +
+ } +} + +export default injectIntl(WrappedComponent); \ No newline at end of file diff --git a/test/index.js b/test/index.js index c7bd3c9..74dc0f5 100644 --- a/test/index.js +++ b/test/index.js @@ -73,3 +73,15 @@ test(" should work with StatelessComponent", t => { t.deepEqual(res, expected); }); + +test("formatMessage() API should work with a wrapped by injectIntl Component", t => { + var content = fs.readFileSync(__dirname + "/app/wrappedComponent.tsx"); + + var res = p(content.toString()); + + var expected = [{ id: "emailPlaceholder", defaultMessage: "Email" }]; + + t.is(res.length, 1); + + t.deepEqual(res, expected); +}); \ No newline at end of file