MCPcopy Index your code
hub / github.com/NativeScript/NativeScript / parse

Method parse

packages/core/ui/builder/index.ts:682–774  ·  view source on GitHub ↗
(args: xml.ParserEvent)

Source from the content-addressed store, hash-verified

680 }
681
682 public parse(args: xml.ParserEvent): XmlStateConsumer {
683 // Get the current parent.
684 const parent = this.parents[this.parents.length - 1];
685 const complexProperty = this.complexProperties[this.complexProperties.length - 1];
686
687 // Create component instance from every element declaration.
688 if (args.eventType === xml.ParserEventType.StartElement) {
689 if (ComponentParser.isComplexProperty(args.elementName)) {
690 const name = ComponentParser.getComplexPropertyName(args.elementName);
691
692 const complexProperty: ComponentParser.ComplexProperty = {
693 parent: parent,
694 name: name,
695 items: [],
696 };
697 this.complexProperties.push(complexProperty);
698
699 if (ComponentParser.isKnownTemplate(name, parent.exports)) {
700 return new TemplateParser(this, {
701 context: (parent ? getExports(parent.component) : null) || this.context,
702 parent: parent,
703 name: name,
704 elementName: args.elementName,
705 templateItems: [],
706 errorFormat: this.error,
707 sourceTracker: this.sourceTracker,
708 });
709 }
710
711 if (ComponentParser.isKnownMultiTemplate(name, parent.exports)) {
712 const parser = new MultiTemplateParser(this, {
713 context: (parent ? getExports(parent.component) : null) || this.context,
714 parent: parent,
715 name: name,
716 elementName: args.elementName,
717 templateItems: [],
718 errorFormat: this.error,
719 sourceTracker: this.sourceTracker,
720 });
721 complexProperty.parser = parser;
722
723 return parser;
724 }
725 } else {
726 const componentModule = this.buildComponent(args);
727
728 if (componentModule) {
729 this.sourceTracker(componentModule.component, args.position);
730 if (parent) {
731 if (complexProperty && complexProperty.parent == parent) {
732 // Add component to complex property of parent component.
733 ComponentParser.addToComplexProperty(parent, complexProperty, componentModule);
734 } else if ((<any>parent.component)._addChildFromBuilder) {
735 (<any>parent.component)._addChildFromBuilder(args.elementName, componentModule.component);
736 }
737 } else if (this.parents.length === 0) {
738 // Set root component.
739 this.rootComponentModule = componentModule;

Callers

nothing calls this directly

Calls 11

buildComponentMethod · 0.95
getExportsFunction · 0.85
isComplexPropertyMethod · 0.80
isKnownTemplateMethod · 0.80
isKnownMultiTemplateMethod · 0.80
addToComplexPropertyMethod · 0.80
popMethod · 0.80
_addChildFromBuilderMethod · 0.65
_addArrayFromBuilderMethod · 0.65
pushMethod · 0.45

Tested by

no test coverage detected