Home / Function/ parseFilters() — vue Function Reference

parseFilters() — vue Function Reference

Architecture documentation for the parseFilters() function in filter-parser.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  b1101a58_6379_8514_36a1_9d7f75b2b23f["parseFilters()"]
  9fe9aa1f_3948_0a47_c873_c987dae2f0ed["filter-parser.ts"]
  b1101a58_6379_8514_36a1_9d7f75b2b23f -->|defined in| 9fe9aa1f_3948_0a47_c873_c987dae2f0ed
  4ed4ecb1_33ab_6e92_8439_f0a81ee997fa["getBindingAttr()"]
  4ed4ecb1_33ab_6e92_8439_f0a81ee997fa -->|calls| b1101a58_6379_8514_36a1_9d7f75b2b23f
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02["processAttrs()"]
  94cd3ed6_4fec_eddb_c90a_1c38249e5b02 -->|calls| b1101a58_6379_8514_36a1_9d7f75b2b23f
  dbffbbee_5e53_d952_4e1c_509b08e0b3e2["parseText()"]
  dbffbbee_5e53_d952_4e1c_509b08e0b3e2 -->|calls| b1101a58_6379_8514_36a1_9d7f75b2b23f
  d751c51a_c04b_9c2d_5d77_7fc0e875b54a["wrapFilter()"]
  b1101a58_6379_8514_36a1_9d7f75b2b23f -->|calls| d751c51a_c04b_9c2d_5d77_7fc0e875b54a
  style b1101a58_6379_8514_36a1_9d7f75b2b23f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/compiler/parser/filter-parser.ts lines 3–104

export function parseFilters(exp: string): string {
  let inSingle = false
  let inDouble = false
  let inTemplateString = false
  let inRegex = false
  let curly = 0
  let square = 0
  let paren = 0
  let lastFilterIndex = 0
  let c, prev, i, expression, filters

  for (i = 0; i < exp.length; i++) {
    prev = c
    c = exp.charCodeAt(i)
    if (inSingle) {
      if (c === 0x27 && prev !== 0x5c) inSingle = false
    } else if (inDouble) {
      if (c === 0x22 && prev !== 0x5c) inDouble = false
    } else if (inTemplateString) {
      if (c === 0x60 && prev !== 0x5c) inTemplateString = false
    } else if (inRegex) {
      if (c === 0x2f && prev !== 0x5c) inRegex = false
    } else if (
      c === 0x7c && // pipe
      exp.charCodeAt(i + 1) !== 0x7c &&
      exp.charCodeAt(i - 1) !== 0x7c &&
      !curly &&
      !square &&
      !paren
    ) {
      if (expression === undefined) {
        // first filter, end of expression
        lastFilterIndex = i + 1
        expression = exp.slice(0, i).trim()
      } else {
        pushFilter()
      }
    } else {
      switch (c) {
        case 0x22:
          inDouble = true
          break // "
        case 0x27:
          inSingle = true
          break // '
        case 0x60:
          inTemplateString = true
          break // `
        case 0x28:
          paren++
          break // (
        case 0x29:
          paren--
          break // )
        case 0x5b:
          square++
          break // [
        case 0x5d:
          square--
          break // ]
        case 0x7b:
          curly++
          break // {
        case 0x7d:
          curly--
          break // }
      }
      if (c === 0x2f) {
        // /
        let j = i - 1
        let p
        // find first non-whitespace prev char
        for (; j >= 0; j--) {
          p = exp.charAt(j)
          if (p !== ' ') break
        }
        if (!p || !validDivisionCharRE.test(p)) {
          inRegex = true
        }
      }
    }

Domain

Subdomains

Calls

Frequently Asked Questions

What does parseFilters() do?
parseFilters() is a function in the vue codebase, defined in src/compiler/parser/filter-parser.ts.
Where is parseFilters() defined?
parseFilters() is defined in src/compiler/parser/filter-parser.ts at line 3.
What does parseFilters() call?
parseFilters() calls 1 function(s): wrapFilter.
What calls parseFilters()?
parseFilters() is called by 3 function(s): getBindingAttr, parseText, processAttrs.

Analyze Your Own Codebase

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

Try Supermodel Free