From 720c4a0db1a2fb2aa3e08e5c99d5198873e448ba Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Fri, 1 Dec 2017 01:09:42 -0800 Subject: Introduce ExampleExtension for testing --- src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs | 5 +++++ .../ExtensibilityServices/TupleDefinitionCreator.cs | 15 +++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'src/WixToolset.Core') diff --git a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs index 87ad0da8..8a67efe9 100644 --- a/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs +++ b/src/WixToolset.Core/ExtensibilityServices/ParseHelper.cs @@ -633,6 +633,11 @@ namespace WixToolset.Core.ExtensibilityServices } } + public SourceLineNumber GetSourceLineNumbers(XElement element) + { + return Preprocessor.GetSourceLineNumbers(element); + } + public string GetConditionInnerText(XElement element) { var value = Common.GetInnerText(element)?.Trim().Replace('\t', ' ').Replace('\r', ' ').Replace('\n', ' '); diff --git a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs index 4075def8..b442da2b 100644 --- a/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs +++ b/src/WixToolset.Core/ExtensibilityServices/TupleDefinitionCreator.cs @@ -19,8 +19,16 @@ namespace WixToolset.Core.ExtensibilityServices private IEnumerable ExtensionData { get; set; } + private Dictionary CustomDefinitionByName { get; } = new Dictionary(); + + public void AddCustomTupleDefinition(IntermediateTupleDefinition definition) + { + this.CustomDefinitionByName.Add(definition.Name, definition); + } + public bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition) { + // First, look in the built-ins. tupleDefinition = TupleDefinitions.ByName(name); if (tupleDefinition == null) @@ -30,6 +38,7 @@ namespace WixToolset.Core.ExtensibilityServices this.LoadExtensionData(); } + // Second, look in the extensions. foreach (var data in this.ExtensionData) { if (data.TryGetTupleDefinitionByName(name, out tupleDefinition)) @@ -37,6 +46,12 @@ namespace WixToolset.Core.ExtensibilityServices break; } } + + // Finally, look in the custom tuple definitions provided during an intermediate load. + if (tupleDefinition == null) + { + this.CustomDefinitionByName.TryGetValue(name, out tupleDefinition); + } } return tupleDefinition != null; -- cgit v1.2.3-55-g6feb