MCPcopy Index your code
hub / github.com/angular/angular / parsePrimaryTriggers

Function parsePrimaryTriggers

packages/compiler/src/render3/r3_deferred_blocks.ts:266–308  ·  view source on GitHub ↗
(
  ast: html.Block,
  bindingParser: BindingParser,
  errors: ParseError[],
  placeholder: t.DeferredBlockPlaceholder | null,
)

Source from the content-addressed store, hash-verified

264}
265
266function parsePrimaryTriggers(
267 ast: html.Block,
268 bindingParser: BindingParser,
269 errors: ParseError[],
270 placeholder: t.DeferredBlockPlaceholder | null,
271) {
272 const triggers: t.DeferredBlockTriggers = {};
273 const prefetchTriggers: t.DeferredBlockTriggers = {};
274 const hydrateTriggers: t.DeferredBlockTriggers = {};
275
276 for (const param of ast.parameters) {
277 // The lexer ignores the leading spaces so we can assume
278 // that the expression starts with a keyword.
279 if (WHEN_PARAMETER_PATTERN.test(param.expression)) {
280 parseWhenTrigger(param, bindingParser, triggers, errors);
281 } else if (ON_PARAMETER_PATTERN.test(param.expression)) {
282 parseOnTrigger(param, bindingParser, triggers, errors, placeholder);
283 } else if (PREFETCH_WHEN_PATTERN.test(param.expression)) {
284 parseWhenTrigger(param, bindingParser, prefetchTriggers, errors);
285 } else if (PREFETCH_ON_PATTERN.test(param.expression)) {
286 parseOnTrigger(param, bindingParser, prefetchTriggers, errors, placeholder);
287 } else if (HYDRATE_WHEN_PATTERN.test(param.expression)) {
288 parseWhenTrigger(param, bindingParser, hydrateTriggers, errors);
289 } else if (HYDRATE_ON_PATTERN.test(param.expression)) {
290 parseOnTrigger(param, bindingParser, hydrateTriggers, errors, placeholder);
291 } else if (HYDRATE_NEVER_PATTERN.test(param.expression)) {
292 parseNeverTrigger(param, hydrateTriggers, errors);
293 } else {
294 errors.push(new ParseError(param.sourceSpan, 'Unrecognized trigger'));
295 }
296 }
297
298 if (hydrateTriggers.never && Object.keys(hydrateTriggers).length > 1) {
299 errors.push(
300 new ParseError(
301 ast.startSourceSpan,
302 'Cannot specify additional `hydrate` triggers if `hydrate never` is present',
303 ),
304 );
305 }
306
307 return {triggers, prefetchTriggers, hydrateTriggers};
308}

Callers 1

createDeferredBlockFunction · 0.85

Calls 6

parseWhenTriggerFunction · 0.90
parseOnTriggerFunction · 0.90
parseNeverTriggerFunction · 0.90
keysMethod · 0.65
testMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…