X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Forg%2Fxerial%2Fsilk%2FSilkWriter.java;fp=src%2Fmain%2Fjava%2Forg%2Fxerial%2Fsilk%2FSilkWriter.java;h=3eb2e1c3649c9c8242f497b1e658edfe9ec7fe65;hb=f89fe8b37d8f6ed158b8cef54998a9ad5f395072;hp=20b44c153f416f58f6f65cc652c01e5df275a830;hpb=f582f3074a0f10a9fd249b6b3a28267b606f3257;p=xerial%2Fxerial-core.git diff --git a/src/main/java/org/xerial/silk/SilkWriter.java b/src/main/java/org/xerial/silk/SilkWriter.java index 20b44c1..3eb2e1c 100644 --- a/src/main/java/org/xerial/silk/SilkWriter.java +++ b/src/main/java/org/xerial/silk/SilkWriter.java @@ -447,12 +447,51 @@ public class SilkWriter { return this; } - private String escapeDataLine(String dataLine) { + public SilkWriter text(String text) { + usabilityCheck(); + + attributeParenCloseCheck(true); + + if (formatConfig.indentBeforeDataLine) + printIndent(); + + String line[] = text.split("\r?\n"); + if (line == null) + return this; + + for (String each : line) { + out.print(escapeDataLine(each)); + } + + return this; + } + + public static String escapeText(String text) { + String[] line = text.split("\r?\n"); + if (line == null) + return escapeDataLine(text); + + List buf = new ArrayList(); + for (String each : line) { + buf.add(escapeDataLine(each)); + } + return StringUtil.join(buf, StringUtil.NEW_LINE); + } + + private static Pattern leadingHyphen = Pattern.compile("\\s*-"); + + private static String escapeDataLine(String dataLine) { + + if (dataLine == null) + return dataLine; - if (dataLine.startsWith("-")) { + Matcher m = leadingHyphen.matcher(dataLine); + if (m.lookingAt()) { + int hyphenPos = m.end(); StringBuilder buf = new StringBuilder(); + buf.append(dataLine.substring(0, hyphenPos - 1)); buf.append("\\"); - buf.append(dataLine); + buf.append(dataLine.substring(hyphenPos - 1)); return buf.toString(); }