Problem
String escaping logic needs to be properly customized per language, as different languages have different escaping rules.
File Location
src/main/java/io/err0/client/core/Token.java:52
// FIXME: per-language do the escaping calculation
Context
Different programming languages have different string escaping rules:
- Java/C/C++:
\n, \t, \", \\
- Python:
\n, \t, \", \', raw strings r"..."
- JavaScript:
\n, \t, \", \', template literals
- Go:
\n, \t, raw strings with backticks
- Rust:
\n, \t, raw strings r#"..."#
Current Behavior
Likely using a generic escaping approach that may not handle language-specific nuances.
Expected Behavior
- Correctly handle escaping for each of 14+ supported languages
- Account for language-specific string literal types (raw strings, template literals, etc.)
- Preserve semantic meaning of escaped sequences
Implementation Guidance
Step 1: Create Language-Specific Escaping Interface
public interface StringEscapeHandler {
String escape(String input);
String unescape(String input);
}
Step 2: Implement for Each Language
public class JavaEscapeHandler implements StringEscapeHandler { ... }
public class PythonEscapeHandler implements StringEscapeHandler { ... }
// etc.
Step 3: Update Token Class
public class Token {
public String getEscapedContent(Language language) {
StringEscapeHandler handler = EscapeHandlerFactory.getHandler(language);
return handler.escape(this.content);
}
}
Test Cases Needed
For each language, test:
- Simple escape sequences (
\n, \t)
- Quote escaping (
\", \')
- Backslash escaping (
\\)
- Language-specific features (raw strings, template literals)
- Edge cases (empty strings, only escapes, etc.)
Reference
- Apache Commons Text
StringEscapeUtils for reference implementations
- Language specifications for each supported language
Acceptance Criteria
Problem
String escaping logic needs to be properly customized per language, as different languages have different escaping rules.
File Location
src/main/java/io/err0/client/core/Token.java:52// FIXME: per-language do the escaping calculationContext
Different programming languages have different string escaping rules:
\n,\t,\",\\\n,\t,\",\', raw stringsr"..."\n,\t,\",\', template literals\n,\t, raw strings with backticks\n,\t, raw stringsr#"..."#Current Behavior
Likely using a generic escaping approach that may not handle language-specific nuances.
Expected Behavior
Implementation Guidance
Step 1: Create Language-Specific Escaping Interface
Step 2: Implement for Each Language
Step 3: Update Token Class
Test Cases Needed
For each language, test:
\n,\t)\",\')\\)Reference
StringEscapeUtilsfor reference implementationsAcceptance Criteria