1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
package nokogiri;
import static nokogiri.internals.NokogiriHelpers.rubyStringToString;
import nokogiri.internals.SaveContextVisitor;
import org.jruby.Ruby;
import org.jruby.RubyClass;
import org.jruby.anno.JRubyClass;
import org.jruby.runtime.ThreadContext;
import org.jruby.runtime.builtin.IRubyObject;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
/**
* Class for Nokogiri::XML::CDATA
*
* @author sergio
* @author Yoko Harada <yokolet@gmail.com>
*/
@JRubyClass(name = "Nokogiri::XML::CDATA", parent = "Nokogiri::XML::Text")
public class XmlCdata extends XmlText
{
public
XmlCdata(Ruby ruby, RubyClass rubyClass)
{
super(ruby, rubyClass);
}
public
XmlCdata(Ruby ruby, RubyClass rubyClass, Node node)
{
super(ruby, rubyClass, node);
}
@Override
protected void
init(ThreadContext context, IRubyObject[] args)
{
if (args.length < 2) {
throw getRuntime().newArgumentError(args.length, 2);
}
IRubyObject doc = args[0];
content = args[1];
Document document = ((XmlNode) doc).getOwnerDocument();
Node node = document.createCDATASection(rubyStringToString(content));
setNode(context.runtime, node);
}
@Override
public void
accept(ThreadContext context, SaveContextVisitor visitor)
{
visitor.enter((CDATASection)node);
visitor.leave((CDATASection)node);
}
}
|