Home / Function/ close() — svelte Function Reference

close() — svelte Function Reference

Architecture documentation for the close() function in tag.js from the svelte codebase.

Function javascript Compiler Transformer calls 1 called by 1

Entity Profile

Dependency Diagram

graph TD
  93dbe567_aab1_fb2d_cac2_875590f2699a["close()"]
  367a364a_2912_a1aa_b2e1_d97a82783c38["tag.js"]
  93dbe567_aab1_fb2d_cac2_875590f2699a -->|defined in| 367a364a_2912_a1aa_b2e1_d97a82783c38
  e584f5ba_af7a_4d95_57a7_8a4e31da0ab8["tag()"]
  e584f5ba_af7a_4d95_57a7_8a4e31da0ab8 -->|calls| 93dbe567_aab1_fb2d_cac2_875590f2699a
  876703c3_c368_a002_a77b_5facb6629b62["block_unexpected_close()"]
  93dbe567_aab1_fb2d_cac2_875590f2699a -->|calls| 876703c3_c368_a002_a77b_5facb6629b62
  style 93dbe567_aab1_fb2d_cac2_875590f2699a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/1-parse/state/tag.js lines 545–613

function close(parser) {
	const start = parser.index - 1;

	let block = parser.current();
	/** Only relevant/reached for loose parsing mode */
	let matched;

	switch (block.type) {
		case 'IfBlock':
			matched = parser.eat('if', true, false);

			if (!matched) {
				block.end = start - 1;
				parser.pop();
				close(parser);
				return;
			}

			parser.allow_whitespace();
			parser.eat('}', true);

			while (block.elseif) {
				block.end = parser.index;
				parser.stack.pop();
				block = /** @type {AST.IfBlock} */ (parser.current());
			}

			block.end = parser.index;
			parser.pop();
			return;

		case 'EachBlock':
			matched = parser.eat('each', true, false);
			break;
		case 'KeyBlock':
			matched = parser.eat('key', true, false);
			break;
		case 'AwaitBlock':
			matched = parser.eat('await', true, false);
			break;
		case 'SnippetBlock':
			matched = parser.eat('snippet', true, false);
			break;

		case 'RegularElement':
			if (parser.loose) {
				matched = false;
			} else {
				// TODO handle implicitly closed elements
				e.block_unexpected_close(start);
			}
			break;

		default:
			e.block_unexpected_close(start);
	}

	if (!matched) {
		block.end = start - 1;
		parser.pop();
		close(parser);
		return;
	}

	parser.allow_whitespace();
	parser.eat('}', true);
	block.end = parser.index;
	parser.pop();
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does close() do?
close() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/1-parse/state/tag.js.
Where is close() defined?
close() is defined in packages/svelte/src/compiler/phases/1-parse/state/tag.js at line 545.
What does close() call?
close() calls 1 function(s): block_unexpected_close.
What calls close()?
close() 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