From ff86ad102f33a78e4c451da3fa50fb539f30ee20 Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 12:37:48 +0300 Subject: [PATCH 1/3] Initial commit with task details for issue #59 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/59 --- 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..e2c1af1 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,5 @@ +Issue to solve: https://github.com/linksplatform/RegularExpressions.Transformer.CSharpToCpp/issues/59 +Your prepared branch: issue-59-8559cd76 +Your prepared working directory: /tmp/gh-issue-solver-1757756263488 + +Proceed. \ No newline at end of file From 6ab2ffbbfbacaa57641aed8082d9ca56d23c5eba Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 12:43:22 +0300 Subject: [PATCH 2/3] Fix operator spacing to use sweet style instead of drunkard style MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes spaces around equality and inequality operators (==, !=) in regex patterns to follow the "sweet style" format: - Before: operator ==(...) - After: operator==(...) Fixed patterns in both C# and Python implementations: - CSharpToCppTransformer.cs: Fixed 3 regex patterns - cs2cpp.py: Fixed 3 regex patterns Resolves issue #59 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../CSharpToCppTransformer.cs | 6 +++--- python/cs2cpp/cs2cpp.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs index 2f5dceb..4d8af23 100644 --- a/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs +++ b/csharp/Platform.RegularExpressions.Transformer.CSharpToCpp/CSharpToCppTransformer.cs @@ -66,10 +66,10 @@ public class CSharpToCppTransformer : TextTransformer (new Regex(@"Comparer<[^>\n]+>\.Default\.Compare\(\s*(?[^,)\n]+),\s*(?[^\)\n]+)\s*\)\s*(?[<>=]=?)\s*0(?\D)"), "${first} ${comparison} ${second}${after}", 0), // public static bool operator ==(Range left, Range right) => left.Equals(right); // - (new Regex(@"\r?\n[^\n]+bool operator ==\((?[^\n]+) (?[a-zA-Z0-9]+), \k (?[a-zA-Z0-9]+)\) => (\k|\k)\.Equals\((\k|\k)\);"), "", 10), + (new Regex(@"\r?\n[^\n]+bool operator==\((?[^\n]+) (?[a-zA-Z0-9]+), \k (?[a-zA-Z0-9]+)\) => (\k|\k)\.Equals\((\k|\k)\);"), "", 10), // public static bool operator !=(Range left, Range right) => !(left == right); // - (new Regex(@"\r?\n[^\n]+bool operator !=\((?[^\n]+) (?[a-zA-Z0-9]+), \k (?[a-zA-Z0-9]+)\) => !\((\k|\k) == (\k|\k)\);"), "", 10), + (new Regex(@"\r?\n[^\n]+bool operator!=\((?[^\n]+) (?[a-zA-Z0-9]+), \k (?[a-zA-Z0-9]+)\) => !\((\k|\k) == (\k|\k)\);"), "", 10), // public override bool Equals(object obj) => obj is Range range ? Equals(range) : false; // (new Regex(@"\r?\n[^\n]+override bool Equals\((System\.)?[Oo]bject (?[a-zA-Z0-9]+)\) => \k is [^\n]+ (?[a-zA-Z0-9]+) \? Equals\(\k\) : false;"), "", 10), @@ -358,7 +358,7 @@ public class CSharpToCppTransformer : TextTransformer (new Regex(@"(\r?\n[\t ]+)[a-zA-Z0-9]+ ([a-zA-Z0-9]+) = new ([a-zA-Z0-9]+)\[([_a-zA-Z0-9]+)\];"), "$1$3 $2[$4] = { {0} };", 0), // bool Equals(Range other) { ... } // bool operator ==(const Key &other) const { ... } - (new Regex(@"(?\r?\n[^\n]+bool )Equals\((?[^\n{]+) (?[a-zA-Z0-9]+)\)(?(\s|\n)*{)"), "${before}operator ==(const ${type} &${variable}) const${after}", 0), + (new Regex(@"(?\r?\n[^\n]+bool )Equals\((?[^\n{]+) (?[a-zA-Z0-9]+)\)(?(\s|\n)*{)"), "${before}operator==(const ${type} &${variable}) const${after}", 0), // Insert scope borders. // class Range { ... public: override std::string ToString() { return ...; } // class Range {/*~Range~*/ ... public: override std::string ToString() { return ...; } diff --git a/python/cs2cpp/cs2cpp.py b/python/cs2cpp/cs2cpp.py index 44ab7bb..a1ec78d 100644 --- a/python/cs2cpp/cs2cpp.py +++ b/python/cs2cpp/cs2cpp.py @@ -65,10 +65,10 @@ def __init__( SubRule(r"Comparer<[^>\n]+>\.Default\.Compare\(\s*(?P[^,)\n]+),\s*(?P[^\)\n]+)\s*\)\s*(?P[<>=]=?)\s*0(?P\D)", r"\g \g \g\g", max_repeat=0), # public static bool operator ==(Range left, Range right) => left.Equals(right); # - SubRule(r"\r?\n[^\n]+bool operator ==\((?P[^\n]+) (?P[a-zA-Z0-9]+), \k (?P[a-zA-Z0-9]+)\) => (\k|\k)\.Equals\((\k|\k)\);", r"", max_repeat=10), + SubRule(r"\r?\n[^\n]+bool operator==\((?P[^\n]+) (?P[a-zA-Z0-9]+), \k (?P[a-zA-Z0-9]+)\) => (\k|\k)\.Equals\((\k|\k)\);", r"", max_repeat=10), # public static bool operator !=(Range left, Range right) => !(left == right); # - SubRule(r"\r?\n[^\n]+bool operator !=\((?P[^\n]+) (?P[a-zA-Z0-9]+), \k (?P[a-zA-Z0-9]+)\) => !\((\k|\k) == (\k|\k)\);", r"", max_repeat=10), + SubRule(r"\r?\n[^\n]+bool operator!=\((?P[^\n]+) (?P[a-zA-Z0-9]+), \k (?P[a-zA-Z0-9]+)\) => !\((\k|\k) == (\k|\k)\);", r"", max_repeat=10), # public override bool Equals(object obj) => obj is Range range ? Equals(range) : false; # SubRule(r"\r?\n[^\n]+override bool Equals\((System\.)?[Oo]bject (?P[a-zA-Z0-9]+)\) => \k is [^\n]+ (?P[a-zA-Z0-9]+) \? Equals\(\k\) : false;", r"", max_repeat=10), @@ -357,7 +357,7 @@ def __init__( SubRule(r"(\r?\n[\t ]+)[a-zA-Z0-9]+ ([a-zA-Z0-9]+) = new ([a-zA-Z0-9]+)\[([_a-zA-Z0-9]+)\];", r"\1\3 \2[\4] = { {0} };", max_repeat=0), # bool Equals(Range other) { ... } # bool operator ==(const Key &other) const { ... } - SubRule(r"(?P\r?\n[^\n]+bool )Equals\((?P[^\n{]+) (?P[a-zA-Z0-9]+)\)(?P(\s|\n)*{)", r"\goperator ==(const \g &\g) const\g", max_repeat=0), + SubRule(r"(?P\r?\n[^\n]+bool )Equals\((?P[^\n{]+) (?P[a-zA-Z0-9]+)\)(?P(\s|\n)*{)", r"\goperator==(const \g &\g) const\g", max_repeat=0), # Insert scope borders. # class Range { ... public: override std::string ToString() { return ...; } # class Range {/*~Range~*/ ... public: override std::string ToString() { return ...; } From a2c368cba5aa67b1299ca45636fbedc5dc630d36 Mon Sep 17 00:00:00 2001 From: konard Date: Sat, 13 Sep 2025 12:44:00 +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 e2c1af1..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,5 +0,0 @@ -Issue to solve: https://github.com/linksplatform/RegularExpressions.Transformer.CSharpToCpp/issues/59 -Your prepared branch: issue-59-8559cd76 -Your prepared working directory: /tmp/gh-issue-solver-1757756263488 - -Proceed. \ No newline at end of file