Home / Function/ build_template() — svelte Function Reference

build_template() — svelte Function Reference

Architecture documentation for the build_template() function in utils.js from the svelte codebase.

Function javascript Compiler Transformer calls 1 called by 5

Entity Profile

Dependency Diagram

graph TD
  49bc6956_1326_e1db_837c_bb4db2493060["build_template()"]
  74eddc85_a390_2aab_af5a_ef32b77d5430["utils.js"]
  49bc6956_1326_e1db_837c_bb4db2493060 -->|defined in| 74eddc85_a390_2aab_af5a_ef32b77d5430
  018cf13b_00c1_1002_de36_76e71d0a0a5e["Fragment()"]
  018cf13b_00c1_1002_de36_76e71d0a0a5e -->|calls| 49bc6956_1326_e1db_837c_bb4db2493060
  602abe50_d235_587e_7077_a4250fe9dc79["RegularElement()"]
  602abe50_d235_587e_7077_a4250fe9dc79 -->|calls| 49bc6956_1326_e1db_837c_bb4db2493060
  7fdec420_5da7_caf6_9113_d56e2e3c9e8e["SvelteBoundary()"]
  7fdec420_5da7_caf6_9113_d56e2e3c9e8e -->|calls| 49bc6956_1326_e1db_837c_bb4db2493060
  c4f05925_802b_7561_caa7_d44e5e7a50fd["SvelteElement()"]
  c4f05925_802b_7561_caa7_d44e5e7a50fd -->|calls| 49bc6956_1326_e1db_837c_bb4db2493060
  2cc87ff4_8315_a5e3_6fa2_6ca8a78b161c["TitleElement()"]
  2cc87ff4_8315_a5e3_6fa2_6ca8a78b161c -->|calls| 49bc6956_1326_e1db_837c_bb4db2493060
  d83b6ec4_54a2_eaba_fd40_13cbbdc6982f["is_statement()"]
  49bc6956_1326_e1db_837c_bb4db2493060 -->|calls| d83b6ec4_54a2_eaba_fd40_13cbbdc6982f
  style 49bc6956_1326_e1db_837c_bb4db2493060 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js lines 120–179

export function build_template(template) {
	/** @type {string[]} */
	let strings = [];

	/** @type {Expression[]} */
	let expressions = [];

	/** @type {Statement[]} */
	const statements = [];

	const flush = () => {
		statements.push(
			b.stmt(
				b.call(
					b.id('$$renderer.push'),
					b.template(
						strings.map((cooked, i) => b.quasi(cooked, i === strings.length - 1)),
						expressions
					)
				)
			)
		);

		strings = [];
		expressions = [];
	};

	for (let i = 0; i < template.length; i++) {
		const node = template[i];

		if (is_statement(node)) {
			if (strings.length !== 0) {
				flush();
			}

			statements.push(node);
		} else {
			if (strings.length === 0) {
				strings.push('');
			}

			if (node.type === 'Literal') {
				strings[strings.length - 1] += node.value;
			} else if (node.type === 'TemplateLiteral') {
				strings[strings.length - 1] += node.quasis[0].value.cooked;
				strings.push(...node.quasis.slice(1).map((q) => /** @type {string} */ (q.value.cooked)));
				expressions.push(...node.expressions);
			} else {
				expressions.push(node);
				strings.push('');
			}
		}
	}

	if (strings.length !== 0) {
		flush();
	}

	return statements;
}

Domain

Subdomains

Frequently Asked Questions

What does build_template() do?
build_template() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js.
Where is build_template() defined?
build_template() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js at line 120.
What does build_template() call?
build_template() calls 1 function(s): is_statement.
What calls build_template()?
build_template() is called by 5 function(s): Fragment, RegularElement, SvelteBoundary, SvelteElement, TitleElement.

Analyze Your Own Codebase

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

Try Supermodel Free