eslint-plugin-playlyfe
Version:
custom eslint stuff for playlyfe
54 lines (46 loc) • 1.18 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parse = parse;
exports.getMessageArguments = getMessageArguments;
var _intlMessageformatParser = _interopRequireDefault(require("intl-messageformat-parser"));
function parse(message) {
return _intlMessageformatParser.default.parse(message);
}
function getMessageArguments(message) {
try {
// ignore if there is parse error
const ast = _intlMessageformatParser.default.parse(message);
return {
err: null,
args: getFromMessageFormatPattern(ast)
};
} catch (err) {
return {
err,
args: []
};
}
}
function getFromMessageFormatPattern(node) {
const args = [];
node.elements.forEach(elem => {
if (elem.type === 'argumentElement') {
args.push(elem);
const {
format
} = elem;
if (format && format.options) {
const {
options
} = format;
options.forEach(option => {
args.push(...getFromMessageFormatPattern(option.value));
});
}
}
});
return args;
}