Home / File/ tag.js — svelte Source File

tag.js — svelte Source File

Architecture documentation for tag.js, a javascript file in the svelte codebase. 14 imports, 1 dependents.

File javascript Compiler Transformer 14 imports 1 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  367a364a_2912_a1aa_b2e1_d97a82783c38["tag.js"]
  495501a4_a342_6a4d_ac11_e3e2fee8b218["errors.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 495501a4_a342_6a4d_ac11_e3e2fee8b218
  a146f6ac_0088_8736_b6ce_318f9f115170["e"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> a146f6ac_0088_8736_b6ce_318f9f115170
  bbca3d2a_42c8_b215_d3b5_5077ccaf0797["nodes.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> bbca3d2a_42c8_b215_d3b5_5077ccaf0797
  6e00a8f3_2371_ecf1_5a93_296f787aca83["ExpressionMetadata"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 6e00a8f3_2371_ecf1_5a93_296f787aca83
  2627a38d_1d02_8fc1_b764_b2aaf06f372b["acorn.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 2627a38d_1d02_8fc1_b764_b2aaf06f372b
  bb0eb4c2_ab75_feac_3814_01d1e4346bb8["parse_expression_at"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> bb0eb4c2_ab75_feac_3814_01d1e4346bb8
  caefc1b2_dc4c_2cff_4013_e8ded13e7974["context.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> caefc1b2_dc4c_2cff_4013_e8ded13e7974
  6a786ac5_79fd_078b_6df2_8e1e4a370161["read_pattern"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 6a786ac5_79fd_078b_6df2_8e1e4a370161
  8b705104_0cb9_c5c8_5bed_6dcfe73592d3["expression.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 8b705104_0cb9_c5c8_5bed_6dcfe73592d3
  049b365c_2da8_5f0c_8237_3b3a21a0c4bd["create.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 049b365c_2da8_5f0c_8237_3b3a21a0c4bd
  ba32e941_2eb9_1bb2_8ee0_1eca52813eb8["create_fragment"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> ba32e941_2eb9_1bb2_8ee0_1eca52813eb8
  0d221a90_b1cc_5826_235e_98f5216d6400["bracket.js"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> 0d221a90_b1cc_5826_235e_98f5216d6400
  dacf5984_89ce_530d_f035_1eac4b0b8e1f["match_bracket"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> dacf5984_89ce_530d_f035_1eac4b0b8e1f
  c49ac9f8_b355_57a2_8d10_b5fd945c6144["zimmerframe"]
  367a364a_2912_a1aa_b2e1_d97a82783c38 --> c49ac9f8_b355_57a2_8d10_b5fd945c6144
  style 367a364a_2912_a1aa_b2e1_d97a82783c38 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

/** @import { ArrowFunctionExpression, Expression, Identifier, Pattern } from 'estree' */
/** @import { AST } from '#compiler' */
/** @import { Parser } from '../index.js' */
import { walk } from 'zimmerframe';
import * as e from '../../../errors.js';
import { ExpressionMetadata } from '../../nodes.js';
import { parse_expression_at } from '../acorn.js';
import read_pattern from '../read/context.js';
import read_expression, { get_loose_identifier } from '../read/expression.js';
import { create_fragment } from '../utils/create.js';
import { match_bracket } from '../utils/bracket.js';

const regex_whitespace_with_closing_curly_brace = /^\s*}/;

const pointy_bois = { '<': '>' };

/** @param {Parser} parser */
export default function tag(parser) {
	const start = parser.index;
	parser.index += 1;

	parser.allow_whitespace();

	if (parser.eat('#')) return open(parser);
	if (parser.eat(':')) return next(parser);
	if (parser.eat('@')) return special(parser);
	if (parser.match('/')) {
		if (!parser.match('/*') && !parser.match('//')) {
			parser.eat('/');
			return close(parser);
		}
	}

	const expression = read_expression(parser);

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

	parser.append({
		type: 'ExpressionTag',
		start,
		end: parser.index,
		expression,
		metadata: {
			expression: new ExpressionMetadata()
		}
	});
}

/** @param {Parser} parser */
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',
// ... (692 more lines)

Domain

Subdomains

Frequently Asked Questions

What does tag.js do?
tag.js is a source file in the svelte codebase, written in javascript. It belongs to the Compiler domain, Transformer subdomain.
What functions are defined in tag.js?
tag.js defines 5 function(s): close, next, open, special, tag.
What does tag.js depend on?
tag.js imports 14 module(s): ExpressionMetadata, acorn.js, bracket.js, context.js, create.js, create_fragment, e, errors.js, and 6 more.
What files import tag.js?
tag.js is imported by 1 file(s): fragment.js.
Where is tag.js in the architecture?
tag.js is located at packages/svelte/src/compiler/phases/1-parse/state/tag.js (domain: Compiler, subdomain: Transformer, directory: packages/svelte/src/compiler/phases/1-parse/state).

Analyze Your Own Codebase

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

Try Supermodel Free