aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-01 10:50:28 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-01 10:50:28 +0100
commitd1e7efbf5adab7516a19fd35c9fa9a3fdca2e769 (patch)
treeb767d5de3b8953b0c773d1228c1c285d0f2776e2 /src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
parente855df09f88d1e18e99d8a1d8be75fb944a19a99 (diff)
Mangle reserved identifiers in C# backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
index 393cdc2..57959fd 100644
--- a/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
+++ b/src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java
@@ -1,9 +1,11 @@
package org.zwobble.couscous.backends;
+import com.google.common.base.Function;
import com.google.common.base.Strings;
import org.zwobble.couscous.util.Action;
import java.util.Iterator;
+import java.util.Set;
import java.util.function.Consumer;
public class SourceCodeWriter {
@@ -16,11 +18,15 @@ public class SourceCodeWriter {
private final WriterAction blockStart;
private final WriterAction blockEnd;
+ private final Set<String> reservedIdentifiers;
+ private final Function<String, String> mangleReservedIdentifier;
private int depth = 0;
- public SourceCodeWriter(WriterAction blockStart, WriterAction blockEnd) {
+ public SourceCodeWriter(WriterAction blockStart, WriterAction blockEnd, Set<String> reservedIdentifiers, Function<String, String> mangleReservedIdentifier) {
this.blockStart = blockStart;
this.blockEnd = blockEnd;
+ this.reservedIdentifiers = reservedIdentifiers;
+ this.mangleReservedIdentifier = mangleReservedIdentifier;
}
public String asString() {
@@ -51,7 +57,10 @@ public class SourceCodeWriter {
}
public void writeIdentifier(String name) {
- builder.append(name);
+ String nameToWrite = reservedIdentifiers.contains(name)
+ ? mangleReservedIdentifier.apply(name)
+ : name;
+ builder.append(nameToWrite);
}
public void writeSymbol(String symbol) {