Skip to content

Commit

Permalink
Merge branch 'add-escapexml-resolve-modifier' into 'main'
Browse files Browse the repository at this point in the history
Add a new resolver modifier to be able to escape xml characters

See merge request Sharpmake/sharpmake!475
  • Loading branch information
jspelletier committed Nov 3, 2023
2 parents 25dbd5a + 9dbdf44 commit fc38e6a
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 8 deletions.
Expand Up @@ -79,7 +79,7 @@ public sealed partial class AndroidPlatform
<PrecompiledHeader>[options.UsePrecompiledHeader]</PrecompiledHeader>
<WarningLevel>[options.WarningLevel]</WarningLevel>
<Optimization>[options.Optimization]</Optimization>
<PreprocessorDefinitions>[options.PreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>[options.AdditionalIncludeDirectories];%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>[options.DebugInformationFormat]</DebugInformationFormat>
<TreatWarningAsError>[options.TreatWarningAsError]</TreatWarningAsError>
Expand Down
Expand Up @@ -79,7 +79,7 @@ public sealed partial class AndroidAgdePlatform
<PrecompiledHeader>[options.UsePrecompiledHeader]</PrecompiledHeader>
<WarningLevel>[options.WarningLevel]</WarningLevel>
<Optimization>[options.Optimization]</Optimization>
<PreprocessorDefinitions>[options.PreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>[options.AdditionalIncludeDirectories];%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ClangDebugInformationFormat>[options.ClangDebugInformationFormat]</ClangDebugInformationFormat>
<LimitDebugInfo>[options.LimitDebugInfo]</LimitDebugInfo>
Expand Down
Expand Up @@ -7,7 +7,7 @@ public abstract partial class BaseMicrosoftPlatform
{
private const string _projectConfigurationsMasmTemplate =
@" <MASM>
<PreprocessorDefinitions>[options.PreprocessorDefinitions];%(PreprocessorDefinitions);$(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions);$(PreprocessorDefinitions)</PreprocessorDefinitions>
<IncludePaths>[options.AdditionalAssemblyIncludeDirectories]</IncludePaths>
</MASM>
";
Expand Down
Expand Up @@ -14,7 +14,7 @@ public abstract partial class BasePlatform
<ExternalWarningLevel>[options.ExternalWarningLevel]</ExternalWarningLevel>
<ExternalTemplatesDiagnostics>[options.ExternalTemplatesDiagnostics]</ExternalTemplatesDiagnostics>
<Optimization>[options.Optimization]</Optimization>
<PreprocessorDefinitions>[options.PreprocessorDefinitions];%(PreprocessorDefinitions);$(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions);$(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>[options.AdditionalIncludeDirectories]</AdditionalIncludeDirectories>
<AdditionalUsingDirectories>[options.AdditionalUsingDirectories]</AdditionalUsingDirectories>
<DebugInformationFormat>[options.DebugInformationFormat]</DebugInformationFormat>
Expand Down Expand Up @@ -267,7 +267,7 @@ public abstract partial class BasePlatform
del ""[options.OutputDirectory]\[conf.TargetFileFullName].lib"" &gt;NUL 2&gt;NUL
del ""[options.OutputDirectory]\[conf.TargetFileFullName].pdb"" &gt;NUL 2&gt;NUL</NMakeCleanCommandLine>
<NMakeOutput>[options.OutputFile]</NMakeOutput>
<NMakePreprocessorDefinitions>[options.PreprocessorDefinitions]</NMakePreprocessorDefinitions>
<NMakePreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions]</NMakePreprocessorDefinitions>
<NMakeIncludeSearchPath>[options.AdditionalIncludeDirectories]</NMakeIncludeSearchPath>
<NMakeForcedIncludes>[options.ForcedIncludeFiles]</NMakeForcedIncludes>
<AdditionalOptions>[options.AdditionalOptions]</AdditionalOptions>
Expand All @@ -282,7 +282,7 @@ public abstract partial class BasePlatform
<NMakeReBuildCommandLine>[conf.CustomBuildSettings.RebuildCommand]</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>[conf.CustomBuildSettings.CleanCommand]</NMakeCleanCommandLine>
<NMakeOutput>[conf.CustomBuildSettings.OutputFile]</NMakeOutput>
<NMakePreprocessorDefinitions>[options.PreprocessorDefinitions]</NMakePreprocessorDefinitions>
<NMakePreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions]</NMakePreprocessorDefinitions>
<NMakeIncludeSearchPath>[options.AdditionalIncludeDirectories]</NMakeIncludeSearchPath>
<NMakeForcedIncludes>[options.ForcedIncludeFiles]</NMakeForcedIncludes>
<AdditionalOptions>[options.AdditionalOptions]</AdditionalOptions>
Expand Down
Expand Up @@ -13,7 +13,7 @@ public sealed partial class LinuxPlatform
private const string _projectConfigurationsCompileTemplate =
@" <ClCompile>
<PrecompiledHeader>[options.UsePrecompiledHeader]</PrecompiledHeader>
<PreprocessorDefinitions>[options.PreprocessorDefinitions];%(PreprocessorDefinitions);</PreprocessorDefinitions>
<PreprocessorDefinitions>[EscapeXML:options.PreprocessorDefinitions];%(PreprocessorDefinitions);</PreprocessorDefinitions>
<ForcedIncludeFiles>[options.ForcedIncludeFiles]</ForcedIncludeFiles>
<DebugInformationFormat>[options.DebugInformationFormat]</DebugInformationFormat>
<Warnings>[options.Warnings]</Warnings>
Expand Down
15 changes: 15 additions & 0 deletions Sharpmake.UnitTests/ResolverTest.cs
Expand Up @@ -286,6 +286,21 @@ public void CanResolveStringsToLower()
Assert.That(obj.Value2, Is.EqualTo("propertyclass"));
Assert.That(obj.Value3, Is.EqualTo("propertyclass"));
}

[Test]
public void CanResolveStringsEscape()
{
var obj = new PropertyClass();
obj.Value1 = "<stuff>";

string someTemplate = @"<Field>[EscapeXML:obj.Value1]</Field>";

var resolver = new Resolver();
resolver.SetParameter("obj", obj);
string result = resolver.Resolve(someTemplate);

Assert.AreEqual("<Field>&lt;stuff&gt;</Field>", result);
}
}
}

5 changes: 4 additions & 1 deletion Sharpmake/Resolver.cs
Expand Up @@ -594,7 +594,8 @@ public NotFoundException(string message, IEnumerable<string> arguments = null)
private enum PropertyModifier
{
None,
Lower
Lower,
EscapeXML
}

private static readonly char[] s_modifierNameSplitter = new[] { ':' };
Expand Down Expand Up @@ -626,6 +627,8 @@ private static string ApplyModifier(PropertyModifier modifier, string input)
return input;
case PropertyModifier.Lower:
return input.ToLowerInvariant();
case PropertyModifier.EscapeXML:
return Util.EscapeXml(input);
default:
throw new NotSupportedException($"Don't know how to apply modifier {modifier} to '{input}'");
}
Expand Down

0 comments on commit fc38e6a

Please sign in to comment.