Home / Function/ read_attribute() — svelte Function Reference

read_attribute() — svelte Function Reference

Architecture documentation for the read_attribute() function in element.js from the svelte codebase.

Entity Profile

Dependency Diagram

graph TD
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec["read_attribute()"]
  206889ff_1f9f_b6c1_d530_059d001e1cf4["element.js"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|defined in| 206889ff_1f9f_b6c1_d530_059d001e1cf4
  f55653bc_77b3_5212_03f1_93bc274916e8["read_expression()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| f55653bc_77b3_5212_03f1_93bc274916e8
  7a0ffc5c_c833_ca6c_fe33_60f0f57e9307["read_identifier()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 7a0ffc5c_c833_ca6c_fe33_60f0f57e9307
  4213b2ee_a6b6_8c20_18b0_039b399bce79["attribute_empty_shorthand()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 4213b2ee_a6b6_8c20_18b0_039b399bce79
  53888034_73fb_39d8_be82_b1928817ff74["create_attribute()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 53888034_73fb_39d8_be82_b1928817ff74
  0905a037_af41_826b_7a01_9368b74b61a8["read_tag()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 0905a037_af41_826b_7a01_9368b74b61a8
  a7c00cd4_72f9_9456_d767_143236294dbf["get_directive_type()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| a7c00cd4_72f9_9456_d767_143236294dbf
  9fcb1dc7_f1ea_4501_df05_9617e7c7d114["read_attribute_value()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 9fcb1dc7_f1ea_4501_df05_9617e7c7d114
  7cef41bd_b7cf_112a_875e_5ca7e892c65e["expected_token()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 7cef41bd_b7cf_112a_875e_5ca7e892c65e
  6e8924f3_2f3e_0108_667c_ed150efbc2e4["directive_missing_name()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 6e8924f3_2f3e_0108_667c_ed150efbc2e4
  189dbd22_bc3a_237a_2467_4dccda6b0d9d["directive_invalid_value()"]
  774b1b65_7dad_02c2_b4ca_c77fc0d799ec -->|calls| 189dbd22_bc3a_237a_2467_4dccda6b0d9d
  style 774b1b65_7dad_02c2_b4ca_c77fc0d799ec fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/svelte/src/compiler/phases/1-parse/state/element.js lines 501–696

function read_attribute(parser) {
	const start = parser.index;

	if (parser.eat('{')) {
		parser.allow_whitespace();

		if (parser.eat('@attach')) {
			parser.require_whitespace();

			const expression = read_expression(parser);
			parser.allow_whitespace();
			parser.eat('}', true);

			/** @type {AST.AttachTag} */
			const attachment = {
				type: 'AttachTag',
				start,
				end: parser.index,
				expression,
				metadata: {
					expression: new ExpressionMetadata()
				}
			};

			return attachment;
		}

		if (parser.eat('...')) {
			const expression = read_expression(parser);

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

			/** @type {AST.SpreadAttribute} */
			const spread = {
				type: 'SpreadAttribute',
				start,
				end: parser.index,
				expression,
				metadata: {
					expression: new ExpressionMetadata()
				}
			};

			return spread;
		} else {
			const id = parser.read_identifier();

			if (id.name === '') {
				if (
					parser.loose &&
					(parser.match('#') || parser.match('/') || parser.match('@') || parser.match(':'))
				) {
					// We're likely in an unclosed opening tag and did read part of a block.
					// Return null to not crash the parser so it can continue with closing the tag.
					return null;
				} else if (parser.loose && parser.match('}')) {
					// Likely in the middle of typing, just created the shorthand
				} else {
					e.attribute_empty_shorthand(start);
				}
			}

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

			/** @type {AST.ExpressionTag} */
			const expression = {
				type: 'ExpressionTag',
				start: id.start,
				end: id.end,
				expression: id,
				metadata: {
					expression: new ExpressionMetadata()
				}
			};

			return create_attribute(id.name, id.loc, start, parser.index, expression);
		}
	}

Domain

Subdomains

Frequently Asked Questions

What does read_attribute() do?
read_attribute() is a function in the svelte codebase, defined in packages/svelte/src/compiler/phases/1-parse/state/element.js.
Where is read_attribute() defined?
read_attribute() is defined in packages/svelte/src/compiler/phases/1-parse/state/element.js at line 501.
What does read_attribute() call?
read_attribute() calls 10 function(s): attribute_empty_shorthand, create_attribute, directive_invalid_value, directive_missing_name, expected_token, get_directive_type, read_attribute_value, read_expression, and 2 more.

Analyze Your Own Codebase

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

Try Supermodel Free