codegen.spec.ts — vue Source File
Architecture documentation for codegen.spec.ts, a typescript file in the vue codebase. 8 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR f81550a3_d9b1_086b_f23b_8dedde7a563e["codegen.spec.ts"] 1502a238_61f0_9afa_8c3c_71d2bb769820["types.ts"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> 1502a238_61f0_9afa_8c3c_71d2bb769820 8fa13167_5ac7_0658_5752_38b3ee82910e["BindingTypes"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> 8fa13167_5ac7_0658_5752_38b3ee82910e d62ea118_535f_3a78_3561_bebb0acfc3aa["index"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> d62ea118_535f_3a78_3561_bebb0acfc3aa 5b4afb2f_912e_cb39_5d80_54b455473aa4["optimizer"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> 5b4afb2f_912e_cb39_5d80_54b455473aa4 eefb23f4_6243_a3c4_eee2_6d37c9e47ac9["codegen"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> eefb23f4_6243_a3c4_eee2_6d37c9e47ac9 156bf2e1_8a13_f22d_5437_54f14bcef8fa["util"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> 156bf2e1_8a13_f22d_5437_54f14bcef8fa 148abdbd_b24a_66f6_25f5_6786df341ad2["index"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> 148abdbd_b24a_66f6_25f5_6786df341ad2 c8c25bbc_db7f_72b6_f1ee_617c071790f0["options"] f81550a3_d9b1_086b_f23b_8dedde7a563e --> c8c25bbc_db7f_72b6_f1ee_617c071790f0 style f81550a3_d9b1_086b_f23b_8dedde7a563e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { parse } from 'compiler/parser/index'
import { optimize } from 'compiler/optimizer'
import { generate } from 'compiler/codegen'
import { isObject, isFunction, extend } from 'shared/util'
import { isReservedTag } from 'web/util/index'
import { baseOptions } from 'web/compiler/options'
import { BindingTypes } from '../../../../packages/compiler-sfc/src/types'
function assertCodegen(template, generatedCode, ...args) {
let staticRenderFnCodes: string[] = []
let generateOptions = baseOptions
let proc: Function | null = null
let len = args.length
while (len--) {
const arg = args[len]
if (Array.isArray(arg)) {
staticRenderFnCodes = arg
} else if (isObject(arg)) {
generateOptions = arg
} else if (isFunction(arg)) {
proc = arg
}
}
const ast = parse(template, baseOptions)
optimize(ast, baseOptions)
proc && proc(ast)
const res = generate(ast, generateOptions)
expect(res.render).toBe(generatedCode)
expect(res.staticRenderFns).toEqual(staticRenderFnCodes)
}
describe('codegen', () => {
it('generate directive', () => {
assertCodegen(
'<p v-custom1:arg1.modifier="value1" v-custom2></p>',
`with(this){return _c('p',{directives:[{name:"custom1",rawName:"v-custom1:arg1.modifier",value:(value1),expression:"value1",arg:"arg1",modifiers:{"modifier":true}},{name:"custom2",rawName:"v-custom2"}]})}`
)
})
it('generate filters', () => {
assertCodegen(
'<div :id="a | b | c">{{ d | e | f }}</div>',
`with(this){return _c('div',{attrs:{"id":_f("c")(_f("b")(a))}},[_v(_s(_f("f")(_f("e")(d))))])}`
)
})
it('generate filters with no arguments', () => {
assertCodegen(
'<div>{{ d | e() }}</div>',
`with(this){return _c('div',[_v(_s(_f("e")(d)))])}`
)
})
it('generate v-for directive', () => {
assertCodegen(
'<div><li v-for="item in items" :key="item.uid"></li></div>',
`with(this){return _c('div',_l((items),function(item){return _c('li',{key:item.uid})}),0)}`
)
// iterator syntax
assertCodegen(
// ... (684 more lines)
Domain
Subdomains
Functions
Dependencies
- BindingTypes
- codegen
- index
- index
- optimizer
- options
- types.ts
- util
Source
Frequently Asked Questions
What does codegen.spec.ts do?
codegen.spec.ts is a source file in the vue codebase, written in typescript. It belongs to the CompilerSFC domain, StyleProcessor subdomain.
What functions are defined in codegen.spec.ts?
codegen.spec.ts defines 1 function(s): assertCodegen.
What does codegen.spec.ts depend on?
codegen.spec.ts imports 8 module(s): BindingTypes, codegen, index, index, optimizer, options, types.ts, util.
Where is codegen.spec.ts in the architecture?
codegen.spec.ts is located at test/unit/modules/compiler/codegen.spec.ts (domain: CompilerSFC, subdomain: StyleProcessor, directory: test/unit/modules/compiler).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free