diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2020-07-10 21:36:24 +1000 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2020-07-10 21:39:48 +1000 |
| commit | 01ad1ca4991e830239156b10412165ce4dd839af (patch) | |
| tree | c6f2bc7a887e7a4f2d3ad27799c7e55748497222 /src/WixToolset.Core/Compiler.cs | |
| parent | 8ce57f2f167db67687470f2e9744cd4930c6dd95 (diff) | |
| download | wix-01ad1ca4991e830239156b10412165ce4dd839af.tar.gz wix-01ad1ca4991e830239156b10412165ce4dd839af.tar.bz2 wix-01ad1ca4991e830239156b10412165ce4dd839af.zip | |
Add CustomTableRef element.
Diffstat (limited to 'src/WixToolset.Core/Compiler.cs')
| -rw-r--r-- | src/WixToolset.Core/Compiler.cs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/WixToolset.Core/Compiler.cs b/src/WixToolset.Core/Compiler.cs index 020e35fe..3fa06f9c 100644 --- a/src/WixToolset.Core/Compiler.cs +++ b/src/WixToolset.Core/Compiler.cs | |||
| @@ -3612,6 +3612,7 @@ namespace WixToolset.Core | |||
| 3612 | string tableId = null; | 3612 | string tableId = null; |
| 3613 | var unreal = false; | 3613 | var unreal = false; |
| 3614 | var columns = new List<WixCustomTableColumnSymbol>(); | 3614 | var columns = new List<WixCustomTableColumnSymbol>(); |
| 3615 | var foundColumns = false; | ||
| 3615 | 3616 | ||
| 3616 | foreach (var attrib in node.Attributes()) | 3617 | foreach (var attrib in node.Attributes()) |
| 3617 | { | 3618 | { |
| @@ -3653,6 +3654,8 @@ namespace WixToolset.Core | |||
| 3653 | switch (child.Name.LocalName) | 3654 | switch (child.Name.LocalName) |
| 3654 | { | 3655 | { |
| 3655 | case "Column": | 3656 | case "Column": |
| 3657 | foundColumns = true; | ||
| 3658 | |||
| 3656 | var column = this.ParseColumnElement(child, childSourceLineNumbers, tableId); | 3659 | var column = this.ParseColumnElement(child, childSourceLineNumbers, tableId); |
| 3657 | if (column != null) | 3660 | if (column != null) |
| 3658 | { | 3661 | { |
| @@ -3690,6 +3693,67 @@ namespace WixToolset.Core | |||
| 3690 | Unreal = unreal, | 3693 | Unreal = unreal, |
| 3691 | }); | 3694 | }); |
| 3692 | } | 3695 | } |
| 3696 | else if (!foundColumns) | ||
| 3697 | { | ||
| 3698 | this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName, "Column")); | ||
| 3699 | } | ||
| 3700 | } | ||
| 3701 | } | ||
| 3702 | |||
| 3703 | /// <summary> | ||
| 3704 | /// Parses a CustomTableRef element. | ||
| 3705 | /// </summary> | ||
| 3706 | /// <param name="node">Element to parse.</param> | ||
| 3707 | private void ParseCustomTableRefElement(XElement node) | ||
| 3708 | { | ||
| 3709 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | ||
| 3710 | string tableId = null; | ||
| 3711 | |||
| 3712 | foreach (var attrib in node.Attributes()) | ||
| 3713 | { | ||
| 3714 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace) | ||
| 3715 | { | ||
| 3716 | switch (attrib.Name.LocalName) | ||
| 3717 | { | ||
| 3718 | case "Id": | ||
| 3719 | tableId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | ||
| 3720 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixCustomTable, tableId); | ||
| 3721 | break; | ||
| 3722 | default: | ||
| 3723 | this.Core.UnexpectedAttribute(node, attrib); | ||
| 3724 | break; | ||
| 3725 | } | ||
| 3726 | } | ||
| 3727 | else | ||
| 3728 | { | ||
| 3729 | this.Core.ParseExtensionAttribute(node, attrib); | ||
| 3730 | } | ||
| 3731 | } | ||
| 3732 | |||
| 3733 | if (null == tableId) | ||
| 3734 | { | ||
| 3735 | this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id")); | ||
| 3736 | } | ||
| 3737 | |||
| 3738 | foreach (var child in node.Elements()) | ||
| 3739 | { | ||
| 3740 | if (CompilerCore.WixNamespace == child.Name.Namespace) | ||
| 3741 | { | ||
| 3742 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | ||
| 3743 | switch (child.Name.LocalName) | ||
| 3744 | { | ||
| 3745 | case "Row": | ||
| 3746 | this.ParseRowElement(child, childSourceLineNumbers, tableId); | ||
| 3747 | break; | ||
| 3748 | default: | ||
| 3749 | this.Core.UnexpectedElement(node, child); | ||
| 3750 | break; | ||
| 3751 | } | ||
| 3752 | } | ||
| 3753 | else | ||
| 3754 | { | ||
| 3755 | this.Core.ParseExtensionElement(node, child); | ||
| 3756 | } | ||
| 3693 | } | 3757 | } |
| 3694 | } | 3758 | } |
| 3695 | 3759 | ||
| @@ -6155,6 +6219,9 @@ namespace WixToolset.Core | |||
| 6155 | case "CustomTable": | 6219 | case "CustomTable": |
| 6156 | this.ParseCustomTableElement(child); | 6220 | this.ParseCustomTableElement(child); |
| 6157 | break; | 6221 | break; |
| 6222 | case "CustomTableRef": | ||
| 6223 | this.ParseCustomTableRefElement(child); | ||
| 6224 | break; | ||
| 6158 | case "Directory": | 6225 | case "Directory": |
| 6159 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); | 6226 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); |
| 6160 | break; | 6227 | break; |
