diff --git a/packages/gogocode-core/src/vue-core/core.js b/packages/gogocode-core/src/vue-core/core.js index 6081cbdb..0cead2d4 100644 --- a/packages/gogocode-core/src/vue-core/core.js +++ b/packages/gogocode-core/src/vue-core/core.js @@ -21,7 +21,8 @@ const core = { if (ast.scriptAst) { newAst = ast.scriptAst; } else { - ast.scriptAst = core.getScript(ast, { parseOptions }); + const isSetup = ast.scriptSetup && ast.scriptSetup.setup; + ast.scriptAst = core.getScript(ast, { isSetup, parseOptions }); newAst = ast.scriptAst; } } else if (selector == '') { @@ -52,7 +53,7 @@ const core = { return undefined; } }, - getScript(ast, { isSetup = false, parseOptions } = {} ) { + getScript(ast, { isSetup = false, parseOptions } = {}) { // 仅针对vue,取script,后续通过jscore处理 let content; if (isSetup && ast.scriptSetup) { @@ -89,7 +90,7 @@ const core = { } else { return null; } - } catch(e) { + } catch (e) { console.log('buildAstByAstStr failed:' + e) } } diff --git a/packages/gogocode-core/test/G.vue.test.js b/packages/gogocode-core/test/G.vue.test.js index 7f32c1a9..030b3e5a 100644 --- a/packages/gogocode-core/test/G.vue.test.js +++ b/packages/gogocode-core/test/G.vue.test.js @@ -635,3 +635,46 @@ test('test vue parseoptions', () => { const res = ast.generate() expect(res.match('&&')).toBeTruthy() }) + + +test('test vue3 setup by script', () => { + const ast = $( + ` + + + `, + { parseOptions: { language: 'vue' } } + ) + const res = ast.find('').generate() + expect(res===` + const a = 1 + const b = 2 +`).toBeTruthy() +}) + +test('test vue3 setup by script setup', () => { + const ast = $( + ` + + + `, + { parseOptions: { language: 'vue' } } + ) + const res = ast.find('').generate() + expect(res===` + const a = 1 + const b = 2 +`).toBeTruthy() +}) \ No newline at end of file