Changeset 20866 for lang/cplusplus
- Timestamp:
- 10/07/08 01:15:50 (2 months ago)
- Location:
- lang/cplusplus/llv8call/trunk
- Files:
-
- 3 modified
-
ext/libxml/document.cc (modified) (4 diffs)
-
ext/libxml/node.cc (modified) (3 diffs)
-
t/070_libxml/02_dom.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/cplusplus/llv8call/trunk/ext/libxml/document.cc
r20864 r20866 110 110 xmlAddChild(fragment, node_raw); 111 111 return createNode( doc, node_raw ); 112 END 113 114 FUNCTION(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 ); 112 125 END 113 126 … … 162 175 BIND_IM("createElement", _createElement); 163 176 BIND_IM("createTextNode", createTextNode); 177 BIND_IM("createComment", createComment); 164 178 BIND_IM("toString", toString); 165 179 BIND_IM("close", _close); … … 168 182 ENDSUBMODULE 169 183 170 // rest: 11/51184 // REST: 12/51 171 185 172 186 // TODO: doc.actualEncoding … … 188 202 // TODO: doc.documentElement 189 203 // TODO: doc.createElementNS 190 // TODO: doc.createComment191 204 // TODO: doc.createAttribute 192 205 // TODO: doc.createAttributeNS -
lang/cplusplus/llv8call/trunk/ext/libxml/node.cc
r20859 r20866 125 125 END 126 126 127 xmlNodePtr 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 166 FUNCTION(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 ); 174 END 175 176 FUNCTION(firstChild) 177 ARG_COUNT(0); 178 EXTERNAL_NODE(); 179 EXTERNAL_DOC(); 180 return createNode( doc, node->children ); 181 END 182 183 FUNCTION(lastChild) 184 ARG_COUNT(0); 185 EXTERNAL_NODE(); 186 EXTERNAL_DOC(); 187 return createNode( doc, node->last ); 188 END 189 190 FUNCTION(parentNode) 191 ARG_COUNT(0); 192 EXTERNAL_NODE(); 193 EXTERNAL_DOC(); 194 return createNode( doc, node->parent ); 195 END 196 127 197 SUBMODULE(init_node) 128 198 CLASS_WITH_CONSTRUCTOR(_new); … … 134 204 BIND_IM("removeChild", removeChild); 135 205 BIND_IM("removeChildNodes", removeChildNodes); 206 BIND_IM("cloneNode", cloneNode); 207 BIND_IM("firstChild", firstChild); 208 BIND_IM("lastChild", lastChild); 209 BIND_IM("parentNode", parentNode); 136 210 INTERNALCOUNT(2); 137 211 EXPORT_CLASS("Node"); 138 212 ENDSUBMODULE 139 213 140 // REST: 7/50 214 // REST: 11/50 215 141 216 // TODO: node.setNodeName 142 217 // TODO: node.isSameNode … … 151 226 // TODO: node.addNewChild 152 227 // TODO: node.addSibling 153 // TODO: node.cloneNode154 // TODO: node.parentNode155 228 // TODO: node.nextSibling 156 229 // TODO: node.previousSibling 157 230 // TODO: node.hasChildNodes 158 // TODO: node.firstChild159 // TODO: node.lastChild160 231 // TODO: node.ownerDocument 161 232 // TODO: node.getOwner -
lang/cplusplus/llv8call/trunk/t/070_libxml/02_dom.js
r20864 r20866 1 1 require('t/util.js'); 2 2 3 plan({tests:1 1});3 plan({tests:17}); 4 4 5 5 check_lib("org.coderepos.libxml"); … … 63 63 }); 64 64 65 test(function () { 66 root.appendChild(bar) 67 root.appendChild(bar.cloneNode()) 68 is(root.toString(), '<foo><bar/><bar/></foo>', 'doc.cloneNode()'); 69 }); 70 71 test(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 78 test(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 85 test(function () { 86 root.appendChild(doc.createComment("yay")); 87 is(root.toString(), '<foo><!--yay--></foo>', 'node.createComment()'); 88 }); 89 65 90 doc.close(); 66 91
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)