(args: xml.ParserEvent)
| 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; |
nothing calls this directly
no test coverage detected