Changeset 20949

Show
Ignore:
Timestamp:
10/08/08 09:16:42 (3 months ago)
Author:
tokuhirom
Message:

added doc.createCDATASection

Location:
lang/cplusplus/llv8call/trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/llv8call/trunk/ext/libxml/SConscript

    r20881 r20949  
    1212    env.SharedLibrary( 
    1313        "libxml", 
    14         [Split('libxml.cc document.cc node.cc dom.c element.cc attr.cc')], 
     14        [Split('libxml.cc document.cc node.cc dom.c element.cc attr.cc cdata.cc')], 
    1515        LIBS=['v8'] + env['LIBS'], 
    1616    ) 
  • lang/cplusplus/llv8call/trunk/ext/libxml/document.cc

    r20947 r20949  
    100100END 
    101101 
    102 FUNCTION(_createElement) 
     102FUNCTION(createElement) 
    103103    ARG_COUNT(1); 
    104104    ARG_str(elname, 0); 
     
    110110    xmlAddChild(fragment, node_raw); 
    111111    return createElem( doc, node_raw ); 
     112END 
     113 
     114FUNCTION(createCDATASection) 
     115    ARG_COUNT(1); 
     116    ARG_str(elname, 0); 
     117    EXTERNAL_DOC(); 
     118    EXTERNAL_FRAGMENT(); 
     119 
     120    xmlNodePtr node_raw = xmlNewCDataBlock(doc, (const xmlChar*)*elname, elname.length()); 
     121    assert(node_raw); 
     122    xmlAddChild(fragment, node_raw); 
     123    return createCDATA( doc, node_raw ); 
    112124END 
    113125 
     
    184196    BIND_IM("documentElement",        _documentElement); 
    185197    BIND_IM("setDocumentElement",     setDocumentElement); 
    186     BIND_IM("createElement",          _createElement); 
     198    BIND_IM("createElement",          createElement); 
     199    BIND_IM("createCDATASection",     createCDATASection); 
    187200    BIND_IM("createAttribute",        createAttribute); 
    188201    BIND_IM("createTextNode",         createTextNode); 
     
    194207ENDSUBMODULE 
    195208 
    196 // REST: 12/51 
     209// REST: 13/51 
    197210 
    198211// TODO: doc.actualEncoding 
     
    216229// TODO: doc.createAttributeNS 
    217230// TODO: doc.createDocumentFragment 
    218 // TODO: doc.createCDATASection 
    219231// TODO: doc.createProcessingInstruction 
    220232// TODO: doc.createEntityReference 
  • lang/cplusplus/llv8call/trunk/ext/libxml/libxml.cc

    r20881 r20949  
    3737extern void init_attr(Handle<Object> target); 
    3838extern void init_elem(Handle<Object> target); 
     39extern void init_cdata(Handle<Object> target); 
    3940 
    4041V8EXTINIT_FUNC  
     
    4748    init_attr(target); 
    4849    init_elem(target); 
     50    init_cdata(target); 
    4951 
    5052    return target; 
  • lang/cplusplus/llv8call/trunk/ext/libxml/libxml.h

    r20947 r20949  
    3535} 
    3636 
     37inline v8::Handle<v8::Function> cdata_class() { 
     38    return Handle<Function>::Cast( libxml_namespace()->Get(String::New("CDATASection")) ); 
     39} 
     40 
    3741static inline Handle<Object> createNode(xmlDocPtr doc, xmlNodePtr node_raw) { 
    3842    Handle<Value> consarg[2]; 
     
    5660} 
    5761 
     62static inline Handle<Object> createCDATA(xmlDocPtr doc, xmlNodePtr attr_raw) { 
     63    Handle<Value> consarg[2]; 
     64    consarg[0] = External::New(attr_raw); 
     65    consarg[1] = External::New(doc); 
     66    return cdata_class()->NewInstance(2, consarg); 
     67} 
     68 
    5869#define ARG_node(name, n) EXTERNAL(xmlNodePtr, name, args[n]->ToObject(), 0) 
    5970#define ARG_attr(name, n) EXTERNAL(xmlAttrPtr, name, args[n]->ToObject(), 0) 
  • lang/cplusplus/llv8call/trunk/t/070_libxml/02_dom.js

    r20947 r20949  
    11require('t/util.js'); 
    22 
    3 plan({tests:22}); 
     3plan({tests:23}); 
    44 
    55check_lib("org.coderepos.libxml"); 
     
    103103}); 
    104104 
     105test(function () { 
     106    var cdata = doc.createCDATASection("foo"); 
     107    root.appendChild(cdata); 
     108    is(root.toString(),  '<foo foo="baz"><![CDATA[foo]]></foo>',               'doc.createCDATASection()'); 
     109}); 
     110 
    105111doc.close(); 
    106112