open() — svelte Function Reference
Architecture documentation for the open() function in tag.js from the svelte codebase.
Entity Profile
Dependency Diagram
graph TD f9386464_dab0_7aa2_cfd0_969e973dc903["open()"] 367a364a_2912_a1aa_b2e1_d97a82783c38["tag.js"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|defined in| 367a364a_2912_a1aa_b2e1_d97a82783c38 e584f5ba_af7a_4d95_57a7_8a4e31da0ab8["tag()"] e584f5ba_af7a_4d95_57a7_8a4e31da0ab8 -->|calls| f9386464_dab0_7aa2_cfd0_969e973dc903 f55653bc_77b3_5212_03f1_93bc274916e8["read_expression()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8 ba32e941_2eb9_1bb2_8ee0_1eca52813eb8["create_fragment()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| ba32e941_2eb9_1bb2_8ee0_1eca52813eb8 f001e0ed_0281_6ed5_61c2_bc914a036974["get_loose_identifier()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| f001e0ed_0281_6ed5_61c2_bc914a036974 563ea552_7fa4_4834_a19f_2b256bff987c["next()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| 563ea552_7fa4_4834_a19f_2b256bff987c 6a786ac5_79fd_078b_6df2_8e1e4a370161["read_pattern()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| 6a786ac5_79fd_078b_6df2_8e1e4a370161 55e60d8e_fc2d_a317_9497_a078ccacb24c["expected_identifier()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| 55e60d8e_fc2d_a317_9497_a078ccacb24c dacf5984_89ce_530d_f035_1eac4b0b8e1f["match_bracket()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| dacf5984_89ce_530d_f035_1eac4b0b8e1f bb0eb4c2_ab75_feac_3814_01d1e4346bb8["parse_expression_at()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| bb0eb4c2_ab75_feac_3814_01d1e4346bb8 784480d0_767d_ac40_b03e_ae8ddcc82684["Set()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| 784480d0_767d_ac40_b03e_ae8ddcc82684 0875dc47_a51d_ecef_77b7_d3206e748d3f["expected_block_type()"] f9386464_dab0_7aa2_cfd0_969e973dc903 -->|calls| 0875dc47_a51d_ecef_77b7_d3206e748d3f style f9386464_dab0_7aa2_cfd0_969e973dc903 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/svelte/src/compiler/phases/1-parse/state/tag.js lines 51–428
function open(parser) {
let start = parser.index - 2;
while (parser.template[start] !== '{') start -= 1;
if (parser.eat('if')) {
parser.require_whitespace();
/** @type {AST.IfBlock} */
const block = parser.append({
type: 'IfBlock',
elseif: false,
start,
end: -1,
test: read_expression(parser),
consequent: create_fragment(),
alternate: null,
metadata: {
expression: new ExpressionMetadata()
}
});
parser.allow_whitespace();
parser.eat('}', true);
parser.stack.push(block);
parser.fragments.push(block.consequent);
return;
}
if (parser.eat('each')) {
parser.require_whitespace();
const template = parser.template;
let end = parser.template.length;
/** @type {Expression | undefined} */
let expression;
// we have to do this loop because `{#each x as { y = z }}` fails to parse —
// the `as { y = z }` is treated as an Expression but it's actually a Pattern.
// the 'fix' is to backtrack and hide everything from the `as` onwards, until
// we get a valid expression
while (!expression) {
try {
expression = read_expression(parser, undefined, true);
} catch (err) {
end = /** @type {any} */ (err).position[0] - 2;
while (end > start && parser.template.slice(end, end + 2) !== 'as') {
end -= 1;
}
if (end <= start) {
if (parser.loose) {
expression = get_loose_identifier(parser);
if (expression) {
break;
}
}
throw err;
}
// @ts-expect-error parser.template is meant to be readonly, this is a special case
parser.template = template.slice(0, end);
}
}
// @ts-expect-error
parser.template = template;
parser.allow_whitespace();
// {#each} blocks must declare a context – {#each list as item}
if (!parser.match('as')) {
// this could be a TypeScript assertion that was erroneously eaten.
if (expression.type === 'SequenceExpression') {
expression = expression.expressions[0];
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does open() do?
open() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/1-parse/state/tag.js.
Where is open() defined?
open() is defined in packages/svelte/src/compiler/phases/1-parse/state/tag.js at line 51.
What does open() call?
open() calls 10 function(s): Set, create_fragment, expected_block_type, expected_identifier, get_loose_identifier, match_bracket, next, parse_expression_at, and 2 more.
What calls open()?
open() is called by 1 function(s): tag.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free