Changeset 20866

Show
Ignore:
Timestamp:
10/07/08 01:15:50 (6 weeks ago)
Author:
tokuhirom
Message:

added doc.createComment

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

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/llv8call/trunk/ext/libxml/document.cc

    r20864 r20866  
    110110    xmlAddChild(fragment, node_raw); 
    111111    return createNode( doc, node_raw ); 
     112END 
     113 
     114FUNCTION(createComment) 
     115    ARG_COUNT(1); 
     116    ARG_str(text, 0); 
     117    EXTERNAL_DOC(); 
     118    EXTERNAL_FRAGMENT(); 
     119 
     120    xmlNodePtr textnode = xmlNewDocComment(doc, (const xmlChar*)*text); 
     121    assert(textnode); 
     122    textnode->doc = doc; 
     123    xmlAddChild(fragment, textnode); 
     124    return createNode( doc, textnode ); 
    112125END 
    113126 
     
    162175    BIND_IM("createElement",          _createElement); 
    163176    BIND_IM("createTextNode",         createTextNode); 
     177    BIND_IM("createComment",          createComment); 
    164178    BIND_IM("toString",               toString); 
    165179    BIND_IM("close",                  _close); 
     
    168182ENDSUBMODULE 
    169183 
    170 // rest: 11/51 
     184// REST: 12/51 
    171185 
    172186// TODO: doc.actualEncoding 
     
    188202// TODO: doc.documentElement 
    189203// TODO: doc.createElementNS 
    190 // TODO: doc.createComment 
    191204// TODO: doc.createAttribute 
    192205// TODO: doc.createAttributeNS 
  • lang/cplusplus/llv8call/trunk/ext/libxml/node.cc

    r20859 r20866  
    125125END 
    126126 
     127xmlNodePtr 
     128_CloneNodeIn( xmlNodePtr node, int recursive ) 
     129{ 
     130    xmlNodePtr retval = NULL; 
     131     
     132    if ( node != NULL ) { 
     133        switch ( node->type ) { 
     134        case XML_ELEMENT_NODE: 
     135        case XML_TEXT_NODE: 
     136        case XML_CDATA_SECTION_NODE: 
     137        case XML_ENTITY_REF_NODE: 
     138        case XML_PI_NODE: 
     139        case XML_COMMENT_NODE: 
     140        case XML_DOCUMENT_FRAG_NODE: 
     141        case XML_ENTITY_DECL:  
     142          retval = xmlCopyNode( node, recursive ? 1 : 2 ); 
     143          break; 
     144        case XML_ATTRIBUTE_NODE: 
     145          retval = (xmlNodePtr) xmlCopyProp( NULL, (xmlAttrPtr) node ); 
     146          break; 
     147        case XML_DOCUMENT_NODE: 
     148        case XML_HTML_DOCUMENT_NODE: 
     149          retval = (xmlNodePtr) xmlCopyDoc( (xmlDocPtr)node, recursive ); 
     150          break; 
     151        case XML_DOCUMENT_TYPE_NODE: 
     152        case XML_DTD_NODE: 
     153          retval = (xmlNodePtr) xmlCopyDtd( (xmlDtdPtr)node ); 
     154          break; 
     155        case XML_NAMESPACE_DECL: 
     156          retval = ( xmlNodePtr ) xmlCopyNamespace( (xmlNsPtr) node ); 
     157          break; 
     158        default: 
     159          break; 
     160        } 
     161    } 
     162 
     163    return retval; 
     164} 
     165 
     166FUNCTION(cloneNode) 
     167    ARG_BETWEEN(0, 1); 
     168    EXTERNAL_NODE(); 
     169    EXTERNAL_DOC(); 
     170    int deep = args.Length() == 1 ? args[0]->Int32Value() : 0; 
     171    xmlNodePtr ret = _CloneNodeIn( node, deep ); 
     172    assert(ret); 
     173    return createNode( doc, ret ); 
     174END 
     175 
     176FUNCTION(firstChild) 
     177    ARG_COUNT(0); 
     178    EXTERNAL_NODE(); 
     179    EXTERNAL_DOC(); 
     180    return createNode( doc, node->children ); 
     181END 
     182 
     183FUNCTION(lastChild) 
     184    ARG_COUNT(0); 
     185    EXTERNAL_NODE(); 
     186    EXTERNAL_DOC(); 
     187    return createNode( doc, node->last ); 
     188END 
     189 
     190FUNCTION(parentNode) 
     191    ARG_COUNT(0); 
     192    EXTERNAL_NODE(); 
     193    EXTERNAL_DOC(); 
     194    return createNode( doc, node->parent ); 
     195END 
     196 
    127197SUBMODULE(init_node) 
    128198    CLASS_WITH_CONSTRUCTOR(_new); 
     
    134204    BIND_IM("removeChild",         removeChild); 
    135205    BIND_IM("removeChildNodes",    removeChildNodes); 
     206    BIND_IM("cloneNode",           cloneNode); 
     207    BIND_IM("firstChild",          firstChild); 
     208    BIND_IM("lastChild",           lastChild); 
     209    BIND_IM("parentNode",          parentNode); 
    136210    INTERNALCOUNT(2); 
    137211    EXPORT_CLASS("Node"); 
    138212ENDSUBMODULE 
    139213 
    140 // REST: 7/50 
     214// REST: 11/50 
     215 
    141216// TODO: node.setNodeName 
    142217// TODO: node.isSameNode 
     
    151226// TODO: node.addNewChild 
    152227// TODO: node.addSibling 
    153 // TODO: node.cloneNode 
    154 // TODO: node.parentNode 
    155228// TODO: node.nextSibling 
    156229// TODO: node.previousSibling 
    157230// TODO: node.hasChildNodes 
    158 // TODO: node.firstChild 
    159 // TODO: node.lastChild 
    160231// TODO: node.ownerDocument 
    161232// TODO: node.getOwner 
  • lang/cplusplus/llv8call/trunk/t/070_libxml/02_dom.js

    r20864 r20866  
    11require('t/util.js'); 
    22 
    3 plan({tests:11}); 
     3plan({tests:17}); 
    44 
    55check_lib("org.coderepos.libxml"); 
     
    6363}); 
    6464 
     65test(function () { 
     66    root.appendChild(bar) 
     67    root.appendChild(bar.cloneNode()) 
     68    is(root.toString(), '<foo><bar/><bar/></foo>', 'doc.cloneNode()'); 
     69}); 
     70 
     71test(function () { 
     72    root.appendChild(bar) 
     73    root.appendChild(eee) 
     74    is(root.firstChild().nodeName(), 'bar', 'node.firstChild()'); 
     75    is(root.lastChild().nodeName(),  'eee', 'node.lastChild()'); 
     76}); 
     77 
     78test(function () { 
     79    root.appendChild(bar) 
     80    bar.appendChild(eee) 
     81    is(root.toString(),  '<foo><bar><eee/></bar></foo>', 'node.parentNode()'); 
     82    is(eee.parentNode().nodeName(), 'bar', 'node.parentNode()'); 
     83}); 
     84 
     85test(function () { 
     86    root.appendChild(doc.createComment("yay")); 
     87    is(root.toString(),  '<foo><!--yay--></foo>', 'node.createComment()'); 
     88}); 
     89 
    6590doc.close(); 
    6691