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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
package nokogiri;
import static nokogiri.internals.NokogiriHelpers.rubyStringToString;
import org.jruby.Ruby;
import org.jruby.RubyClass;
import org.jruby.anno.JRubyClass;
import org.jruby.anno.JRubyMethod;
import org.jruby.runtime.Helpers;
import org.jruby.runtime.ThreadContext;
import org.jruby.runtime.builtin.IRubyObject;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
import nokogiri.internals.SaveContextVisitor;
/**
* Class for Nokogiri::XML::ProcessingInstruction
*
* @author sergio
* @author Yoko Harada <yokolet@gmail.com>
*/
@JRubyClass(name = "Nokogiri::XML::ProcessingInstruction", parent = "Nokogiri::XML::Node")
public class XmlProcessingInstruction extends XmlNode
{
public
XmlProcessingInstruction(Ruby ruby, RubyClass klazz)
{
super(ruby, klazz);
}
public
XmlProcessingInstruction(Ruby ruby, RubyClass klazz, Node node)
{
super(ruby, klazz, node);
}
@JRubyMethod(name = "new", meta = true, rest = true, required = 3)
public static IRubyObject
rbNew(ThreadContext context,
IRubyObject klazz,
IRubyObject[] args)
{
IRubyObject doc = args[0];
IRubyObject target = args[1];
IRubyObject data = args[2];
Document document = ((XmlNode) doc).getOwnerDocument();
Node node =
document.createProcessingInstruction(rubyStringToString(target),
rubyStringToString(data));
XmlProcessingInstruction self =
new XmlProcessingInstruction(context.getRuntime(),
(RubyClass) klazz,
node);
Helpers.invoke(context, self, "initialize", args);
// TODO: if_block_given.
return self;
}
@Override
public boolean
isProcessingInstruction() { return true; }
@Override
public void
accept(ThreadContext context, SaveContextVisitor visitor)
{
visitor.enter((ProcessingInstruction)node);
visitor.leave((ProcessingInstruction)node);
}
}
|