Closed madogiwa0124 closed 5 months ago
In the step for adding option to generate, it seemed necessary to add option to the arguments of genNode and genElement as well.
option
generate
genNode
genElement
https://github.com/Ubugeeei/chibivue/blob/v0.0.8/book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-core/codegen.ts
Therefore, genNode and genElement with added arguments were also added to the sample code.
äøęēćŖåƾåæćŖć®ć§ćć¾ćå³ę ¼ć§ćÆćŖćć®ć§ćććę¦ćåä½ććććć«ćŖććØęćć¾ćć export const generate = ( { children, }: { children: TemplateChildNode[] }, option: Required<CompilerOptions>, ): string => { // isBrowser ć false ć®å “åćÆ with ęćå«ć¾ćŖćć³ć¼ććēęćć return `${option.isBrowser ? 'return ' : ''}function render(_ctx) { ${option.isBrowser ? 'with (_ctx) {' : ''} const { h } = ChibiVue; return ${genNode(children[0], option)}; ${option.isBrowser ? '}' : ''} }` } // . // . // . const genProp = ( prop: AttributeNode | DirectiveNode, option: Required<CompilerOptions>, ): string => { switch (prop.type) { case NodeTypes.ATTRIBUTE: return `${prop.name}: "${prop.value?.content}"` case NodeTypes.DIRECTIVE: { switch (prop.name) { case 'on': return `${toHandlerKey(prop.arg)}: ${ option.isBrowser ? '' : '_ctx.' // -------------------- ćć }${prop.exp}` default: // TODO: other directives throw new Error(`unexpected directive name. got "${prop.name}"`) } } default: throw new Error(`unexpected prop type.`) } } // . // . // . const genInterpolation = ( node: InterpolationNode, option: Required<CompilerOptions>, ): string => { return `${option.isBrowser ? '' : '_ctx.'}${node.content}` // ------------ ćć } https://ubugeeei.github.io/chibivue/10-minimum-example/090-minimum-sfc.html#template-%E9%83%A8%E5%88%86%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%8F%E3%82%9A%E3%82%A4%E3%83%AB
äøęēćŖåƾåæćŖć®ć§ćć¾ćå³ę ¼ć§ćÆćŖćć®ć§ćććę¦ćåä½ććććć«ćŖććØęćć¾ćć
export const generate = ( { children, }: { children: TemplateChildNode[] }, option: Required<CompilerOptions>, ): string => { // isBrowser ć false ć®å “åćÆ with ęćå«ć¾ćŖćć³ć¼ććēęćć return `${option.isBrowser ? 'return ' : ''}function render(_ctx) { ${option.isBrowser ? 'with (_ctx) {' : ''} const { h } = ChibiVue; return ${genNode(children[0], option)}; ${option.isBrowser ? '}' : ''} }` } // . // . // . const genProp = ( prop: AttributeNode | DirectiveNode, option: Required<CompilerOptions>, ): string => { switch (prop.type) { case NodeTypes.ATTRIBUTE: return `${prop.name}: "${prop.value?.content}"` case NodeTypes.DIRECTIVE: { switch (prop.name) { case 'on': return `${toHandlerKey(prop.arg)}: ${ option.isBrowser ? '' : '_ctx.' // -------------------- ćć }${prop.exp}` default: // TODO: other directives throw new Error(`unexpected directive name. got "${prop.name}"`) } } default: throw new Error(`unexpected prop type.`) } } // . // . // . const genInterpolation = ( node: InterpolationNode, option: Required<CompilerOptions>, ): string => { return `${option.isBrowser ? '' : '_ctx.'}${node.content}` // ------------ ćć }
https://ubugeeei.github.io/chibivue/10-minimum-example/090-minimum-sfc.html#template-%E9%83%A8%E5%88%86%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%8F%E3%82%9A%E3%82%A4%E3%83%AB
I have confirmed that the check action was successful.
https://github.com/madogiwa0124/chibivue/actions/runs/8917212290/job/24489904378
Description
In the step for adding
option
togenerate
, it seemed necessary to addoption
to the arguments ofgenNode
andgenElement
as well.https://github.com/Ubugeeei/chibivue/blob/v0.0.8/book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-core/codegen.ts
Therefore,
genNode
andgenElement
with added arguments were also added to the sample code.Test
I have confirmed that the check action was successful.
https://github.com/madogiwa0124/chibivue/actions/runs/8917212290/job/24489904378