From: Evan You Date: Sun, 19 Nov 2023 03:20:05 +0000 (+0800) Subject: feat(compiler-core): support specifying root namespace when parsing X-Git-Tag: v3.4.0-alpha.2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=40f72d5e50b389cb11b7ca13461aa2a75ddacdb4;p=thirdparty%2Fvuejs%2Fcore.git feat(compiler-core): support specifying root namespace when parsing --- diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts index cc581fff13..b7fb571582 100644 --- a/packages/compiler-core/src/ast.ts +++ b/packages/compiler-core/src/ast.ts @@ -16,12 +16,13 @@ import { PropsExpression } from './transforms/transformElement' import { ImportItem, TransformContext } from './transform' // Vue template is a platform-agnostic superset of HTML (syntax only). -// More namespaces like SVG and MathML are declared by platform specific -// compilers. +// More namespaces can be declared by platform specific compilers. export type Namespace = number export const enum Namespaces { - HTML + HTML, + SVG, + MATH_ML } export const enum NodeTypes { diff --git a/packages/compiler-core/src/options.ts b/packages/compiler-core/src/options.ts index a85842754d..4b67ab0dd7 100644 --- a/packages/compiler-core/src/options.ts +++ b/packages/compiler-core/src/options.ts @@ -1,4 +1,10 @@ -import { ElementNode, Namespace, TemplateChildNode, ParentNode } from './ast' +import { + ElementNode, + Namespace, + TemplateChildNode, + ParentNode, + Namespaces +} from './ast' import { CompilerError } from './errors' import { NodeTransform, @@ -16,7 +22,24 @@ export interface ErrorHandlingOptions { export interface ParserOptions extends ErrorHandlingOptions, CompilerCompatOptions { + /** + * Base mode is platform agnostic and only parses HTML-like template syntax, + * treating all tags the same way. Specific tag parsing behavior can be + * configured by higher-level compilers. + * + * HTML mode adds additional logic for handling special parsing behavior in + * `