eslint-plugin-playlyfe
Version:
custom eslint stuff for playlyfe
45 lines (34 loc) • 1.13 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _jsxPascalCase = _interopRequireDefault(require("eslint-plugin-react/lib/rules/jsx-pascal-case"));
var _elementType = _interopRequireDefault(require("jsx-ast-utils/elementType"));
/**
* patch original rule to add support for underscore
* in starting e.g <_Test />
*/
function removeUnderScoreFromStart(name) {
return name.replace(/^_+/, '');
}
function patchName(name, nameNode) {
return Object.assign({}, nameNode, {
type: 'JSXIdentifier',
name: removeUnderScoreFromStart(name)
});
}
module.exports = Object.assign({}, _jsxPascalCase.default, {
create(context) {
const orig = _jsxPascalCase.default.create(context);
return Object.assign({}, orig, {
JSXOpeningElement(node) {
const name = (0, _elementType.default)(node);
let patchedNode = node;
if (name.startsWith('_')) {
patchedNode = Object.assign({}, node, {
name: patchName(name, node.name)
});
}
orig.JSXOpeningElement(patchedNode);
}
});
}
});