Home / Function/ parse() — vue Function Reference

parse() — vue Function Reference

Architecture documentation for the parse() function in index.ts from the vue codebase.

Function typescript VueCore VDom calls 15 called by 1

Entity Profile

Dependency Diagram

graph TD
  19a26691_f7c4_e2d6_e9ed_59c6aff144df["parse()"]
  101d3d34_ac07_228f_62b9_5d5ac4a0ea2e["index.ts"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|defined in| 101d3d34_ac07_228f_62b9_5d5ac4a0ea2e
  6c590cdd_9255_3485_21a0_c8a067eb1658["createCompiler()"]
  6c590cdd_9255_3485_21a0_c8a067eb1658 -->|calls| 19a26691_f7c4_e2d6_e9ed_59c6aff144df
  986757e2_2dff_4538_f36e_97457731ba01["pluckModuleFunction()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 986757e2_2dff_4538_f36e_97457731ba01
  08093d1f_a003_dbad_063e_2431482be94f["processElement()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 08093d1f_a003_dbad_063e_2431482be94f
  b4c1389a_2c57_28d1_1826_0c31a4a17339["addIfCondition()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| b4c1389a_2c57_28d1_1826_0c31a4a17339
  c884999e_bd3e_83b2_f046_49d3a385e621["processIfConditions()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| c884999e_bd3e_83b2_f046_49d3a385e621
  62dcc405_082c_cdd0_ae44_f0d60c4be8d0["parseHTML()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 62dcc405_082c_cdd0_ae44_f0d60c4be8d0
  20f42bb7_c852_11fa_9570_fb0e47784169["guardIESVGBug()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 20f42bb7_c852_11fa_9570_fb0e47784169
  4e75c3e7_0ca3_e8e1_4b44_838fc9982387["createASTElement()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 4e75c3e7_0ca3_e8e1_4b44_838fc9982387
  46684b01_04df_617a_eec6_14b9b59b5876["isForbiddenTag()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 46684b01_04df_617a_eec6_14b9b59b5876
  53767308_b194_e579_1c0e_f731eeedd2ec["processPre()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 53767308_b194_e579_1c0e_f731eeedd2ec
  45053ba1_50a8_ccf4_7065_ac9531d561d9["processRawAttrs()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| 45053ba1_50a8_ccf4_7065_ac9531d561d9
  d3b1b678_5e48_ff0d_a441_c2c615c22920["processFor()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| d3b1b678_5e48_ff0d_a441_c2c615c22920
  bb1c0225_c589_5526_ef8c_1c9daa8f8ccd["processIf()"]
  19a26691_f7c4_e2d6_e9ed_59c6aff144df -->|calls| bb1c0225_c589_5526_ef8c_1c9daa8f8ccd
  style 19a26691_f7c4_e2d6_e9ed_59c6aff144df fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/compiler/parser/index.ts lines 86–422

export function parse(template: string, options: CompilerOptions): ASTElement {
  warn = options.warn || baseWarn

  platformIsPreTag = options.isPreTag || no
  platformMustUseProp = options.mustUseProp || no
  platformGetTagNamespace = options.getTagNamespace || no
  const isReservedTag = options.isReservedTag || no
  maybeComponent = (el: ASTElement) =>
    !!(
      el.component ||
      el.attrsMap[':is'] ||
      el.attrsMap['v-bind:is'] ||
      !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag))
    )
  transforms = pluckModuleFunction(options.modules, 'transformNode')
  preTransforms = pluckModuleFunction(options.modules, 'preTransformNode')
  postTransforms = pluckModuleFunction(options.modules, 'postTransformNode')

  delimiters = options.delimiters

  const stack: any[] = []
  const preserveWhitespace = options.preserveWhitespace !== false
  const whitespaceOption = options.whitespace
  let root
  let currentParent
  let inVPre = false
  let inPre = false
  let warned = false

  function warnOnce(msg, range) {
    if (!warned) {
      warned = true
      warn(msg, range)
    }
  }

  function closeElement(element) {
    trimEndingWhitespace(element)
    if (!inVPre && !element.processed) {
      element = processElement(element, options)
    }
    // tree management
    if (!stack.length && element !== root) {
      // allow root elements with v-if, v-else-if and v-else
      if (root.if && (element.elseif || element.else)) {
        if (__DEV__) {
          checkRootConstraints(element)
        }
        addIfCondition(root, {
          exp: element.elseif,
          block: element
        })
      } else if (__DEV__) {
        warnOnce(
          `Component template should contain exactly one root element. ` +
            `If you are using v-if on multiple elements, ` +
            `use v-else-if to chain them instead.`,
          { start: element.start }
        )
      }
    }
    if (currentParent && !element.forbidden) {
      if (element.elseif || element.else) {
        processIfConditions(element, currentParent)
      } else {
        if (element.slotScope) {
          // scoped slot
          // keep it in the children list so that v-else(-if) conditions can
          // find it as the prev node.
          const name = element.slotTarget || '"default"'
          ;(currentParent.scopedSlots || (currentParent.scopedSlots = {}))[
            name
          ] = element
        }
        currentParent.children.push(element)
        element.parent = currentParent
      }
    }

    // final children cleanup
    // filter out scoped slots

Domain

Subdomains

Called By

Frequently Asked Questions

What does parse() do?
parse() is a function in the vue codebase, defined in src/compiler/parser/index.ts.
Where is parse() defined?
parse() is defined in src/compiler/parser/index.ts at line 86.
What does parse() call?
parse() calls 15 function(s): addIfCondition, createASTElement, guardIESVGBug, isForbiddenTag, isTextTag, parseHTML, parseText, pluckModuleFunction, and 7 more.
What calls parse()?
parse() is called by 1 function(s): createCompiler.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free