diff options
Diffstat (limited to 'src/test/Example.Extension')
| -rw-r--r-- | src/test/Example.Extension/Example.Extension.csproj | 18 | ||||
| -rw-r--r-- | src/test/Example.Extension/ExampleCompilerExtension.cs | 84 | ||||
| -rw-r--r-- | src/test/Example.Extension/ExampleExtensionData.cs | 33 | ||||
| -rw-r--r-- | src/test/Example.Extension/ExampleExtensionFactory.cs | 32 | ||||
| -rw-r--r-- | src/test/Example.Extension/ExamplePreprocessorExtension.cs | 55 | ||||
| -rw-r--r-- | src/test/Example.Extension/ExampleTuple.cs | 31 | ||||
| -rw-r--r-- | src/test/Example.Extension/TupleDefinitions.cs | 18 |
7 files changed, 271 insertions, 0 deletions
diff --git a/src/test/Example.Extension/Example.Extension.csproj b/src/test/Example.Extension/Example.Extension.csproj new file mode 100644 index 00000000..80c64b25 --- /dev/null +++ b/src/test/Example.Extension/Example.Extension.csproj | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> | ||
| 3 | |||
| 4 | <Project Sdk="Microsoft.NET.Sdk"> | ||
| 5 | <PropertyGroup> | ||
| 6 | <TargetFramework>netstandard2.0</TargetFramework> | ||
| 7 | <IsPackable>false</IsPackable> | ||
| 8 | </PropertyGroup> | ||
| 9 | |||
| 10 | <ItemGroup> | ||
| 11 | <ProjectReference Include="$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " /> | ||
| 12 | <PackageReference Include="WixToolset.Data" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " /> | ||
| 13 | |||
| 14 | <ProjectReference Include="$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " /> | ||
| 15 | <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " /> | ||
| 16 | </ItemGroup> | ||
| 17 | |||
| 18 | </Project> | ||
diff --git a/src/test/Example.Extension/ExampleCompilerExtension.cs b/src/test/Example.Extension/ExampleCompilerExtension.cs new file mode 100644 index 00000000..5b20e48f --- /dev/null +++ b/src/test/Example.Extension/ExampleCompilerExtension.cs | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using System.Collections.Generic; | ||
| 7 | using System.Xml.Linq; | ||
| 8 | using WixToolset.Data; | ||
| 9 | using WixToolset.Extensibility; | ||
| 10 | |||
| 11 | internal class ExampleCompilerExtension : BaseCompilerExtension | ||
| 12 | { | ||
| 13 | public ExampleCompilerExtension() | ||
| 14 | { | ||
| 15 | this.Namespace = "http://www.example.com/scheams/v1/wxs"; | ||
| 16 | } | ||
| 17 | |||
| 18 | public override void ParseElement(Intermediate intermediate, IntermediateSection section, XElement parentElement, XElement element, IDictionary<string, string> context) | ||
| 19 | { | ||
| 20 | var processed = false; | ||
| 21 | |||
| 22 | switch (parentElement.Name.LocalName) | ||
| 23 | { | ||
| 24 | case "Component": | ||
| 25 | switch (element.Name.LocalName) | ||
| 26 | { | ||
| 27 | case "Example": | ||
| 28 | this.ParseExampleElement(intermediate, section, element); | ||
| 29 | processed = true; | ||
| 30 | break; | ||
| 31 | } | ||
| 32 | break; | ||
| 33 | } | ||
| 34 | |||
| 35 | if (!processed) | ||
| 36 | { | ||
| 37 | base.ParseElement(intermediate, section, parentElement, element, context); | ||
| 38 | } | ||
| 39 | } | ||
| 40 | |||
| 41 | private void ParseExampleElement(Intermediate intermediate, IntermediateSection section, XElement element) | ||
| 42 | { | ||
| 43 | var sourceLineNumbers = this.ParseHelper.GetSourceLineNumbers(element); | ||
| 44 | Identifier id = null; | ||
| 45 | string value = null; | ||
| 46 | |||
| 47 | foreach (var attrib in element.Attributes()) | ||
| 48 | { | ||
| 49 | if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace) | ||
| 50 | { | ||
| 51 | switch (attrib.Name.LocalName) | ||
| 52 | { | ||
| 53 | case "Id": | ||
| 54 | id = this.ParseHelper.GetAttributeIdentifier(sourceLineNumbers, attrib); | ||
| 55 | break; | ||
| 56 | |||
| 57 | case "Value": | ||
| 58 | value = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attrib); | ||
| 59 | break; | ||
| 60 | |||
| 61 | default: | ||
| 62 | this.ParseHelper.UnexpectedAttribute(element, attrib); | ||
| 63 | break; | ||
| 64 | } | ||
| 65 | } | ||
| 66 | else | ||
| 67 | { | ||
| 68 | this.ParseAttribute(intermediate, section, element, attrib, null); | ||
| 69 | } | ||
| 70 | } | ||
| 71 | |||
| 72 | if (null == id) | ||
| 73 | { | ||
| 74 | //this.Messaging(WixErrors.ExpectedAttribute(sourceLineNumbers, element.Name.LocalName, "Id")); | ||
| 75 | } | ||
| 76 | |||
| 77 | if (!this.Messaging.EncounteredError) | ||
| 78 | { | ||
| 79 | var tuple = this.ParseHelper.CreateRow(section, sourceLineNumbers, "Example", id); | ||
| 80 | tuple.Set(1, value); | ||
| 81 | } | ||
| 82 | } | ||
| 83 | } | ||
| 84 | } | ||
diff --git a/src/test/Example.Extension/ExampleExtensionData.cs b/src/test/Example.Extension/ExampleExtensionData.cs new file mode 100644 index 00000000..c3cb0473 --- /dev/null +++ b/src/test/Example.Extension/ExampleExtensionData.cs | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using WixToolset.Data; | ||
| 6 | using WixToolset.Extensibility; | ||
| 7 | |||
| 8 | internal class ExampleExtensionData : IExtensionData | ||
| 9 | { | ||
| 10 | public string DefaultCulture => null; | ||
| 11 | |||
| 12 | public Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions) | ||
| 13 | { | ||
| 14 | return null; | ||
| 15 | } | ||
| 16 | |||
| 17 | public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) | ||
| 18 | { | ||
| 19 | switch (name) | ||
| 20 | { | ||
| 21 | case "Example": | ||
| 22 | tupleDefinition = TupleDefinitions.Example; | ||
| 23 | break; | ||
| 24 | |||
| 25 | default: | ||
| 26 | tupleDefinition = null; | ||
| 27 | break; | ||
| 28 | } | ||
| 29 | |||
| 30 | return tupleDefinition != null; | ||
| 31 | } | ||
| 32 | } | ||
| 33 | } \ No newline at end of file | ||
diff --git a/src/test/Example.Extension/ExampleExtensionFactory.cs b/src/test/Example.Extension/ExampleExtensionFactory.cs new file mode 100644 index 00000000..9539ee85 --- /dev/null +++ b/src/test/Example.Extension/ExampleExtensionFactory.cs | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using WixToolset.Extensibility; | ||
| 7 | |||
| 8 | public class ExampleExtensionFactory : IExtensionFactory | ||
| 9 | { | ||
| 10 | public bool TryCreateExtension(Type extensionType, out object extension) | ||
| 11 | { | ||
| 12 | if (extensionType == typeof(IPreprocessorExtension)) | ||
| 13 | { | ||
| 14 | extension = new ExamplePreprocessorExtension(); | ||
| 15 | } | ||
| 16 | else if (extensionType == typeof(ICompilerExtension)) | ||
| 17 | { | ||
| 18 | extension = new ExampleCompilerExtension(); | ||
| 19 | } | ||
| 20 | else if (extensionType == typeof(IExtensionData)) | ||
| 21 | { | ||
| 22 | extension = new ExampleExtensionData(); | ||
| 23 | } | ||
| 24 | else | ||
| 25 | { | ||
| 26 | extension = null; | ||
| 27 | } | ||
| 28 | |||
| 29 | return extension != null; | ||
| 30 | } | ||
| 31 | } | ||
| 32 | } | ||
diff --git a/src/test/Example.Extension/ExamplePreprocessorExtension.cs b/src/test/Example.Extension/ExamplePreprocessorExtension.cs new file mode 100644 index 00000000..c16c8b5a --- /dev/null +++ b/src/test/Example.Extension/ExamplePreprocessorExtension.cs | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using System; | ||
| 6 | using System.Xml.Linq; | ||
| 7 | using WixToolset.Data; | ||
| 8 | using WixToolset.Extensibility; | ||
| 9 | |||
| 10 | internal class ExamplePreprocessorExtension : IPreprocessorExtension | ||
| 11 | { | ||
| 12 | public ExamplePreprocessorExtension() | ||
| 13 | { | ||
| 14 | } | ||
| 15 | |||
| 16 | public IPreprocessorCore Core { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } | ||
| 17 | |||
| 18 | public string[] Prefixes => throw new NotImplementedException(); | ||
| 19 | |||
| 20 | public string EvaluateFunction(string prefix, string function, string[] args) | ||
| 21 | { | ||
| 22 | throw new NotImplementedException(); | ||
| 23 | } | ||
| 24 | |||
| 25 | public void Finish() | ||
| 26 | { | ||
| 27 | throw new NotImplementedException(); | ||
| 28 | } | ||
| 29 | |||
| 30 | public string GetVariableValue(string prefix, string name) | ||
| 31 | { | ||
| 32 | throw new NotImplementedException(); | ||
| 33 | } | ||
| 34 | |||
| 35 | public void Initialize() | ||
| 36 | { | ||
| 37 | throw new NotImplementedException(); | ||
| 38 | } | ||
| 39 | |||
| 40 | public void PreprocessDocument(XDocument document) | ||
| 41 | { | ||
| 42 | throw new NotImplementedException(); | ||
| 43 | } | ||
| 44 | |||
| 45 | public string PreprocessParameter(string name) | ||
| 46 | { | ||
| 47 | throw new NotImplementedException(); | ||
| 48 | } | ||
| 49 | |||
| 50 | public bool ProcessPragma(SourceLineNumber sourceLineNumbers, string prefix, string pragma, string args, XContainer parent) | ||
| 51 | { | ||
| 52 | throw new NotImplementedException(); | ||
| 53 | } | ||
| 54 | } | ||
| 55 | } \ No newline at end of file | ||
diff --git a/src/test/Example.Extension/ExampleTuple.cs b/src/test/Example.Extension/ExampleTuple.cs new file mode 100644 index 00000000..f280a5c8 --- /dev/null +++ b/src/test/Example.Extension/ExampleTuple.cs | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using WixToolset.Data; | ||
| 6 | |||
| 7 | public enum ExampleTupleFields | ||
| 8 | { | ||
| 9 | Example, | ||
| 10 | Value, | ||
| 11 | } | ||
| 12 | |||
| 13 | public class ExampleTuple : IntermediateTuple | ||
| 14 | { | ||
| 15 | public ExampleTuple() : base(TupleDefinitions.Example, null, null) | ||
| 16 | { | ||
| 17 | } | ||
| 18 | |||
| 19 | public ExampleTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(TupleDefinitions.Example, sourceLineNumber, id) | ||
| 20 | { | ||
| 21 | } | ||
| 22 | |||
| 23 | public IntermediateField this[ExampleTupleFields index] => this.Fields[(int)index]; | ||
| 24 | |||
| 25 | public string Value | ||
| 26 | { | ||
| 27 | get => this.Fields[(int)ExampleTupleFields.Value]?.AsString(); | ||
| 28 | set => this.Set((int)ExampleTupleFields.Value, value); | ||
| 29 | } | ||
| 30 | } | ||
| 31 | } | ||
diff --git a/src/test/Example.Extension/TupleDefinitions.cs b/src/test/Example.Extension/TupleDefinitions.cs new file mode 100644 index 00000000..2c320fbc --- /dev/null +++ b/src/test/Example.Extension/TupleDefinitions.cs | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
| 2 | |||
| 3 | namespace Example.Extension | ||
| 4 | { | ||
| 5 | using WixToolset.Data; | ||
| 6 | |||
| 7 | public static class TupleDefinitions | ||
| 8 | { | ||
| 9 | public static readonly IntermediateTupleDefinition Example = new IntermediateTupleDefinition( | ||
| 10 | "Example", | ||
| 11 | new[] | ||
| 12 | { | ||
| 13 | new IntermediateFieldDefinition(nameof(ExampleTupleFields.Example), IntermediateFieldType.String), | ||
| 14 | new IntermediateFieldDefinition(nameof(ExampleTupleFields.Value), IntermediateFieldType.String), | ||
| 15 | }, | ||
| 16 | typeof(ExampleTuple)); | ||
| 17 | } | ||
| 18 | } | ||
