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 | |
| parent | 8ce57f2f167db67687470f2e9744cd4930c6dd95 (diff) | |
| download | wix-01ad1ca4991e830239156b10412165ce4dd839af.tar.gz wix-01ad1ca4991e830239156b10412165ce4dd839af.tar.bz2 wix-01ad1ca4991e830239156b10412165ce4dd839af.zip | |
Add CustomTableRef element.
Diffstat (limited to 'src')
| -rw-r--r-- | src/WixToolset.Core/Compiler.cs | 67 | ||||
| -rw-r--r-- | src/WixToolset.Core/Compiler_2.cs | 3 | ||||
| -rw-r--r-- | src/WixToolset.Core/Compiler_Bundle.cs | 8 | ||||
| -rw-r--r-- | src/WixToolset.Core/Compiler_Module.cs | 3 |
4 files changed, 74 insertions, 7 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; |
diff --git a/src/WixToolset.Core/Compiler_2.cs b/src/WixToolset.Core/Compiler_2.cs index 29f240f4..11063bd8 100644 --- a/src/WixToolset.Core/Compiler_2.cs +++ b/src/WixToolset.Core/Compiler_2.cs | |||
| @@ -195,6 +195,9 @@ namespace WixToolset.Core | |||
| 195 | case "CustomTable": | 195 | case "CustomTable": |
| 196 | this.ParseCustomTableElement(child); | 196 | this.ParseCustomTableElement(child); |
| 197 | break; | 197 | break; |
| 198 | case "CustomTableRef": | ||
| 199 | this.ParseCustomTableRefElement(child); | ||
| 200 | break; | ||
| 198 | case "Directory": | 201 | case "Directory": |
| 199 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); | 202 | this.ParseDirectoryElement(child, null, CompilerConstants.IntegerNotSet, String.Empty); |
| 200 | break; | 203 | break; |
diff --git a/src/WixToolset.Core/Compiler_Bundle.cs b/src/WixToolset.Core/Compiler_Bundle.cs index 2089f037..7cdb8ca0 100644 --- a/src/WixToolset.Core/Compiler_Bundle.cs +++ b/src/WixToolset.Core/Compiler_Bundle.cs | |||
| @@ -914,7 +914,6 @@ namespace WixToolset.Core | |||
| 914 | { | 914 | { |
| 915 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); | 915 | var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node); |
| 916 | string customDataId = null; | 916 | string customDataId = null; |
| 917 | var foundChild = false; | ||
| 918 | 917 | ||
| 919 | foreach (var attrib in node.Attributes()) | 918 | foreach (var attrib in node.Attributes()) |
| 920 | { | 919 | { |
| @@ -924,6 +923,7 @@ namespace WixToolset.Core | |||
| 924 | { | 923 | { |
| 925 | case "Id": | 924 | case "Id": |
| 926 | customDataId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); | 925 | customDataId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib); |
| 926 | this.Core.CreateSimpleReference(sourceLineNumbers, SymbolDefinitions.WixBundleCustomData, customDataId); | ||
| 927 | break; | 927 | break; |
| 928 | default: | 928 | default: |
| 929 | this.Core.UnexpectedAttribute(node, attrib); | 929 | this.Core.UnexpectedAttribute(node, attrib); |
| @@ -943,7 +943,6 @@ namespace WixToolset.Core | |||
| 943 | 943 | ||
| 944 | foreach (var child in node.Elements()) | 944 | foreach (var child in node.Elements()) |
| 945 | { | 945 | { |
| 946 | foundChild = true; | ||
| 947 | if (CompilerCore.WixNamespace == child.Name.Namespace) | 946 | if (CompilerCore.WixNamespace == child.Name.Namespace) |
| 948 | { | 947 | { |
| 949 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); | 948 | var childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child); |
| @@ -962,11 +961,6 @@ namespace WixToolset.Core | |||
| 962 | this.Core.ParseExtensionElement(node, child); | 961 | this.Core.ParseExtensionElement(node, child); |
| 963 | } | 962 | } |
| 964 | } | 963 | } |
| 965 | |||
| 966 | if (!foundChild) | ||
| 967 | { | ||
| 968 | this.Core.Write(ErrorMessages.ExpectedElement(sourceLineNumbers, node.Name.LocalName)); | ||
| 969 | } | ||
| 970 | } | 964 | } |
| 971 | 965 | ||
| 972 | /// <summary> | 966 | /// <summary> |
diff --git a/src/WixToolset.Core/Compiler_Module.cs b/src/WixToolset.Core/Compiler_Module.cs index a7d94701..2ecd9113 100644 --- a/src/WixToolset.Core/Compiler_Module.cs +++ b/src/WixToolset.Core/Compiler_Module.cs | |||
| @@ -141,6 +141,9 @@ namespace WixToolset.Core | |||
| 141 | case "CustomTable": | 141 | case "CustomTable": |
| 142 | this.ParseCustomTableElement(child); | 142 | this.ParseCustomTableElement(child); |
| 143 | break; | 143 | break; |
| 144 | case "CustomTableRef": | ||
| 145 | this.ParseCustomTableRefElement(child); | ||
| 146 | break; | ||
| 144 | case "Dependency": | 147 | case "Dependency": |
| 145 | this.ParseDependencyElement(child); | 148 | this.ParseDependencyElement(child); |
| 146 | break; | 149 | break; |
