提交 70ecc133 编写于 作者: fxy060608's avatar fxy060608

wip(uts): compiler

上级 3e9a4485
......@@ -52,6 +52,7 @@ export class UniAppConfig extends AppConfig {
override versionCode: string = "${manifestJson.versionCode || ''}"
constructor() {}
}
export * from './App.vue.style.uts'
`
}
},
......
......@@ -56,7 +56,7 @@ export default 'pages.json'`
${imports
.map((p) => {
const className = genClassName(p)
return `import { ${className}Class } from './${p}.uvue'`
return `import { ${className}Class } from './${p}.uvue?type=page'`
})
.join('\n')}
const __uniRoutes = [${routes.join(',\n')}]
......
......@@ -20,8 +20,9 @@ export function uvueOutDir() {
}
export function genClassName(fileName: string) {
return capitalize(
camelize(removeExt(normalizePath(fileName).replace(/\//g, '-')))
return (
'Gen' +
capitalize(camelize(removeExt(normalizePath(fileName).replace(/\//g, '-'))))
)
}
......
import { SFCDescriptor } from '@vue/compiler-sfc'
export function genScript(
{ script, styles }: SFCDescriptor,
{ script }: SFCDescriptor,
{ filename }: { filename: string }
) {
const parentClass = filename === 'App' ? 'BaseApp' : 'BasePage'
const stylesCode = styles.length ? genStylesCode(filename) : ''
if (!script) {
return `
class ${filename} extends ${parentClass} {
${stylesCode}
constructor() {}
render(ctx: ${filename}): VNode | null {
return ${filename}Render(ctx)
}
}
export default {}
export const ${filename}Class = UTSAndroid.getKotlinClass(${filename})
`
}
return (
'\n'.repeat(script.loc.start.line - 1) +
`
class ${filename} extends ${parentClass} {
${stylesCode}
constructor() {}
render(ctx: ${filename}): VNode | null {
return ${filename}Render(ctx)
}
}
`${script.content}
export const ${filename}Class = UTSAndroid.getKotlinClass(${filename})
`
)
}
function genStylesCode(filename: string) {
return `
static $normalizedStyle: Map<string,Map<string, Map<string, any>>> | null = null
override get $styles(): Map<string,Map<string, Map<string, any>>> {
if (${filename}.$normalizedStyle == null) {
${filename}.$normalizedStyle = normalizeCssStyles(${filename}Styles, mutableListOf())
}
return ${filename}.$normalizedStyle!
}
`
}
......@@ -8,11 +8,11 @@ export function genStyle(
{ className, filename }: { className: string; filename: string }
) {
if (styles.length === 0) {
return ''
return `
const ${className}Styles: Array<Map<String, Any>> = []`
}
return `import { ${className}Styles } from './${path.basename(
filename
)}.style.uts'`
return `
import { ${className}Styles } from './${path.basename(filename)}.style.uts'`
}
export async function genJsStylesCode(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册