chameleon-linter
Version:
cml规范校验工具
39 lines (36 loc) • 957 B
JavaScript
const Tools = require('../../tools');
const propRegex = /^v-bind|^:/;
module.exports = {
name: 'vue-prop-node',
on: 'vue',
filter: {
key: 'name',
run: function(value) {
return propRegex.test(value);
}
}
}
module.exports.run = function(attr, opts) {
let preArg = /^(?:\:|v-bind:)([\w-]*)/.exec(attr.name);
let props = [];
if (preArg) {
preArg = preArg[1];
props.push({
rawName: preArg,
name: Tools.dashtoCamelcase(preArg),
pos: [attr.namePos[0], attr.namePos[1] + attr.name.indexOf(preArg)],
prop: true,
event: false
});
} else {
props = Tools.getPropsFromObjectExpression(attr.value);
props.map((prop) => {
prop.rawName = prop.name;
prop.name = Tools.dashtoCamelcase(prop.name);
prop.pos = [attr.valuePos[0] + prop.pos[0] - 1, attr.valuePos[1] + prop.pos[1]];
prop.prop = true; prop.event = false;
return prop;
});
}
return props;
}