Home / File/ codegen.spec.ts — vue Source File

codegen.spec.ts — vue Source File

Architecture documentation for codegen.spec.ts, a typescript file in the vue codebase. 8 imports, 0 dependents.

File typescript CompilerSFC StyleProcessor 8 imports 1 functions

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

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