diff --git a/ext/java/nokogiri/XmlAttr.java b/ext/java/nokogiri/XmlAttr.java index af5e1a131ed..915c8e02b98 100644 --- a/ext/java/nokogiri/XmlAttr.java +++ b/ext/java/nokogiri/XmlAttr.java @@ -38,7 +38,6 @@ import nokogiri.internals.SaveContext; import org.jruby.Ruby; -import org.jruby.RubyBoolean; import org.jruby.RubyClass; import org.jruby.RubyString; import org.jruby.anno.JRubyClass; diff --git a/ext/java/nokogiri/XmlNode.java b/ext/java/nokogiri/XmlNode.java index d2fb112603f..3ed92141080 100644 --- a/ext/java/nokogiri/XmlNode.java +++ b/ext/java/nokogiri/XmlNode.java @@ -491,25 +491,15 @@ protected void saveNodeListContent(ThreadContext context, XmlNodeSet list, SaveC protected void saveNodeListContent(ThreadContext context, RubyArray array, SaveContext ctx) { int length = array.getLength(); - boolean formatIndentation = ctx.format() && ctx.indentString()!=null; - for(int i = 0; i < length; i++) { Object item = array.get(i); if (item instanceof XmlNode) { XmlNode cur = (XmlNode) item; - - // if(formatIndentation && - // (cur.isElement() || cur.isComment() || cur.isProcessingInstruction())) { - // ctx.append(ctx.getCurrentIndentString()); - // } - cur.saveContent(context, ctx); } else if (item instanceof XmlNamespace) { XmlNamespace cur = (XmlNamespace)item; cur.saveContent(context, ctx); } - - // if(ctx.format()) ctx.append("\n"); } } diff --git a/ext/java/nokogiri/internals/SaveContext.java b/ext/java/nokogiri/internals/SaveContext.java index c79f343d6d4..62711841ee4 100644 --- a/ext/java/nokogiri/internals/SaveContext.java +++ b/ext/java/nokogiri/internals/SaveContext.java @@ -57,7 +57,6 @@ public class SaveContext { private final ThreadContext context; private final RubyClass elementDescription; private StringBuffer buffer; - private int options; private int level=0; private String encoding, indentString; private boolean format, noDecl, noEmpty, noXhtml, xhtml, asXml, asHtml; @@ -80,7 +79,6 @@ public class SaveContext { public SaveContext(ThreadContext context, int options, String indentString, String encoding) { this.context = context; this.elementDescription = (RubyClass)getNokogiriClass(context.getRuntime(), "Nokogiri::HTML::ElementDescription"); - this.options = options; this.encoding = encoding; this.indentString = indentString; this.buffer = new StringBuffer(); @@ -117,18 +115,13 @@ public void appendQuoted(StringBuffer sb) { this.append("\""); } - public void emptyTag(String name) { - emptyTagStart(name); - emptyTagEnd(name); - } - public void emptyTagStart(String name) { openTagInlineStart(name); } public void emptyTagEnd(String name) { if (asHtml) { - if (isEmpty(name) && noEmpty()) { + if (isEmpty(name) && noEmpty) { append(">"); } else { openTagInlineEnd(); @@ -141,11 +134,6 @@ public void emptyTagEnd(String name) { } } - public void openTag(String name) { - openTagStart(name); - openTagEnd(); - } - public void openTagStart(String name) { maybeBreak(); indent(); @@ -206,7 +194,9 @@ public void maybeIndent() { } public void indent() { - if (format) append(getCurrentIndentString()); + // format option doesn't work, so changed to see indentString is given or not + String spaces = getCurrentIndentString(); + if (spaces != null) append(spaces); } public boolean endsInWhitespace() { @@ -232,14 +222,13 @@ public void decreaseLevel() { if(this.level > 0) this.level--; } - public String encoding() { return this.encoding; } - public boolean format() { return this.format; } public String getCurrentIndentString() { + if (indentString == null || indentString.length() == 0) return null; StringBuffer res = new StringBuffer(); for(int i = 0; i < this.level; i++) { - res.append(this.indentString()); + res.append(indentString); } return res.toString(); } @@ -250,18 +239,8 @@ public void increaseLevel() { if(this.level >= 0) this.level++; } - public String indentString() { return this.indentString; } - public boolean noDecl() { return this.noDecl; } - public boolean noEmpty() { return this.noEmpty; } - - public boolean noXhtml() { return this.noXhtml; } - - public void setFormat(boolean format) { this.format = format; } - - public void setLevel(int level) { this.level = level; } - @Override public String toString() { return this.buffer.toString(); } @@ -272,8 +251,6 @@ public RubyString toRubyString(Ruby runtime) { return RubyString.newString(runtime, bytes); } - public boolean Xhtml() { return this.xhtml; } - /** * Looks up the HTML ElementDescription and tests if it is an * empty element. diff --git a/lib/nokogiri/xml/node.rb b/lib/nokogiri/xml/node.rb index 0e5527a4065..7720fa4b75d 100644 --- a/lib/nokogiri/xml/node.rb +++ b/lib/nokogiri/xml/node.rb @@ -716,7 +716,7 @@ def == other def serialize *args, &block options = args.first.is_a?(Hash) ? args.shift : { :encoding => args[0], - :save_with => args[1] || SaveOptions::FORMAT + :save_with => args[1] } encoding = options[:encoding] || document.encoding @@ -791,7 +791,11 @@ def to_xhtml options = {} def write_to io, *options options = options.first.is_a?(Hash) ? options.shift : {} encoding = options[:encoding] || options[0] - save_options = options[:save_with] || options[1] || SaveOptions::FORMAT + if Nokogiri.jruby? + save_options = options[:save_with] || options[1] + else + save_options = options[:save_with] || options[1] || SaveOptions::FORMAT + end indent_text = options[:indent_text] || ' ' indent_times = options[:indent] || 2