Home / Function/ build_attribute_value() — svelte Function Reference

build_attribute_value() — svelte Function Reference

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

Function javascript Compiler Transformer calls 1 called by 7

Entity Profile

Dependency Diagram

graph TD
  9f24c33c_da34_a132_f273_3ffd2f6e5cf8["build_attribute_value()"]
  74eddc85_a390_2aab_af5a_ef32b77d5430["utils.js"]
  9f24c33c_da34_a132_f273_3ffd2f6e5cf8 -->|defined in| 74eddc85_a390_2aab_af5a_ef32b77d5430
  c88b27a0_3d9f_b698_35fc_60bb9608fbad["SlotElement()"]
  c88b27a0_3d9f_b698_35fc_60bb9608fbad -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  7fdec420_5da7_caf6_9113_d56e2e3c9e8e["SvelteBoundary()"]
  7fdec420_5da7_caf6_9113_d56e2e3c9e8e -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  1077eb85_3310_4a9b_f350_d205c6451bd2["build_inline_component()"]
  1077eb85_3310_4a9b_f350_d205c6451bd2 -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  17370b4c_df64_f183_35da_1de383ea4963["build_element_attributes()"]
  17370b4c_df64_f183_35da_1de383ea4963 -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  959bef75_9552_0e6a_5eb8_b82a31b18562["build_spread_object()"]
  959bef75_9552_0e6a_5eb8_b82a31b18562 -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8["prepare_element_spread()"]
  b6b60d37_35c9_2ea4_dd94_b777d0860ea8 -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  56e39a84_7975_d0b0_be8b_b9f011cd018f["build_attr_style()"]
  56e39a84_7975_d0b0_be8b_b9f011cd018f -->|calls| 9f24c33c_da34_a132_f273_3ffd2f6e5cf8
  d6dfd043_7103_f2c7_aab3_9660fb0a5f75["escape_html()"]
  9f24c33c_da34_a132_f273_3ffd2f6e5cf8 -->|calls| d6dfd043_7103_f2c7_aab3_9660fb0a5f75
  style 9f24c33c_da34_a132_f273_3ffd2f6e5cf8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

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

export function build_attribute_value(
	value,
	context,
	transform,
	trim_whitespace = false,
	is_component = false
) {
	if (value === true) {
		return b.true;
	}

	if (!Array.isArray(value) || value.length === 1) {
		const chunk = Array.isArray(value) ? value[0] : value;

		if (chunk.type === 'Text') {
			const data = trim_whitespace
				? chunk.data.replace(regex_whitespaces_strict, ' ').trim()
				: chunk.data;

			return b.literal(is_component ? data : escape_html(data, true));
		}

		return transform(
			/** @type {Expression} */ (context.visit(chunk.expression)),
			chunk.metadata.expression
		);
	}

	let quasi = b.quasi('', false);
	const quasis = [quasi];

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

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

		if (node.type === 'Text') {
			quasi.value.raw += trim_whitespace
				? node.data.replace(regex_whitespaces_strict, ' ')
				: node.data;
		} else {
			expressions.push(
				b.call(
					'$.stringify',
					transform(
						/** @type {Expression} */ (context.visit(node.expression)),
						node.metadata.expression
					)
				)
			);

			quasi = b.quasi('', i + 1 === value.length);
			quasis.push(quasi);
		}
	}

	return b.template(quasis, expressions);
}

Domain

Subdomains

Frequently Asked Questions

What does build_attribute_value() do?
build_attribute_value() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js.
Where is build_attribute_value() defined?
build_attribute_value() is defined in packages/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js at line 190.
What does build_attribute_value() call?
build_attribute_value() calls 1 function(s): escape_html.
What calls build_attribute_value()?
build_attribute_value() is called by 7 function(s): SlotElement, SvelteBoundary, build_attr_style, build_element_attributes, build_inline_component, build_spread_object, prepare_element_spread.

Analyze Your Own Codebase

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

Try Supermodel Free