Skip to content

Commit 06508b2

Browse files
committed
Version 0.0.38. A better translation of private extension methods.
1 parent 9ca1d77 commit 06508b2

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,19 @@ public class CSharpToCppTransformer : Transformer
4444
// template <typename TObject, TProperty, TValue>
4545
// template <typename TObject, typename TProperty, TValue>
4646
(new Regex(@"(?<before>template <((, )?typename [a-zA-Z0-9]+)+, )(?<typeParameter>[a-zA-Z0-9]+)(?<after>(,|>))"), "${before}typename ${typeParameter}${after}", null, 10),
47+
// Insert markers
48+
// private static void BuildExceptionString(this StringBuilder sb, Exception exception, int level)
49+
// /*~extensionMethod~BuildExceptionString~*/private static void BuildExceptionString(this StringBuilder sb, Exception exception, int level)
50+
(new Regex(@"private static [^\r\n]+ (?<name>[a-zA-Z0-9]+)\(this [^\)\r\n]+\)"), "/*~extensionMethod~${name}~*/$0", null, 0),
51+
// Move all markers to the beginning of the file.
52+
(new Regex(@"\A(?<before>[^\r\n]+\r?\n(.|\n)+)(?<marker>/\*~extensionMethod~(?<name>[a-zA-Z0-9]+)~\*/)"), "${marker}${before}", null, 10),
53+
// /*~extensionMethod~BuildExceptionString~*/...sb.BuildExceptionString(exception.InnerException, level + 1);
54+
// /*~extensionMethod~BuildExceptionString~*/...BuildExceptionString(sb, exception.InnerException, level + 1);
55+
(new Regex(@"(?<before>/\*~extensionMethod~(?<name>[a-zA-Z0-9]+)~\*/(.|\n)+\W)(?<variable>[_a-zA-Z0-9]+)\.\k<name>\("), "${before}${name}(${variable}, ", null, 50),
56+
// Remove markers
57+
// /*~extensionMethod~BuildExceptionString~*/
58+
//
59+
(new Regex(@"/\*~extensionMethod~[a-zA-Z0-9]+~\*/"), "", null, 0),
4760
// (this
4861
// (
4962
(new Regex(@"\(this "), "(", null, 0),

Platform.RegularExpressions.Transformer.CSharpToCpp/Platform.RegularExpressions.Transformer.CSharpToCpp.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<Description>LinksPlatform's Platform.RegularExpressions.Transformer.CSharpToCpp Class Library</Description>
55
<Copyright>Konstantin Diachenko</Copyright>
66
<AssemblyTitle>Platform.RegularExpressions.Transformer.CSharpToCpp</AssemblyTitle>
7-
<VersionPrefix>0.0.37</VersionPrefix>
7+
<VersionPrefix>0.0.38</VersionPrefix>
88
<Authors>Konstantin Diachenko</Authors>
99
<TargetFrameworks>net471;netstandard2.0;netstandard2.1</TargetFrameworks>
1010
<AssemblyName>Platform.RegularExpressions.Transformer.CSharpToCpp</AssemblyName>
@@ -24,7 +24,7 @@
2424
<IncludeSymbols>true</IncludeSymbols>
2525
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
2626
<LangVersion>latest</LangVersion>
27-
<PackageReleaseNotes>std::string should be passed to methods as reference when it is used as alternative to StringBuilder.</PackageReleaseNotes>
27+
<PackageReleaseNotes>A better translation of private extension methods.</PackageReleaseNotes>
2828
</PropertyGroup>
2929

3030
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">

0 commit comments

Comments
 (0)