UNPKG

@unit-mesh/gogocode-plugin-element

Version:

## 开始迁移

59 lines (51 loc) 2.12 kB
const _ = require('lodash') /* eslint-disable indent */ module.exports = function (ast) { const template = ast.find('<template></template>'); // vue转换插件会把 :visible.sync 改成 v-model:visible, :visible 和 visible 则保持不变 // 转换逻辑: // for dialog: v-model:visible="x" -> v-model="x" // :visible="x" -> :model-value="x" :value="x" -> :model-value="x" // visible="x" -> value="x" value="x" -> model-value="x" template.find('<$_$></$_$>').each((ast) => { const tagName = _.get(ast, `node.content.name`); // 是 element 组件 if (tagName.indexOf('el-') === 0) { const attrs = ast.attr('content.attributes') || []; attrs.forEach((kv) => { const key = _.get(kv, `key.content`); if (tagName === 'el-dialog') { switch (key) { case 'visible': kv.key.content = 'model-value'; break; case ':visible': kv.key.content = ':model-value'; break; case 'v-model:visible': kv.key.content = 'v-model'; break; default: break; } // el-option 无 v-model 不转换,待补充 } else if(tagName !== 'el-option') { switch (key) { case 'value': kv.key.content = 'model-value'; break; case ':value': kv.key.content = ':model-value'; break; case 'v-model:value': kv.key.content = 'v-model'; break; default: break; } } }); } }); return ast; };