diff --git a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp.Tests/CSharpToCppTransformerTests.cs b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp.Tests/CSharpToCppTransformerTests.cs index edca381..42a6998 100644 --- a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp.Tests/CSharpToCppTransformerTests.cs +++ b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp.Tests/CSharpToCppTransformerTests.cs @@ -35,5 +35,6 @@ public static void Main(string[] args) var actualResult = transformer.Transform(helloWorldCode); Assert.Equal(expectedResult, actualResult); } + } } diff --git a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs index 2f5dceb..4db4b46 100644 --- a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs +++ b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs @@ -365,8 +365,8 @@ public class CSharpToCppTransformer : TextTransformer (new Regex(@"(?\r?\n(?[\t ]*)template [^<>\n]+)> (struct|class) (?[a-zA-Z0-9]+<\k>)(\s*:\s*[^{\n]+)?[\t ]*(\r?\n)?[\t ]*{)(?((?!class|struct).|\n)+?)(?(?(private|protected|public): )override std::string ToString\(\))"), "${classDeclarationBegin}/*~${type}~*/${middle}${toStringDeclaration}", 0), // Inside the scope of ~!Range!~ replace: // public: override std::string ToString() { return ...; } - // public: operator std::string() const { return ...; }\n\npublic: friend std::ostream & operator <<(std::ostream &out, const A &obj) { return out << (std::string)obj; } - (new Regex(@"(?/\*~(?[_a-zA-Z0-9<>:]+)~\*/)(?.|\n)(?((?~\*/)(.|\n))*?)(?\r?\n(?[ \t]*)(?(private|protected|public): )override std::string ToString\(\) (?{[^}\n]+}))"), "${scope}${separator}${before}" + Environment.NewLine + "${indent}${access}operator std::string() const ${toStringMethodBody}" + Environment.NewLine + Environment.NewLine + "${indent}${access}friend std::ostream & operator <<(std::ostream &out, const ${type} &obj) { return out << (std::string)obj; }", 0), + // public: operator std::string() const { return ...; }\n\npublic: friend std::ostream & operator <<(std::ostream &stream, const A &self) { return stream << (std::string)self; } + (new Regex(@"(?/\*~(?[_a-zA-Z0-9<>:]+)~\*/)(?.|\n)(?((?~\*/)(.|\n))*?)(?\r?\n(?[ \t]*)(?(private|protected|public): )override std::string ToString\(\) (?{[^}\n]+}))"), "${scope}${separator}${before}" + Environment.NewLine + "${indent}${access}operator std::string() const ${toStringMethodBody}" + Environment.NewLine + Environment.NewLine + "${indent}${access}friend std::ostream & operator <<(std::ostream &stream, const ${type} &self) { return stream << (std::string)self; }", 0), // Remove scope borders. // /*~Range~*/ // diff --git a/python/cs2cpp/cs2cpp.py b/python/cs2cpp/cs2cpp.py index 44ab7bb..7d9e356 100644 --- a/python/cs2cpp/cs2cpp.py +++ b/python/cs2cpp/cs2cpp.py @@ -364,8 +364,8 @@ def __init__( SubRule(r"(?P\r?\n(?P[\t ]*)template [^<>\n]+)> (struct|class) (?P[a-zA-Z0-9]+<\k>)(\s*:\s*[^{\n]+)?[\t ]*(\r?\n)?[\t ]*{)(?P((?!class|struct).|\n)+?)(?P(?P(private|protected|public): )override std::string ToString\(\))", r"\g/*~\g~*/\g\g", max_repeat=0), # Inside the scope of ~!Range!~ replace: # public: override std::string ToString() { return ...; } - # public: operator std::string() const { return ...; }\n\npublic: friend std::ostream & operator <<(std::ostream &out, const A &obj) { return out << (std::string)obj; } - SubRule(r"(?P/\*~(?P[_a-zA-Z0-9<>:]+)~\*/)(?P.|\n)(?P((?~\*/)(.|\n))*?)(?P\r?\n(?P[ \t]*)(?P(private|protected|public): )override std::string ToString\(\) (?P{[^}\n]+}))", r"\g\g\g\n\g\goperator std::string() const \g\n\n\g\gfriend std::ostream & operator <<(std::ostream &out, const \g &obj) { return out << (std::string)obj; }", max_repeat=0), + # public: operator std::string() const { return ...; }\n\npublic: friend std::ostream & operator <<(std::ostream &stream, const A &self) { return stream << (std::string)self; } + SubRule(r"(?P/\*~(?P[_a-zA-Z0-9<>:]+)~\*/)(?P.|\n)(?P((?~\*/)(.|\n))*?)(?P\r?\n(?P[ \t]*)(?P(private|protected|public): )override std::string ToString\(\) (?P{[^}\n]+}))", r"\g\g\g\n\g\goperator std::string() const \g\n\n\g\gfriend std::ostream & operator <<(std::ostream &stream, const \g &self) { return stream << (std::string)self; }", max_repeat=0), # Remove scope borders. # /*~Range~*/ #