diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-01 10:50:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-01 10:50:28 +0100 |
| commit | d1e7efbf5adab7516a19fd35c9fa9a3fdca2e769 (patch) | |
| tree | b767d5de3b8953b0c773d1228c1c285d0f2776e2 /src/main/java/org/zwobble/couscous/backends/SourceCodeWriter.java | |
| parent | e855df09f88d1e18e99d8a1d8be75fb944a19a99 (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.java | 13 |
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) { |
