akamai_bookmarklet 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (556) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +17 -0
  6. data/Rakefile +53 -0
  7. data/VERSION +1 -0
  8. data/bin/nokogiri +3 -0
  9. data/bin/rackup +3 -0
  10. data/config.ru +6 -0
  11. data/lib/akamai_bookmarklet.rb +2 -0
  12. data/lib/application/application.rb +34 -0
  13. data/lib/application/views/bookmarklet.html.erb +22 -0
  14. data/lib/application/views/purge.js.erb +32 -0
  15. data/test/helper.rb +10 -0
  16. data/test/test_akamai_bookmarklet.rb +7 -0
  17. data/vendor/gems/environment.rb +4 -0
  18. data/vendor/gems/ruby/1.8/cache/akamai-0.0.1.gem +0 -0
  19. data/vendor/gems/ruby/1.8/cache/casrack_the_authenticator-1.6.0.gem +0 -0
  20. data/vendor/gems/ruby/1.8/cache/nokogiri-1.3.3.gem +0 -0
  21. data/vendor/gems/ruby/1.8/cache/rack-1.1.0.gem +0 -0
  22. data/vendor/gems/ruby/1.8/cache/sinatra-0.9.4.gem +0 -0
  23. data/vendor/gems/ruby/1.8/environment.rb +112 -0
  24. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/.document +5 -0
  25. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/.gitignore +21 -0
  26. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/LICENSE +20 -0
  27. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/README.rdoc +17 -0
  28. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/Rakefile +53 -0
  29. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/VERSION +1 -0
  30. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/lib/akamai.rb +54 -0
  31. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/test/helper.rb +10 -0
  32. data/vendor/gems/ruby/1.8/gems/akamai-0.0.1/test/test_akamai.rb +7 -0
  33. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/.gitignore +3 -0
  34. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/README.rdoc +87 -0
  35. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/Rakefile +7 -0
  36. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/VERSION +1 -0
  37. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/casrack_the_authenticator.gemspec +83 -0
  38. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/developer_tasks/doc.rake +22 -0
  39. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/developer_tasks/gem.rake +20 -0
  40. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/developer_tasks/test.rake +24 -0
  41. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/fake.feature +34 -0
  42. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/require_cas.feature +19 -0
  43. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/simple.feature +32 -0
  44. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/step_definitions/fake_cas_steps.rb +14 -0
  45. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/step_definitions/rack_steps.rb +69 -0
  46. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/support/assertions.rb +3 -0
  47. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/features/support/rack_support.rb +89 -0
  48. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator/configuration.rb +88 -0
  49. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator/fake.rb +49 -0
  50. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator/require_cas.rb +36 -0
  51. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator/service_ticket_validator.rb +55 -0
  52. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator/simple.rb +82 -0
  53. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/lib/casrack_the_authenticator.rb +11 -0
  54. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/test/configuration_test.rb +83 -0
  55. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/test/fake_test.rb +94 -0
  56. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/test/service_ticket_validator_test.rb +85 -0
  57. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/test/simple_test.rb +131 -0
  58. data/vendor/gems/ruby/1.8/gems/casrack_the_authenticator-1.6.0/test/test_helper.rb +16 -0
  59. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/.autotest +27 -0
  60. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/.require_paths +3 -0
  61. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/CHANGELOG.ja.rdoc +285 -0
  62. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/CHANGELOG.rdoc +272 -0
  63. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/Manifest.txt +254 -0
  64. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/README.ja.rdoc +107 -0
  65. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/README.rdoc +121 -0
  66. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/Rakefile +208 -0
  67. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/bin/nokogiri +47 -0
  68. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/Makefile +150 -0
  69. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/conftest.dSYM/Contents/Info.plist +25 -0
  70. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/conftest.dSYM/Contents/Resources/DWARF/conftest +0 -0
  71. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/extconf.rb +161 -0
  72. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_document.c +181 -0
  73. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_document.h +10 -0
  74. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_document.o +0 -0
  75. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_element_description.c +272 -0
  76. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_element_description.h +10 -0
  77. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_element_description.o +0 -0
  78. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_entity_lookup.c +30 -0
  79. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_entity_lookup.h +8 -0
  80. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_entity_lookup.o +0 -0
  81. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_sax_parser.c +57 -0
  82. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_sax_parser.h +11 -0
  83. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/html_sax_parser.o +0 -0
  84. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/mkmf.log +248 -0
  85. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/nokogiri.bundle +0 -0
  86. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/nokogiri.c +83 -0
  87. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/nokogiri.h +149 -0
  88. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/nokogiri.o +0 -0
  89. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_attr.c +92 -0
  90. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_attr.h +9 -0
  91. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_attr.o +0 -0
  92. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_cdata.c +53 -0
  93. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_cdata.h +9 -0
  94. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_cdata.o +0 -0
  95. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_comment.c +51 -0
  96. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_comment.h +9 -0
  97. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_comment.o +0 -0
  98. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document.c +318 -0
  99. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document.h +24 -0
  100. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document.o +0 -0
  101. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document_fragment.c +48 -0
  102. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document_fragment.h +10 -0
  103. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_document_fragment.o +0 -0
  104. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_dtd.c +135 -0
  105. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_dtd.h +10 -0
  106. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_dtd.o +0 -0
  107. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_entity_reference.c +50 -0
  108. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_entity_reference.h +9 -0
  109. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_entity_reference.o +0 -0
  110. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_io.c +24 -0
  111. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_io.h +10 -0
  112. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_io.o +0 -0
  113. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_namespace.c +74 -0
  114. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_namespace.h +12 -0
  115. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_namespace.o +0 -0
  116. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node.c +955 -0
  117. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node.h +14 -0
  118. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node.o +0 -0
  119. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node_set.c +390 -0
  120. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node_set.h +9 -0
  121. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_node_set.o +0 -0
  122. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_processing_instruction.c +54 -0
  123. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_processing_instruction.h +9 -0
  124. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_processing_instruction.o +0 -0
  125. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_reader.c +565 -0
  126. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_reader.h +10 -0
  127. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_reader.o +0 -0
  128. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_relax_ng.c +159 -0
  129. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_relax_ng.h +9 -0
  130. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_relax_ng.o +0 -0
  131. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_parser.c +345 -0
  132. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_parser.h +10 -0
  133. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_parser.o +0 -0
  134. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_push_parser.c +86 -0
  135. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_push_parser.h +9 -0
  136. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_sax_push_parser.o +0 -0
  137. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_schema.c +156 -0
  138. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_schema.h +9 -0
  139. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_schema.o +0 -0
  140. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_syntax_error.c +210 -0
  141. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_syntax_error.h +13 -0
  142. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_syntax_error.o +0 -0
  143. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_text.c +47 -0
  144. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_text.h +9 -0
  145. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_text.o +0 -0
  146. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath.c +53 -0
  147. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath.h +11 -0
  148. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath.o +0 -0
  149. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath_context.c +252 -0
  150. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath_context.h +9 -0
  151. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xml_xpath_context.o +0 -0
  152. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xslt_stylesheet.c +131 -0
  153. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xslt_stylesheet.h +9 -0
  154. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/ext/nokogiri/xslt_stylesheet.o +0 -0
  155. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/action-nokogiri.rb +38 -0
  156. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/generated_parser.rb +646 -0
  157. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/generated_tokenizer.rb +142 -0
  158. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/node.rb +107 -0
  159. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/parser.rb +82 -0
  160. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/parser.y +227 -0
  161. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/syntax_error.rb +7 -0
  162. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/tokenizer.rb +7 -0
  163. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/tokenizer.rex +54 -0
  164. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css/xpath_visitor.rb +172 -0
  165. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/css.rb +25 -0
  166. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators/hpricot/node.rb +56 -0
  167. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators/hpricot/node_set.rb +54 -0
  168. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +30 -0
  169. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators/hpricot.rb +3 -0
  170. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators/slop.rb +33 -0
  171. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/decorators.rb +2 -0
  172. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/html/document.rb +37 -0
  173. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/html/element_description.rb +85 -0
  174. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
  175. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/html/sax/parser.rb +21 -0
  176. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/io_callbacks.rb +40 -0
  177. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/libxml.rb +322 -0
  178. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/common_node.rb +26 -0
  179. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
  180. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
  181. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
  182. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_attr.rb +19 -0
  183. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
  184. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_document.rb +108 -0
  185. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_dtd.rb +26 -0
  186. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
  187. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
  188. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
  189. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
  190. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
  191. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
  192. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +14 -0
  193. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
  194. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
  195. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
  196. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_xpath_context.rb +37 -0
  197. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
  198. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
  199. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
  200. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/attr.rb +41 -0
  201. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/cdata.rb +19 -0
  202. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/comment.rb +18 -0
  203. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/document.rb +118 -0
  204. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/document_fragment.rb +26 -0
  205. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/dtd.rb +58 -0
  206. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
  207. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/namespace.rb +44 -0
  208. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/node.rb +404 -0
  209. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/node_set.rb +133 -0
  210. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
  211. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/reader.rb +206 -0
  212. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
  213. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/sax/parser.rb +149 -0
  214. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/sax/push_parser.rb +38 -0
  215. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/schema.rb +92 -0
  216. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/syntax_error.rb +76 -0
  217. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/text.rb +18 -0
  218. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/xpath.rb +19 -0
  219. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xml/xpath_context.rb +135 -0
  220. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/ffi/xslt/stylesheet.rb +47 -0
  221. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/hpricot.rb +92 -0
  222. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/builder.rb +35 -0
  223. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/document.rb +73 -0
  224. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/document_fragment.rb +15 -0
  225. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/element_description.rb +23 -0
  226. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/entity_lookup.rb +13 -0
  227. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html/sax/parser.rb +48 -0
  228. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/html.rb +34 -0
  229. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/nokogiri.bundle +0 -0
  230. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/syntax_error.rb +4 -0
  231. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/version.rb +33 -0
  232. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/version_warning.rb +11 -0
  233. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/attr.rb +9 -0
  234. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/builder.rb +297 -0
  235. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/cdata.rb +11 -0
  236. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/document.rb +117 -0
  237. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/document_fragment.rb +49 -0
  238. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/dtd.rb +11 -0
  239. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/entity_declaration.rb +11 -0
  240. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/fragment_handler.rb +60 -0
  241. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/namespace.rb +7 -0
  242. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/node/save_options.rb +42 -0
  243. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/node.rb +647 -0
  244. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/node_set.rb +285 -0
  245. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/notation.rb +6 -0
  246. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/parse_options.rb +85 -0
  247. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/processing_instruction.rb +8 -0
  248. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/reader.rb +66 -0
  249. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/relax_ng.rb +32 -0
  250. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/sax/document.rb +143 -0
  251. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/sax/legacy_handlers.rb +65 -0
  252. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/sax/parser.rb +108 -0
  253. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/sax/push_parser.rb +63 -0
  254. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/sax.rb +4 -0
  255. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/schema.rb +61 -0
  256. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/syntax_error.rb +34 -0
  257. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/xpath/syntax_error.rb +8 -0
  258. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/xpath.rb +10 -0
  259. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml/xpath_context.rb +16 -0
  260. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xml.rb +62 -0
  261. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xslt/stylesheet.rb +25 -0
  262. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri/xslt.rb +48 -0
  263. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/nokogiri.rb +116 -0
  264. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/lib/xsd/xmlparser/nokogiri.rb +71 -0
  265. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/tasks/test.rb +100 -0
  266. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/css/test_nthiness.rb +159 -0
  267. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/css/test_parser.rb +277 -0
  268. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/css/test_tokenizer.rb +183 -0
  269. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/css/test_xpath_visitor.rb +76 -0
  270. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/ffi/test_document.rb +35 -0
  271. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/2ch.html +108 -0
  272. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/address_book.rlx +12 -0
  273. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/address_book.xml +10 -0
  274. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/bar/bar.xsd +4 -0
  275. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/dont_hurt_em_why.xml +422 -0
  276. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/exslt.xml +8 -0
  277. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/exslt.xslt +35 -0
  278. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/foo/foo.xsd +4 -0
  279. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/po.xml +32 -0
  280. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/po.xsd +66 -0
  281. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/shift_jis.xml +5 -0
  282. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/snuggles.xml +3 -0
  283. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/staff.xml +59 -0
  284. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/staff.xslt +32 -0
  285. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/tlm.html +850 -0
  286. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/files/valid_bar.xml +2 -0
  287. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/helper.rb +127 -0
  288. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/basic.xhtml +17 -0
  289. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/boingboing.html +2266 -0
  290. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/cy0.html +3653 -0
  291. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/immob.html +400 -0
  292. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/pace_application.html +1320 -0
  293. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/tenderlove.html +16 -0
  294. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/uswebgen.html +220 -0
  295. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/utf8.html +1054 -0
  296. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/week9.html +1723 -0
  297. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/files/why.xml +19 -0
  298. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/load_files.rb +11 -0
  299. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_alter.rb +68 -0
  300. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_builder.rb +20 -0
  301. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_parser.rb +350 -0
  302. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_paths.rb +15 -0
  303. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_preserved.rb +77 -0
  304. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/hpricot/test_xml.rb +30 -0
  305. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/sax/test_parser.rb +64 -0
  306. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_builder.rb +158 -0
  307. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_document.rb +368 -0
  308. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_document_encoding.rb +63 -0
  309. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_document_fragment.rb +123 -0
  310. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_element_description.rb +95 -0
  311. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_named_characters.rb +14 -0
  312. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/html/test_node.rb +168 -0
  313. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_convert_xpath.rb +137 -0
  314. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_css_cache.rb +45 -0
  315. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_gc.rb +15 -0
  316. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_memory_leak.rb +77 -0
  317. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_nokogiri.rb +134 -0
  318. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_reader.rb +330 -0
  319. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/test_xslt_transforms.rb +131 -0
  320. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/node/test_save_options.rb +20 -0
  321. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/node/test_subclass.rb +44 -0
  322. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/sax/test_parser.rb +246 -0
  323. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/sax/test_push_parser.rb +96 -0
  324. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_attr.rb +38 -0
  325. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_builder.rb +73 -0
  326. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_cdata.rb +38 -0
  327. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_comment.rb +23 -0
  328. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_document.rb +466 -0
  329. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_document_encoding.rb +26 -0
  330. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_document_fragment.rb +88 -0
  331. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_dtd.rb +47 -0
  332. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_dtd_encoding.rb +31 -0
  333. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_entity_reference.rb +21 -0
  334. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_namespace.rb +48 -0
  335. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_node.rb +823 -0
  336. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_node_attributes.rb +34 -0
  337. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_node_encoding.rb +107 -0
  338. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_node_set.rb +397 -0
  339. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_parse_options.rb +52 -0
  340. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_processing_instruction.rb +30 -0
  341. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_reader_encoding.rb +126 -0
  342. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_relax_ng.rb +60 -0
  343. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_schema.rb +89 -0
  344. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_text.rb +18 -0
  345. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_unparented_node.rb +381 -0
  346. data/vendor/gems/ruby/1.8/gems/nokogiri-1.3.3/test/xml/test_xpath.rb +106 -0
  347. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/COPYING +18 -0
  348. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/KNOWN-ISSUES +21 -0
  349. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/RDOX +0 -0
  350. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/README +399 -0
  351. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/SPEC +171 -0
  352. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/bin/rackup +4 -0
  353. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/contrib/rack_logo.svg +111 -0
  354. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/lobster.ru +4 -0
  355. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/protectedlobster.rb +14 -0
  356. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/protectedlobster.ru +8 -0
  357. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/adapter/camping.rb +22 -0
  358. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb +37 -0
  359. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb +37 -0
  360. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/basic.rb +58 -0
  361. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb +124 -0
  362. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb +51 -0
  363. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/params.rb +55 -0
  364. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/request.rb +40 -0
  365. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/builder.rb +80 -0
  366. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/cascade.rb +41 -0
  367. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/chunked.rb +49 -0
  368. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/commonlogger.rb +49 -0
  369. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/conditionalget.rb +47 -0
  370. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/config.rb +15 -0
  371. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb +29 -0
  372. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_type.rb +23 -0
  373. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/deflater.rb +96 -0
  374. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/directory.rb +157 -0
  375. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/etag.rb +23 -0
  376. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/file.rb +90 -0
  377. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/cgi.rb +61 -0
  378. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb +8 -0
  379. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb +89 -0
  380. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/lsws.rb +63 -0
  381. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/mongrel.rb +90 -0
  382. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/scgi.rb +62 -0
  383. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
  384. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/thin.rb +18 -0
  385. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/webrick.rb +69 -0
  386. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler.rb +88 -0
  387. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/head.rb +19 -0
  388. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lint.rb +575 -0
  389. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lobster.rb +65 -0
  390. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb +16 -0
  391. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/logger.rb +20 -0
  392. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb +27 -0
  393. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/mime.rb +206 -0
  394. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/mock.rb +189 -0
  395. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/nulllogger.rb +18 -0
  396. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/recursive.rb +57 -0
  397. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/reloader.rb +109 -0
  398. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/request.rb +271 -0
  399. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/response.rb +149 -0
  400. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/rewindable_input.rb +100 -0
  401. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/runtime.rb +27 -0
  402. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/sendfile.rb +142 -0
  403. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/server.rb +212 -0
  404. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/abstract/id.rb +140 -0
  405. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/cookie.rb +90 -0
  406. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/memcache.rb +119 -0
  407. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/pool.rb +100 -0
  408. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showexceptions.rb +349 -0
  409. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showstatus.rb +106 -0
  410. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/static.rb +38 -0
  411. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb +56 -0
  412. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/utils.rb +620 -0
  413. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack.rb +92 -0
  414. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/rack.gemspec +38 -0
  415. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_basic.rb +73 -0
  416. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_digest.rb +226 -0
  417. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_builder.rb +84 -0
  418. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_camping.rb +51 -0
  419. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cascade.rb +48 -0
  420. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb +89 -0
  421. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_chunked.rb +62 -0
  422. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_commonlogger.rb +61 -0
  423. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_conditionalget.rb +41 -0
  424. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_config.rb +24 -0
  425. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_length.rb +43 -0
  426. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_type.rb +30 -0
  427. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_deflater.rb +127 -0
  428. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_directory.rb +61 -0
  429. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_etag.rb +17 -0
  430. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_fastcgi.rb +89 -0
  431. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_file.rb +75 -0
  432. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_handler.rb +43 -0
  433. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_head.rb +30 -0
  434. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lint.rb +528 -0
  435. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lobster.rb +45 -0
  436. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lock.rb +38 -0
  437. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_logger.rb +21 -0
  438. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_methodoverride.rb +60 -0
  439. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mock.rb +243 -0
  440. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mongrel.rb +189 -0
  441. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_nulllogger.rb +13 -0
  442. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_recursive.rb +77 -0
  443. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_request.rb +545 -0
  444. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_response.rb +221 -0
  445. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb +118 -0
  446. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_runtime.rb +35 -0
  447. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_sendfile.rb +86 -0
  448. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_cookie.rb +73 -0
  449. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_memcache.rb +273 -0
  450. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_pool.rb +172 -0
  451. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showexceptions.rb +21 -0
  452. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showstatus.rb +72 -0
  453. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_static.rb +37 -0
  454. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_thin.rb +91 -0
  455. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_urlmap.rb +215 -0
  456. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_utils.rb +552 -0
  457. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_webrick.rb +130 -0
  458. data/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rackup.rb +154 -0
  459. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/AUTHORS +41 -0
  460. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/CHANGES +385 -0
  461. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/LICENSE +22 -0
  462. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/README.rdoc +573 -0
  463. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/Rakefile +138 -0
  464. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/app_test.rb +282 -0
  465. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/application_test.rb +262 -0
  466. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/builder_test.rb +101 -0
  467. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/compat_test.rb +12 -0
  468. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/custom_error_test.rb +62 -0
  469. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/erb_test.rb +136 -0
  470. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/events_test.rb +78 -0
  471. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/filter_test.rb +30 -0
  472. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/haml_test.rb +236 -0
  473. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/helper.rb +33 -0
  474. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/mapped_error_test.rb +72 -0
  475. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/pipeline_test.rb +45 -0
  476. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/public/foo.xml +1 -0
  477. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/sass_test.rb +67 -0
  478. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/sessions_test.rb +42 -0
  479. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/streaming_test.rb +133 -0
  480. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/sym_params_test.rb +19 -0
  481. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/template_test.rb +30 -0
  482. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb +47 -0
  483. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo.builder +1 -0
  484. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo.erb +1 -0
  485. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo.haml +1 -0
  486. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo.sass +2 -0
  487. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo_layout.erb +2 -0
  488. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/foo_layout.haml +2 -0
  489. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder +1 -0
  490. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb +1 -0
  491. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml +1 -0
  492. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass +2 -0
  493. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder +3 -0
  494. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb +1 -0
  495. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml +1 -0
  496. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass +2 -0
  497. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder +1 -0
  498. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml +1 -0
  499. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/base.rb +1119 -0
  500. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/compat.rb +266 -0
  501. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/images/404.png +0 -0
  502. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/images/500.png +0 -0
  503. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/main.rb +35 -0
  504. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb +303 -0
  505. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb +19 -0
  506. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb +13 -0
  507. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb +11 -0
  508. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb +13 -0
  509. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra/test.rb +128 -0
  510. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/lib/sinatra.rb +8 -0
  511. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/sinatra.gemspec +125 -0
  512. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/base_test.rb +160 -0
  513. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/builder_test.rb +65 -0
  514. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/contest.rb +64 -0
  515. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/data/reload_app_file.rb +3 -0
  516. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/erb_test.rb +81 -0
  517. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/extensions_test.rb +100 -0
  518. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/filter_test.rb +99 -0
  519. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/haml_test.rb +90 -0
  520. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/helper.rb +76 -0
  521. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/helpers_test.rb +503 -0
  522. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/mapped_error_test.rb +155 -0
  523. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/middleware_test.rb +68 -0
  524. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/options_test.rb +372 -0
  525. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/render_backtrace_test.rb +145 -0
  526. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/request_test.rb +18 -0
  527. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/response_test.rb +42 -0
  528. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/result_test.rb +98 -0
  529. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/route_added_hook_test.rb +59 -0
  530. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/routing_test.rb +784 -0
  531. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/sass_test.rb +79 -0
  532. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/server_test.rb +47 -0
  533. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/sinatra_test.rb +13 -0
  534. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/static_test.rb +80 -0
  535. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/templates_test.rb +122 -0
  536. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/test_test.rb +152 -0
  537. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/error.builder +3 -0
  538. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/error.erb +3 -0
  539. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/error.haml +3 -0
  540. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/error.sass +2 -0
  541. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/foo/hello.test +1 -0
  542. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/hello.builder +1 -0
  543. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/hello.erb +1 -0
  544. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/hello.haml +1 -0
  545. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/hello.sass +2 -0
  546. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/hello.test +1 -0
  547. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/layout2.builder +3 -0
  548. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/layout2.erb +2 -0
  549. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/layout2.haml +2 -0
  550. data/vendor/gems/ruby/1.8/gems/sinatra-0.9.4/test/views/layout2.test +1 -0
  551. data/vendor/gems/ruby/1.8/specifications/akamai-0.0.1.gemspec +33 -0
  552. data/vendor/gems/ruby/1.8/specifications/casrack_the_authenticator-1.6.0.gemspec +45 -0
  553. data/vendor/gems/ruby/1.8/specifications/nokogiri-1.3.3.gemspec +50 -0
  554. data/vendor/gems/ruby/1.8/specifications/rack-1.1.0.gemspec +57 -0
  555. data/vendor/gems/ruby/1.8/specifications/sinatra-0.9.4.gemspec +40 -0
  556. metadata +621 -0
@@ -0,0 +1,955 @@
1
+ #include <xml_node.h>
2
+
3
+ #ifdef DEBUG
4
+ static void debug_node_dealloc(xmlNodePtr x)
5
+ {
6
+ NOKOGIRI_DEBUG_START(x)
7
+ NOKOGIRI_DEBUG_END(x)
8
+ }
9
+ #else
10
+ # define debug_node_dealloc 0
11
+ #endif
12
+
13
+ static void mark(xmlNodePtr node)
14
+ {
15
+ // it's OK if the document isn't fully realized (as in XML::Reader).
16
+ // see http://github.com/tenderlove/nokogiri/issues/closed/#issue/95
17
+ if (DOC_RUBY_OBJECT_TEST(node->doc) && DOC_RUBY_OBJECT(node->doc))
18
+ rb_gc_mark(DOC_RUBY_OBJECT(node->doc));
19
+ }
20
+
21
+ /* :nodoc: */
22
+ typedef xmlNodePtr (*node_other_func)(xmlNodePtr, xmlNodePtr);
23
+
24
+ /* :nodoc: */
25
+ static void relink_namespace(xmlNodePtr reparented)
26
+ {
27
+ // Make sure that our reparented node has the correct namespaces
28
+ if(reparented->doc != (xmlDocPtr)reparented->parent)
29
+ xmlSetNs(reparented, reparented->parent->ns);
30
+
31
+ // Search our parents for an existing definition
32
+ if(reparented->nsDef) {
33
+ xmlNsPtr ns = xmlSearchNsByHref(
34
+ reparented->doc,
35
+ reparented->parent,
36
+ reparented->nsDef->href
37
+ );
38
+ if(ns && ns != reparented->nsDef) reparented->nsDef = NULL;
39
+ }
40
+
41
+ // Only walk all children if there actually is a namespace we need to
42
+ // reparent.
43
+ if(NULL == reparented->ns) return;
44
+
45
+ // When a node gets reparented, walk it's children to make sure that
46
+ // their namespaces are reparented as well.
47
+ xmlNodePtr child = reparented->children;
48
+ while(NULL != child) {
49
+ relink_namespace(child);
50
+ child = child->next;
51
+ }
52
+ }
53
+
54
+ /* :nodoc: */
55
+ static VALUE reparent_node_with(VALUE node_obj, VALUE other_obj, node_other_func func)
56
+ {
57
+ VALUE reparented_obj ;
58
+ xmlNodePtr node, other, reparented ;
59
+
60
+ if(! rb_funcall(node_obj, rb_intern("is_a?"), 1, cNokogiriXmlNode))
61
+ rb_raise(rb_eArgError, "node must be a Nokogiri::XML::Node");
62
+
63
+ Data_Get_Struct(node_obj, xmlNode, node);
64
+ Data_Get_Struct(other_obj, xmlNode, other);
65
+
66
+ // If a document fragment is added, we need to reparent all of it's children
67
+ if(node->type == XML_DOCUMENT_FRAG_NODE)
68
+ {
69
+ xmlNodePtr child = node->children;
70
+ while(NULL != child) {
71
+ reparent_node_with(Nokogiri_wrap_xml_node((VALUE)NULL, child), other_obj, func);
72
+ child = child->next;
73
+ }
74
+ return node_obj;
75
+ }
76
+
77
+ if (node->doc == other->doc) {
78
+ xmlUnlinkNode(node) ;
79
+ if ( node->type == XML_TEXT_NODE
80
+ && other->type == XML_TEXT_NODE
81
+ && is_2_6_16() ) {
82
+ other->content = xmlStrdup(other->content); // we'd rather leak than segfault.
83
+ }
84
+
85
+ if(!(reparented = (*func)(other, node))) {
86
+ rb_raise(rb_eRuntimeError, "Could not reparent node (1)");
87
+ }
88
+
89
+ } else {
90
+ xmlNodePtr duped_node ;
91
+ // recursively copy to the new document
92
+ if (!(duped_node = xmlDocCopyNode(node, other->doc, 1))) {
93
+ rb_raise(rb_eRuntimeError, "Could not reparent node (xmlDocCopyNode)");
94
+ }
95
+ if(!(reparented = (*func)(other, duped_node))) {
96
+ rb_raise(rb_eRuntimeError, "Could not reparent node (2)");
97
+ }
98
+ xmlUnlinkNode(node);
99
+ NOKOGIRI_ROOT_NODE(node);
100
+ }
101
+
102
+ // the child was a text node that was coalesced. we need to have the object
103
+ // point at SOMETHING, or we'll totally bomb out.
104
+ if (reparented != node) {
105
+ DATA_PTR(node_obj) = reparented ;
106
+ }
107
+
108
+ // Appropriately link in namespaces
109
+ relink_namespace(reparented);
110
+
111
+ reparented_obj = Nokogiri_wrap_xml_node(Qnil, reparented);
112
+
113
+ rb_funcall(reparented_obj, rb_intern("decorate!"), 0);
114
+
115
+ return reparented_obj ;
116
+ }
117
+
118
+
119
+ /*
120
+ * call-seq:
121
+ * document
122
+ *
123
+ * Get the document for this Node
124
+ */
125
+ static VALUE document(VALUE self)
126
+ {
127
+ xmlNodePtr node;
128
+ Data_Get_Struct(self, xmlNode, node);
129
+ return DOC_RUBY_OBJECT(node->doc);
130
+ }
131
+
132
+ /*
133
+ * call-seq:
134
+ * pointer_id
135
+ *
136
+ * Get the internal pointer number
137
+ */
138
+ static VALUE pointer_id(VALUE self)
139
+ {
140
+ xmlNodePtr node;
141
+ Data_Get_Struct(self, xmlNode, node);
142
+
143
+ return INT2NUM((int)(node));
144
+ }
145
+
146
+ /*
147
+ * call-seq:
148
+ * encode_special_chars(string)
149
+ *
150
+ * Encode any special characters in +string+
151
+ */
152
+ static VALUE encode_special_chars(VALUE self, VALUE string)
153
+ {
154
+ xmlNodePtr node;
155
+ Data_Get_Struct(self, xmlNode, node);
156
+ xmlChar * encoded = xmlEncodeSpecialChars(
157
+ node->doc,
158
+ (const xmlChar *)StringValuePtr(string)
159
+ );
160
+
161
+ VALUE encoded_str = NOKOGIRI_STR_NEW2(encoded, node->doc->encoding);
162
+ xmlFree(encoded);
163
+
164
+ return encoded_str;
165
+ }
166
+
167
+ /*
168
+ * call-seq:
169
+ * internal_subset
170
+ *
171
+ * Get the internal subset
172
+ */
173
+ static VALUE internal_subset(VALUE self)
174
+ {
175
+ xmlNodePtr node;
176
+ xmlDocPtr doc;
177
+ Data_Get_Struct(self, xmlNode, node);
178
+
179
+ if(!node->doc) return Qnil;
180
+
181
+ doc = node->doc;
182
+ xmlDtdPtr dtd = xmlGetIntSubset(doc);
183
+
184
+ if(!dtd) return Qnil;
185
+
186
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
187
+ }
188
+
189
+ /*
190
+ * call-seq:
191
+ * dup
192
+ *
193
+ * Copy this node. An optional depth may be passed in, but it defaults
194
+ * to a deep copy. 0 is a shallow copy, 1 is a deep copy.
195
+ */
196
+ static VALUE duplicate_node(int argc, VALUE *argv, VALUE self)
197
+ {
198
+ VALUE level;
199
+
200
+ if(rb_scan_args(argc, argv, "01", &level) == 0)
201
+ level = INT2NUM(1);
202
+
203
+ xmlNodePtr node, dup;
204
+ Data_Get_Struct(self, xmlNode, node);
205
+
206
+ dup = xmlDocCopyNode(node, node->doc, NUM2INT(level));
207
+ if(dup == NULL) return Qnil;
208
+
209
+ return Nokogiri_wrap_xml_node(rb_obj_class(self), dup);
210
+ }
211
+
212
+ /*
213
+ * call-seq:
214
+ * unlink
215
+ *
216
+ * Unlink this node from its current context.
217
+ */
218
+ static VALUE unlink_node(VALUE self)
219
+ {
220
+ xmlNodePtr node;
221
+ Data_Get_Struct(self, xmlNode, node);
222
+ xmlUnlinkNode(node);
223
+ NOKOGIRI_ROOT_NODE(node);
224
+ return self;
225
+ }
226
+
227
+ /*
228
+ * call-seq:
229
+ * blank?
230
+ *
231
+ * Is this node blank?
232
+ */
233
+ static VALUE blank_eh(VALUE self)
234
+ {
235
+ xmlNodePtr node;
236
+ Data_Get_Struct(self, xmlNode, node);
237
+ if(1 == xmlIsBlankNode(node))
238
+ return Qtrue;
239
+ return Qfalse;
240
+ }
241
+
242
+ /*
243
+ * call-seq:
244
+ * next_sibling
245
+ *
246
+ * Returns the next sibling node
247
+ */
248
+ static VALUE next_sibling(VALUE self)
249
+ {
250
+ xmlNodePtr node, sibling;
251
+ Data_Get_Struct(self, xmlNode, node);
252
+
253
+ sibling = node->next;
254
+ if(!sibling) return Qnil;
255
+
256
+ return Nokogiri_wrap_xml_node(Qnil, sibling) ;
257
+ }
258
+
259
+ /*
260
+ * call-seq:
261
+ * previous_sibling
262
+ *
263
+ * Returns the previous sibling node
264
+ */
265
+ static VALUE previous_sibling(VALUE self)
266
+ {
267
+ xmlNodePtr node, sibling;
268
+ Data_Get_Struct(self, xmlNode, node);
269
+
270
+ sibling = node->prev;
271
+ if(!sibling) return Qnil;
272
+
273
+ return Nokogiri_wrap_xml_node(Qnil, sibling);
274
+ }
275
+
276
+ /* :nodoc: */
277
+ static VALUE replace(VALUE self, VALUE _new_node)
278
+ {
279
+ xmlNodePtr node, new_node;
280
+ Data_Get_Struct(self, xmlNode, node);
281
+ Data_Get_Struct(_new_node, xmlNode, new_node);
282
+
283
+ xmlReplaceNode(node, new_node);
284
+
285
+ // Appropriately link in namespaces
286
+ relink_namespace(new_node);
287
+ return self ;
288
+ }
289
+
290
+ /*
291
+ * call-seq:
292
+ * children
293
+ *
294
+ * Get the list of children for this node as a NodeSet
295
+ */
296
+ static VALUE children(VALUE self)
297
+ {
298
+ xmlNodePtr node;
299
+ Data_Get_Struct(self, xmlNode, node);
300
+
301
+ xmlNodePtr child = node->children;
302
+ xmlNodeSetPtr set = xmlXPathNodeSetCreate(child);
303
+
304
+ if(!child) return Nokogiri_wrap_xml_node_set(set);
305
+
306
+ child = child->next;
307
+ while(NULL != child) {
308
+ xmlXPathNodeSetAdd(set, child);
309
+ child = child->next;
310
+ }
311
+
312
+ VALUE node_set = Nokogiri_wrap_xml_node_set(set);
313
+ rb_iv_set(node_set, "@document", DOC_RUBY_OBJECT(node->doc));
314
+
315
+ return node_set;
316
+ }
317
+
318
+ /*
319
+ * call-seq:
320
+ * child
321
+ *
322
+ * Returns the child node
323
+ */
324
+ static VALUE child(VALUE self)
325
+ {
326
+ xmlNodePtr node, child;
327
+ Data_Get_Struct(self, xmlNode, node);
328
+
329
+ child = node->children;
330
+ if(!child) return Qnil;
331
+
332
+ return Nokogiri_wrap_xml_node(Qnil, child);
333
+ }
334
+
335
+ /*
336
+ * call-seq:
337
+ * key?(attribute)
338
+ *
339
+ * Returns true if +attribute+ is set
340
+ */
341
+ static VALUE key_eh(VALUE self, VALUE attribute)
342
+ {
343
+ xmlNodePtr node;
344
+ Data_Get_Struct(self, xmlNode, node);
345
+ if(xmlHasProp(node, (xmlChar *)StringValuePtr(attribute)))
346
+ return Qtrue;
347
+ return Qfalse;
348
+ }
349
+
350
+ /*
351
+ * call-seq:
352
+ * namespaced_key?(attribute, namespace)
353
+ *
354
+ * Returns true if +attribute+ is set with +namespace+
355
+ */
356
+ static VALUE namespaced_key_eh(VALUE self, VALUE attribute, VALUE namespace)
357
+ {
358
+ xmlNodePtr node;
359
+ Data_Get_Struct(self, xmlNode, node);
360
+ if(xmlHasNsProp(node, (xmlChar *)StringValuePtr(attribute),
361
+ Qnil == namespace ? NULL : (xmlChar *)StringValuePtr(namespace)))
362
+ return Qtrue;
363
+ return Qfalse;
364
+ }
365
+
366
+ /*
367
+ * call-seq:
368
+ * []=(property, value)
369
+ *
370
+ * Set the +property+ to +value+
371
+ */
372
+ static VALUE set(VALUE self, VALUE property, VALUE value)
373
+ {
374
+ xmlNodePtr node;
375
+ Data_Get_Struct(self, xmlNode, node);
376
+
377
+ xmlSetProp(node, (xmlChar *)StringValuePtr(property),
378
+ (xmlChar *)StringValuePtr(value));
379
+
380
+ return value;
381
+ }
382
+
383
+ /*
384
+ * call-seq:
385
+ * get(attribute)
386
+ *
387
+ * Get the value for +attribute+
388
+ */
389
+ static VALUE get(VALUE self, VALUE attribute)
390
+ {
391
+ xmlNodePtr node;
392
+ xmlChar* propstr ;
393
+ VALUE rval ;
394
+ Data_Get_Struct(self, xmlNode, node);
395
+
396
+ if(attribute == Qnil) return Qnil;
397
+
398
+ propstr = xmlGetProp(node, (xmlChar *)StringValuePtr(attribute));
399
+
400
+ if(NULL == propstr) return Qnil;
401
+
402
+ rval = NOKOGIRI_STR_NEW2(propstr, node->doc->encoding);
403
+
404
+ xmlFree(propstr);
405
+ return rval ;
406
+ }
407
+
408
+ /*
409
+ * call-seq:
410
+ * set_namespace(namespace)
411
+ *
412
+ * Set the namespace to +namespace+
413
+ */
414
+ static VALUE set_namespace(VALUE self, VALUE namespace)
415
+ {
416
+ xmlNodePtr node;
417
+ xmlNsPtr ns;
418
+
419
+ Data_Get_Struct(self, xmlNode, node);
420
+ Data_Get_Struct(namespace, xmlNs, ns);
421
+
422
+ xmlSetNs(node, ns);
423
+
424
+ return self;
425
+ }
426
+
427
+ /*
428
+ * call-seq:
429
+ * attribute(name)
430
+ *
431
+ * Get the attribute node with +name+
432
+ */
433
+ static VALUE attr(VALUE self, VALUE name)
434
+ {
435
+ xmlNodePtr node;
436
+ xmlAttrPtr prop;
437
+ Data_Get_Struct(self, xmlNode, node);
438
+ prop = xmlHasProp(node, (xmlChar *)StringValuePtr(name));
439
+
440
+ if(! prop) return Qnil;
441
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
442
+ }
443
+
444
+ /*
445
+ * call-seq:
446
+ * attribute_with_ns(name, namespace)
447
+ *
448
+ * Get the attribute node with +name+ and +namespace+
449
+ */
450
+ static VALUE attribute_with_ns(VALUE self, VALUE name, VALUE namespace)
451
+ {
452
+ xmlNodePtr node;
453
+ xmlAttrPtr prop;
454
+ Data_Get_Struct(self, xmlNode, node);
455
+ prop = xmlHasNsProp(node, (xmlChar *)StringValuePtr(name),
456
+ Qnil == namespace ? NULL : (xmlChar *)StringValuePtr(namespace));
457
+
458
+ if(! prop) return Qnil;
459
+ return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
460
+ }
461
+
462
+ /*
463
+ * call-seq:
464
+ * attribute_nodes()
465
+ *
466
+ * returns a list containing the Node attributes.
467
+ */
468
+ static VALUE attribute_nodes(VALUE self)
469
+ {
470
+ /* this code in the mode of xmlHasProp() */
471
+ xmlNodePtr node ;
472
+ VALUE attr ;
473
+
474
+ attr = rb_ary_new() ;
475
+ Data_Get_Struct(self, xmlNode, node);
476
+
477
+ Nokogiri_xml_node_properties(node, attr);
478
+
479
+ return attr ;
480
+ }
481
+
482
+
483
+ /*
484
+ * call-seq:
485
+ * namespace()
486
+ *
487
+ * returns the Nokogiri::XML::Namespace for the node, if one exists.
488
+ */
489
+ static VALUE namespace(VALUE self)
490
+ {
491
+ xmlNodePtr node ;
492
+ Data_Get_Struct(self, xmlNode, node);
493
+
494
+ if (node->ns)
495
+ return Nokogiri_wrap_xml_namespace(node->doc, node->ns);
496
+
497
+ return Qnil ;
498
+ }
499
+
500
+ /*
501
+ * call-seq:
502
+ * namespace_definitions()
503
+ *
504
+ * returns a list of Namespace nodes defined on _self_
505
+ */
506
+ static VALUE namespace_definitions(VALUE self)
507
+ {
508
+ /* this code in the mode of xmlHasProp() */
509
+ xmlNodePtr node ;
510
+
511
+ Data_Get_Struct(self, xmlNode, node);
512
+
513
+ VALUE list = rb_ary_new();
514
+
515
+ xmlNsPtr ns = node->nsDef;
516
+
517
+ if(!ns) return list;
518
+
519
+ while(NULL != ns) {
520
+ rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns));
521
+ ns = ns->next;
522
+ }
523
+
524
+ return list;
525
+ }
526
+
527
+ /*
528
+ * call-seq:
529
+ * node_type
530
+ *
531
+ * Get the type for this Node
532
+ */
533
+ static VALUE node_type(VALUE self)
534
+ {
535
+ xmlNodePtr node;
536
+ Data_Get_Struct(self, xmlNode, node);
537
+ return INT2NUM((int)node->type);
538
+ }
539
+
540
+ /*
541
+ * call-seq:
542
+ * content=
543
+ *
544
+ * Set the content for this Node
545
+ */
546
+ static VALUE set_content(VALUE self, VALUE content)
547
+ {
548
+ xmlNodePtr node;
549
+ Data_Get_Struct(self, xmlNode, node);
550
+ xmlNodeSetContent(node, (xmlChar *)StringValuePtr(content));
551
+ return content;
552
+ }
553
+
554
+ /*
555
+ * call-seq:
556
+ * content
557
+ *
558
+ * Returns the content for this Node
559
+ */
560
+ static VALUE get_content(VALUE self)
561
+ {
562
+ xmlNodePtr node;
563
+ Data_Get_Struct(self, xmlNode, node);
564
+
565
+ xmlChar * content = xmlNodeGetContent(node);
566
+ if(content) {
567
+ VALUE rval = NOKOGIRI_STR_NEW2(content, node->doc->encoding);
568
+ xmlFree(content);
569
+ return rval;
570
+ }
571
+ return Qnil;
572
+ }
573
+
574
+ /*
575
+ * call-seq:
576
+ * add_child(node)
577
+ *
578
+ * Add +node+ as a child of this node. Returns the new child node.
579
+ */
580
+ static VALUE add_child(VALUE self, VALUE child)
581
+ {
582
+ return reparent_node_with(child, self, xmlAddChild);
583
+ }
584
+
585
+ /*
586
+ * call-seq:
587
+ * parent
588
+ *
589
+ * Get the parent Node for this Node
590
+ */
591
+ static VALUE get_parent(VALUE self)
592
+ {
593
+ xmlNodePtr node, parent;
594
+ Data_Get_Struct(self, xmlNode, node);
595
+
596
+ parent = node->parent;
597
+ if(!parent) return Qnil;
598
+
599
+ return Nokogiri_wrap_xml_node(Qnil, parent) ;
600
+ }
601
+
602
+ /*
603
+ * call-seq:
604
+ * name=(new_name)
605
+ *
606
+ * Set the name for this Node
607
+ */
608
+ static VALUE set_name(VALUE self, VALUE new_name)
609
+ {
610
+ xmlNodePtr node;
611
+ Data_Get_Struct(self, xmlNode, node);
612
+ xmlNodeSetName(node, (xmlChar*)StringValuePtr(new_name));
613
+ return new_name;
614
+ }
615
+
616
+ /*
617
+ * call-seq:
618
+ * name
619
+ *
620
+ * Returns the name for this Node
621
+ */
622
+ static VALUE get_name(VALUE self)
623
+ {
624
+ xmlNodePtr node;
625
+ Data_Get_Struct(self, xmlNode, node);
626
+ if(node->name)
627
+ return NOKOGIRI_STR_NEW2(node->name, node->doc->encoding);
628
+ return Qnil;
629
+ }
630
+
631
+ /*
632
+ * call-seq:
633
+ * path
634
+ *
635
+ * Returns the path associated with this Node
636
+ */
637
+ static VALUE path(VALUE self)
638
+ {
639
+ xmlNodePtr node;
640
+ xmlChar *path ;
641
+ Data_Get_Struct(self, xmlNode, node);
642
+
643
+ path = xmlGetNodePath(node);
644
+ VALUE rval = NOKOGIRI_STR_NEW2(path, node->doc->encoding);
645
+ xmlFree(path);
646
+ return rval ;
647
+ }
648
+
649
+ /*
650
+ * call-seq:
651
+ * add_next_sibling(node)
652
+ *
653
+ * Insert +node+ after this node (as a sibling).
654
+ */
655
+ static VALUE add_next_sibling(VALUE self, VALUE rb_node)
656
+ {
657
+ return reparent_node_with(rb_node, self, xmlAddNextSibling) ;
658
+ }
659
+
660
+ /*
661
+ * call-seq:
662
+ * add_previous_sibling(node)
663
+ *
664
+ * Insert +node+ before this node (as a sibling).
665
+ */
666
+ static VALUE add_previous_sibling(VALUE self, VALUE rb_node)
667
+ {
668
+ return reparent_node_with(rb_node, self, xmlAddPrevSibling) ;
669
+ }
670
+
671
+ /*
672
+ * call-seq:
673
+ * native_write_to(io, encoding, options)
674
+ *
675
+ * Write this Node to +io+ with +encoding+ and +options+
676
+ */
677
+ static VALUE native_write_to(
678
+ VALUE self,
679
+ VALUE io,
680
+ VALUE encoding,
681
+ VALUE indent_string,
682
+ VALUE options
683
+ ) {
684
+ xmlNodePtr node;
685
+
686
+ Data_Get_Struct(self, xmlNode, node);
687
+
688
+ xmlIndentTreeOutput = 1;
689
+
690
+ const char * before_indent = xmlTreeIndentString;
691
+
692
+ xmlTreeIndentString = StringValuePtr(indent_string);
693
+
694
+ xmlSaveCtxtPtr savectx = xmlSaveToIO(
695
+ (xmlOutputWriteCallback)io_write_callback,
696
+ (xmlOutputCloseCallback)io_close_callback,
697
+ (void *)io,
698
+ RTEST(encoding) ? StringValuePtr(encoding) : NULL,
699
+ NUM2INT(options)
700
+ );
701
+
702
+ xmlSaveTree(savectx, node);
703
+ xmlSaveClose(savectx);
704
+
705
+ xmlTreeIndentString = before_indent;
706
+ return io;
707
+ }
708
+
709
+ /*
710
+ * call-seq:
711
+ * line
712
+ *
713
+ * Returns the line for this Node
714
+ */
715
+ static VALUE line(VALUE self)
716
+ {
717
+ xmlNodePtr node;
718
+ Data_Get_Struct(self, xmlNode, node);
719
+
720
+ return INT2NUM(node->line);
721
+ }
722
+
723
+ /*
724
+ * call-seq:
725
+ * add_namespace_definition(prefix, href)
726
+ *
727
+ * Adds a namespace definition with +prefix+ using +href+
728
+ */
729
+ static VALUE add_namespace_definition(VALUE self, VALUE prefix, VALUE href)
730
+ {
731
+ xmlNodePtr node;
732
+ Data_Get_Struct(self, xmlNode, node);
733
+
734
+
735
+ xmlNsPtr ns = xmlNewNs(
736
+ node,
737
+ (const xmlChar *)StringValuePtr(href),
738
+ (const xmlChar *)(prefix == Qnil ? NULL : StringValuePtr(prefix))
739
+ );
740
+
741
+ if(!ns) {
742
+ ns = xmlSearchNs(
743
+ node->doc,
744
+ node,
745
+ (const xmlChar *)(prefix == Qnil ? NULL : StringValuePtr(prefix))
746
+ );
747
+ }
748
+
749
+ if(Qnil == prefix) xmlSetNs(node, ns);
750
+
751
+ return Nokogiri_wrap_xml_namespace(node->doc, ns);
752
+ }
753
+
754
+ /*
755
+ * call-seq:
756
+ * new(name, document)
757
+ *
758
+ * Create a new node with +name+ sharing GC lifecycle with +document+
759
+ */
760
+ static VALUE new(int argc, VALUE *argv, VALUE klass)
761
+ {
762
+ xmlDocPtr doc;
763
+ VALUE name;
764
+ VALUE document;
765
+ VALUE rest;
766
+
767
+ rb_scan_args(argc, argv, "2*", &name, &document, &rest);
768
+
769
+ Data_Get_Struct(document, xmlDoc, doc);
770
+
771
+ xmlNodePtr node = xmlNewNode(NULL, (xmlChar *)StringValuePtr(name));
772
+ node->doc = doc->doc;
773
+ NOKOGIRI_ROOT_NODE(node);
774
+
775
+ VALUE rb_node = Nokogiri_wrap_xml_node(
776
+ klass == cNokogiriXmlNode ? (VALUE)NULL : klass,
777
+ node
778
+ );
779
+ rb_funcall2(rb_node, rb_intern("initialize"), argc, argv);
780
+
781
+ if(rb_block_given_p()) rb_yield(rb_node);
782
+
783
+ return rb_node;
784
+ }
785
+
786
+ /*
787
+ * call-seq:
788
+ * dump_html
789
+ *
790
+ * Returns the Node as html.
791
+ */
792
+ static VALUE dump_html(VALUE self)
793
+ {
794
+ xmlBufferPtr buf ;
795
+ xmlNodePtr node ;
796
+ Data_Get_Struct(self, xmlNode, node);
797
+
798
+ buf = xmlBufferCreate() ;
799
+ htmlNodeDump(buf, node->doc, node);
800
+ VALUE html = NOKOGIRI_STR_NEW2(buf->content, node->doc->encoding);
801
+ xmlBufferFree(buf);
802
+ return html ;
803
+ }
804
+
805
+ /*
806
+ * call-seq:
807
+ * compare(other)
808
+ *
809
+ * Compare this Node to +other+ with respect to their Document
810
+ */
811
+ static VALUE compare(VALUE self, VALUE _other)
812
+ {
813
+ xmlNodePtr node, other;
814
+ Data_Get_Struct(self, xmlNode, node);
815
+ Data_Get_Struct(_other, xmlNode, other);
816
+
817
+ return INT2NUM(xmlXPathCmpNodes(other, node));
818
+ }
819
+
820
+ VALUE Nokogiri_wrap_xml_node(VALUE klass, xmlNodePtr node)
821
+ {
822
+ assert(node);
823
+
824
+ VALUE document = Qnil ;
825
+ VALUE node_cache = Qnil ;
826
+ VALUE rb_node = Qnil ;
827
+
828
+ if(node->type == XML_DOCUMENT_NODE || node->type == XML_HTML_DOCUMENT_NODE)
829
+ return DOC_RUBY_OBJECT(node->doc);
830
+
831
+ if(NULL != node->_private) return (VALUE)node->_private;
832
+
833
+ if(RTEST(klass))
834
+ rb_node = Data_Wrap_Struct(klass, mark, debug_node_dealloc, node) ;
835
+
836
+ else switch(node->type)
837
+ {
838
+ case XML_ELEMENT_NODE:
839
+ klass = cNokogiriXmlElement;
840
+ break;
841
+ case XML_TEXT_NODE:
842
+ klass = cNokogiriXmlText;
843
+ break;
844
+ case XML_ATTRIBUTE_NODE:
845
+ klass = cNokogiriXmlAttr;
846
+ break;
847
+ case XML_ENTITY_REF_NODE:
848
+ klass = cNokogiriXmlEntityReference;
849
+ break;
850
+ case XML_COMMENT_NODE:
851
+ klass = cNokogiriXmlComment;
852
+ break;
853
+ case XML_DOCUMENT_FRAG_NODE:
854
+ klass = cNokogiriXmlDocumentFragment;
855
+ break;
856
+ case XML_PI_NODE:
857
+ klass = cNokogiriXmlProcessingInstruction;
858
+ break;
859
+ case XML_ENTITY_DECL:
860
+ klass = cNokogiriXmlEntityDeclaration;
861
+ break;
862
+ case XML_CDATA_SECTION_NODE:
863
+ klass = cNokogiriXmlCData;
864
+ break;
865
+ case XML_DTD_NODE:
866
+ klass = cNokogiriXmlDtd;
867
+ break;
868
+ default:
869
+ klass = cNokogiriXmlNode;
870
+ }
871
+
872
+ rb_node = Data_Wrap_Struct(klass, mark, debug_node_dealloc, node) ;
873
+
874
+ node->_private = (void *)rb_node;
875
+
876
+ if (DOC_RUBY_OBJECT_TEST(node->doc) && DOC_RUBY_OBJECT(node->doc)) {
877
+ // it's OK if the document isn't fully realized (as in XML::Reader).
878
+ // see http://github.com/tenderlove/nokogiri/issues/closed/#issue/95
879
+ document = DOC_RUBY_OBJECT(node->doc);
880
+ node_cache = DOC_NODE_CACHE(node->doc);
881
+ rb_ary_push(node_cache, rb_node);
882
+ rb_funcall(document, rb_intern("decorate"), 1, rb_node);
883
+ }
884
+
885
+ return rb_node ;
886
+ }
887
+
888
+
889
+ void Nokogiri_xml_node_properties(xmlNodePtr node, VALUE attr_list)
890
+ {
891
+ xmlAttrPtr prop;
892
+ prop = node->properties ;
893
+ while (prop != NULL) {
894
+ rb_ary_push(attr_list, Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop));
895
+ prop = prop->next ;
896
+ }
897
+ }
898
+
899
+ VALUE cNokogiriXmlNode ;
900
+ VALUE cNokogiriXmlElement ;
901
+ VALUE cNokogiriXmlEntityDeclaration ;
902
+
903
+ void init_xml_node()
904
+ {
905
+ VALUE nokogiri = rb_define_module("Nokogiri");
906
+ VALUE xml = rb_define_module_under(nokogiri, "XML");
907
+ VALUE klass = rb_define_class_under(xml, "Node", rb_cObject);
908
+
909
+ cNokogiriXmlNode = klass;
910
+
911
+ cNokogiriXmlElement = rb_define_class_under(xml, "Element", klass);
912
+ cNokogiriXmlEntityDeclaration =
913
+ rb_define_class_under(xml, "EntityDeclaration", klass);
914
+
915
+ rb_define_singleton_method(klass, "new", new, -1);
916
+
917
+ rb_define_method(klass, "add_namespace_definition", add_namespace_definition, 2);
918
+ rb_define_method(klass, "node_name", get_name, 0);
919
+ rb_define_method(klass, "document", document, 0);
920
+ rb_define_method(klass, "node_name=", set_name, 1);
921
+ rb_define_method(klass, "add_child", add_child, 1);
922
+ rb_define_method(klass, "parent", get_parent, 0);
923
+ rb_define_method(klass, "child", child, 0);
924
+ rb_define_method(klass, "children", children, 0);
925
+ rb_define_method(klass, "next_sibling", next_sibling, 0);
926
+ rb_define_method(klass, "previous_sibling", previous_sibling, 0);
927
+ rb_define_method(klass, "node_type", node_type, 0);
928
+ rb_define_method(klass, "content", get_content, 0);
929
+ rb_define_method(klass, "path", path, 0);
930
+ rb_define_method(klass, "key?", key_eh, 1);
931
+ rb_define_method(klass, "namespaced_key?", namespaced_key_eh, 2);
932
+ rb_define_method(klass, "blank?", blank_eh, 0);
933
+ rb_define_method(klass, "[]=", set, 2);
934
+ rb_define_method(klass, "attribute_nodes", attribute_nodes, 0);
935
+ rb_define_method(klass, "attribute", attr, 1);
936
+ rb_define_method(klass, "attribute_with_ns", attribute_with_ns, 2);
937
+ rb_define_method(klass, "namespace", namespace, 0);
938
+ rb_define_method(klass, "namespace_definitions", namespace_definitions, 0);
939
+ rb_define_method(klass, "add_previous_sibling", add_previous_sibling, 1);
940
+ rb_define_method(klass, "add_next_sibling", add_next_sibling, 1);
941
+ rb_define_method(klass, "encode_special_chars", encode_special_chars, 1);
942
+ rb_define_method(klass, "dup", duplicate_node, -1);
943
+ rb_define_method(klass, "unlink", unlink_node, 0);
944
+ rb_define_method(klass, "internal_subset", internal_subset, 0);
945
+ rb_define_method(klass, "pointer_id", pointer_id, 0);
946
+ rb_define_method(klass, "line", line, 0);
947
+
948
+ rb_define_private_method(klass, "dump_html", dump_html, 0);
949
+ rb_define_private_method(klass, "native_write_to", native_write_to, 4);
950
+ rb_define_private_method(klass, "replace_with_node", replace, 1);
951
+ rb_define_private_method(klass, "native_content=", set_content, 1);
952
+ rb_define_private_method(klass, "get", get, 1);
953
+ rb_define_private_method(klass, "set_namespace", set_namespace, 1);
954
+ rb_define_private_method(klass, "compare", compare, 1);
955
+ }