From 22950261a4acb6e2209d76b802df4f8322128174 Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 10:52:15 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #65 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: https://github.com/linksplatform/RegularExpressions.Transformer.CSharpToCpp/issues/65 --- CLAUDE.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c333202 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/linksplatform/RegularExpressions.Transformer.CSharpToCpp/issues/65 +Your prepared branch: issue-65-85be181d +Your prepared working directory: /tmp/gh-issue-solver-1757749930508 + +Proceed. \ No newline at end of file From ecfebb05177a1d0dc5db203d315b1ee8f96c91dc Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 11:16:56 +0300 Subject: [PATCH 2/3] Implement luxury style for ostream operator parameters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update friend std::ostream operator to use more descriptive parameter names: - Replace 'out' with 'stream' for std::ostream parameter - Replace 'obj' with 'self' for object parameter - Update both C# and Python transformers for consistency Fixes #65 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../CSharpToCppTransformerTests.cs | 1 + .../CSharpToCppTransformer.cs | 4 ++-- python/cs2cpp/cs2cpp.py | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) 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~*/ # From 58690c619afc715ac5f119814ef7f8be219f5b2e Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 11:17:26 +0300 Subject: [PATCH 3/3] Remove CLAUDE.md - Claude command completed --- CLAUDE.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index c333202..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/linksplatform/RegularExpressions.Transformer.CSharpToCpp/issues/65 -Your prepared branch: issue-65-85be181d -Your prepared working directory: /tmp/gh-issue-solver-1757749930508 - -Proceed. \ No newline at end of file