public void testBuilderRetainsState() { // Setting a safe range and unsafe replacement works as expected. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); assertEquals("XheXXuickXXrownXXoxX", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over unsafe characters. builder.addEscape(' ', "_"); builder.addEscape('!', "_"); assertEquals("Xhe_Xuick_Xrown_Xox_", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over safe characters. builder.setSafeRange(' ', '~'); assertEquals("The_Quick_Brown_Fox_", builder.build().escape("The Quick Brown Fox!")); }
public void testBuilderCreatesIndependentEscapers() { // Setup a simple builder and create the first escaper. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); builder.addEscape(' ', "_"); Escaper first = builder.build(); // Modify one of the existing mappings before creating a new escaper. builder.addEscape(' ', "-"); builder.addEscape('!', "$"); Escaper second = builder.build(); // This should have no effect on existing escapers. builder.addEscape(' ', "*"); // Test both escapers after modifying the builder. assertEquals("Xhe_Xuick_Xrown_XoxX", first.escape("The Quick Brown Fox!")); assertEquals("Xhe-Xuick-Xrown-Xox$", second.escape("The Quick Brown Fox!")); }
public void dumpGraph(PrintWriter writer) { Escaper escaper = Escapers.builder() .addEscape('"', "\\\"") .addEscape('\n', "\\n") .build(); writer.println("digraph {"); writer.println(String.format("%s[label=\"Entry\"]", entryNode.id)); writer.println(String.format("%s[label=\"Exit\"]", exitNode.id)); for (Node node : nodes.values()) { writer.println(String.format("%s[label=\"%s\", shape=\"rect\"]", node.id, escaper.escape(node.basicBlock.toString()))); } for (Node node : getNodes()) { for (Node out : node.outgoing) { writer.println(node.id + " -> " + out.id); } } writer.println("}"); } }
public static final Escaper escaper = Escapers.builder().addEscape('\'', "''").build();
public void testBuilderCreatesIndependentEscapers() { // Setup a simple builder and create the first escaper. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); builder.addEscape(' ', "_"); Escaper first = builder.build(); // Modify one of the existing mappings before creating a new escaper. builder.addEscape(' ', "-"); builder.addEscape('!', "$"); Escaper second = builder.build(); // This should have no effect on existing escapers. builder.addEscape(' ', "*"); // Test both escapers after modifying the builder. assertEquals("Xhe_Xuick_Xrown_XoxX", first.escape("The Quick Brown Fox!")); assertEquals("Xhe-Xuick-Xrown-Xox$", second.escape("The Quick Brown Fox!")); }
public void testBuilderRetainsState() { // Setting a safe range and unsafe replacement works as expected. Escapers.Builder builder = Escapers.builder(); builder.setSafeRange('a', 'z'); builder.setUnsafeReplacement("X"); assertEquals("XheXXuickXXrownXXoxX", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over unsafe characters. builder.addEscape(' ', "_"); builder.addEscape('!', "_"); assertEquals("Xhe_Xuick_Xrown_Xox_", builder.build().escape("The Quick Brown Fox!")); // Explicit replacements take priority over safe characters. builder.setSafeRange(' ', '~'); assertEquals("The_Quick_Brown_Fox_", builder.build().escape("The Quick Brown Fox!")); }
@Override public String generate(Request request, int status, String reasonPhrase, String description, Throwable exception) { return "{\"error\": [" + status + ", \"" + reasonPhrase + "\", \"" + description + "\", \"" + Escapers.builder() .addEscape('\"', "\\\"") .addEscape('\n', "\\n") .build() .escape(Throwables.getStackTraceAsString(exception)) + "\"] }"; } };
public static String escapeShellArgument(String argument) { final Escapers.Builder builder = Escapers.builder(); builder.addEscape('\'', "'\"'\"'"); Escaper escaper = builder.build(); return String.format("'%s'", escaper.escape(argument)); } }
import com.google.common.escape.Escaper; import com.google.common.escape.Escapers; public class YourFancyClass { public static final Escaper SHELL_ESCAPE; static { final Escapers.Builder builder = Escapers.builder(); builder.addEscape('\'', "'\"'\"'"); SHELL_ESCAPE = builder.build(); } }
private String displayString(String value) { if (maxCharDisplay > 0 && value.length() > maxCharDisplay) { value = value.substring(0, maxCharDisplay) + "... (" + value.length() + " chars)"; } String escaped = Escapers.builder() .setSafeRange(' ', '~') .addEscape('"', "\\\"") .addEscape('\\', "\\\\") .build() .escape(value); return '"' + escaped + '"'; }