naive-ui/build/utils/handle-merge-code.js

61 lines
1.7 KiB
JavaScript

const tsToJs = require('./tsToJs')
module.exports = function handleMergeCode ({ parts, mergedParts, isVue }) {
if (isVue && parts.language === 'ts') {
// ts and js
if (parts.template) {
mergedParts.tsCode += `<template>${parts.template}</template>`
mergedParts.jsCode += `<template>${parts.template}</template>`
}
if (parts.script) {
if (parts.template) {
mergedParts.tsCode += '\n\n'
mergedParts.jsCode += '\n\n'
}
mergedParts.tsCode += `<script lang="ts">
${parts.script}
</script>`
mergedParts.jsCode += `<script>
${tsToJs(parts.script)}
</script>`
}
if (parts.style) {
if (parts.template || parts.script) {
mergedParts.tsCode += '\n\n'
mergedParts.jsCode += '\n\n'
}
const style = `<style scoped>${parts.style}</style>`
mergedParts.tsCode += style
mergedParts.jsCode += style
}
} else {
// only js when md or vue file
if (parts.template) {
mergedParts.jsCode += isVue
? `<template>${parts.template}</template>`
: `<template>\n${parts.template
.split('\n')
.map((line) => (line.length ? ' ' + line : line))
.join('\n')}\n</template>`
}
if (parts.script) {
if (parts.template) {
mergedParts.jsCode += '\n\n'
}
mergedParts.jsCode += `<script>
${parts.script}
</script>`
}
if (parts.style) {
if (parts.template || parts.script) {
mergedParts.jsCode += '\n\n'
}
const style = isVue
? `<style scoped>${parts.style}</style>`
: `<style scoped>
${parts.style}
</style>`
mergedParts.jsCode += style
}
}
}