video_chat_get 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/file_operats/file_operat_chatdata.rb +11 -9
  4. data/lib/requests/request.rb +7 -5
  5. data/lib/site_list/mildom_analyze.rb +16 -18
  6. data/lib/site_list/openrec_analyze.rb +19 -18
  7. data/lib/site_list/twitcasting_analyze.rb +33 -25
  8. data/lib/site_list/whowatch_analyze.rb +5 -7
  9. data/lib/site_list/youtubelive_analyze.rb +26 -35
  10. data/lib/video_chat_get/version.rb +1 -1
  11. data/vendor/bundle/ruby/2.5.0/bin/htmldiff +1 -1
  12. data/vendor/bundle/ruby/2.5.0/bin/ldiff +1 -1
  13. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem_make.out +1 -1
  14. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/json/ext/generator.bundle +0 -0
  15. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/json/ext/parser.bundle +0 -0
  16. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem_make.out +2 -2
  17. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/mkmf.log +2 -2
  18. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/nokogiri/nokogiri.bundle +0 -0
  19. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/Makefile +2 -2
  20. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.bundle +0 -0
  21. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri.bundle +0 -0
  22. data/vendor/bundle/ruby/2.5.0/specifications/diff-lcs-1.3.gemspec +2 -2
  23. data/vendor/bundle/ruby/2.5.0/specifications/httpclient-2.8.3.gemspec +2 -2
  24. data/vendor/bundle/ruby/2.5.0/specifications/mini_portile2-2.4.0.gemspec +2 -2
  25. data/vendor/bundle/ruby/2.5.0/specifications/rake-10.5.0.gemspec +2 -2
  26. data/vendor/bundle/ruby/2.5.0/specifications/rspec-3.9.0.gemspec +2 -2
  27. data/vendor/bundle/ruby/2.5.0/specifications/rspec-core-3.9.2.gemspec +2 -2
  28. data/vendor/bundle/ruby/2.5.0/specifications/rspec-expectations-3.9.2.gemspec +2 -2
  29. data/vendor/bundle/ruby/2.5.0/specifications/rspec-mocks-3.9.1.gemspec +2 -2
  30. data/vendor/bundle/ruby/2.5.0/specifications/rspec-support-3.9.3.gemspec +2 -2
  31. metadata +2 -492
  32. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/json-2.3.0/gem.build_complete +0 -0
  33. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/json-2.3.0/gem_make.out +0 -13
  34. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/json-2.3.0/json/ext/generator.bundle +0 -0
  35. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/json-2.3.0/json/ext/parser.bundle +0 -0
  36. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/json-2.3.0/mkmf.log +0 -60
  37. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/nokogiri-1.10.9/gem.build_complete +0 -0
  38. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/nokogiri-1.10.9/gem_make.out +0 -155
  39. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/nokogiri-1.10.9/mkmf.log +0 -542
  40. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-16/2.5.0/nokogiri-1.10.9/nokogiri/nokogiri.bundle +0 -0
  41. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem 2.build_complete b/data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem → 2.build_complete +0 -0
  42. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem_make 2.out +0 -13
  43. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/json/ext/generator 2.bundle +0 -0
  44. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/json/ext/parser 2.bundle +0 -0
  45. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/mkmf 2.log +0 -60
  46. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem 2.build_complete b/data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem → 2.build_complete +0 -0
  47. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem_make 2.out +0 -155
  48. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/mkmf 2.log +0 -542
  49. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/nokogiri/nokogiri 2.bundle +0 -0
  50. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/diagrams/.keep 2 b/data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/diagrams/.keep → 2 +0 -0
  51. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/Makefile 2 +0 -199
  52. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/fbuffer/fbuffer 2.h +0 -187
  53. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/.sitearchdir.-.json.-.ext 2.time b/data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/.sitearchdir.-.json.-.ext → 2.time +0 -0
  54. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/Makefile 2 +0 -265
  55. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/depend 2 +0 -1
  56. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/extconf 2.rb +0 -4
  57. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/generator 2.c +0 -1499
  58. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/generator 2.h +0 -171
  59. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/.sitearchdir.-.json.-.ext 2.time b/data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/.sitearchdir.-.json.-.ext → 2.time +0 -0
  60. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/Makefile 2 +0 -265
  61. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/depend 2 +0 -1
  62. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/extconf 2.rb +0 -6
  63. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.c +0 -2136
  64. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.h +0 -91
  65. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.rl +0 -896
  66. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/extconf 2.rb +0 -2
  67. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/install 2.rb +0 -23
  68. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/ByteListTranscoder 2.java +0 -166
  69. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Generator 2.java +0 -466
  70. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorMethods 2.java +0 -231
  71. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorService 2.java +0 -42
  72. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorState 2.java +0 -490
  73. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/OptionsReader 2.java +0 -113
  74. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Parser 2.java +0 -2362
  75. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Parser 2.rl +0 -893
  76. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/ParserService 2.java +0 -34
  77. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/RuntimeInfo 2.java +0 -116
  78. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/StringDecoder 2.java +0 -166
  79. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/StringEncoder 2.java +0 -111
  80. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Utils 2.java +0 -88
  81. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json 2.gemspec +0 -0
  82. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json-java 2.gemspec +0 -37
  83. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json_pure 2.gemspec +0 -38
  84. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json 2.rb +0 -63
  85. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/bigdecimal 2.rb +0 -29
  86. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/complex 2.rb +0 -29
  87. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/core 2.rb +0 -12
  88. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/date 2.rb +0 -34
  89. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/date_time 2.rb +0 -50
  90. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/exception 2.rb +0 -31
  91. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/ostruct 2.rb +0 -31
  92. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/range 2.rb +0 -29
  93. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/rational 2.rb +0 -28
  94. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/regexp 2.rb +0 -30
  95. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/set 2.rb +0 -29
  96. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/struct 2.rb +0 -30
  97. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/symbol 2.rb +0 -25
  98. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/time 2.rb +0 -38
  99. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/common 2.rb +0 -456
  100. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/ext 2.rb +0 -15
  101. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/ext/.keep 2 b/data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/ext/.keep → 2 +0 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/generic_object 2.rb +0 -71
  103. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure 2.rb +0 -15
  104. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure/generator 2.rb +0 -459
  105. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure/parser 2.rb +0 -319
  106. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/version 2.rb +0 -9
  107. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/references/rfc7159 2.txt +0 -899
  108. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail10 2.json +0 -1
  109. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail11 2.json +0 -1
  110. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail12 2.json +0 -1
  111. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail13 2.json +0 -1
  112. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail14 2.json +0 -1
  113. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail18 2.json +0 -1
  114. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail19 2.json +0 -1
  115. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail2 2.json +0 -1
  116. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail20 2.json +0 -1
  117. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail21 2.json +0 -1
  118. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail22 2.json +0 -1
  119. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail23 2.json +0 -1
  120. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail24 2.json +0 -1
  121. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail25 2.json +0 -1
  122. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail27 2.json +0 -2
  123. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail28 2.json +0 -2
  124. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail3 2.json +0 -1
  125. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail4 2.json +0 -1
  126. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail5 2.json +0 -1
  127. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail6 2.json +0 -1
  128. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail7 2.json +0 -1
  129. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail8 2.json +0 -1
  130. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail9 2.json +0 -1
  131. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/obsolete_fail1 2.json +0 -1
  132. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass1 2.json +0 -56
  133. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass15 2.json +0 -1
  134. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass16 2.json +0 -1
  135. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass17 2.json +0 -1
  136. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass2 2.json +0 -1
  137. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass26 2.json +0 -1
  138. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass3 2.json +0 -6
  139. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_addition_test 2.rb +0 -203
  140. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_common_interface_test 2.rb +0 -126
  141. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_encoding_test 2.rb +0 -107
  142. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_ext_parser_test 2.rb +0 -15
  143. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_fixtures_test 2.rb +0 -32
  144. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_generator_test 2.rb +0 -421
  145. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_generic_object_test 2.rb +0 -82
  146. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_parser_test 2.rb +0 -472
  147. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_string_matching_test 2.rb +0 -38
  148. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/test_helper 2.rb +0 -17
  149. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/diff 2.sh +0 -18
  150. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/fuzz 2.rb +0 -131
  151. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/server 2.rb +0 -62
  152. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/LICENSE 2.md +0 -9
  153. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/LICENSE-DEPENDENCIES 2.md +0 -1614
  154. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/README 2.md +0 -198
  155. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/bin/nokogiri 2 +0 -118
  156. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/dependencies 2.yml +0 -74
  157. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/.sitearchdir.-.nokogiri 2.time b/data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/.sitearchdir.-.nokogiri → 2.time +0 -0
  158. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/Makefile 2 +0 -626
  159. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/depend 2 +0 -358
  160. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/extconf 2.rb +0 -686
  161. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.c +0 -170
  162. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.h +0 -10
  163. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.o +0 -0
  164. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.c +0 -279
  165. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.h +0 -10
  166. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.o +0 -0
  167. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.c +0 -32
  168. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.h +0 -8
  169. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.o +0 -0
  170. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.c +0 -116
  171. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.h +0 -11
  172. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.o +0 -0
  173. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.c +0 -87
  174. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.h +0 -9
  175. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.o +0 -0
  176. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.bundle +0 -0
  177. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.c +0 -141
  178. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.h +0 -121
  179. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.o +0 -0
  180. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.c +0 -103
  181. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.h +0 -9
  182. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.o +0 -0
  183. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.c +0 -70
  184. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.h +0 -9
  185. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.o +0 -0
  186. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.c +0 -62
  187. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.h +0 -9
  188. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.o +0 -0
  189. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.c +0 -69
  190. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.h +0 -9
  191. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.o +0 -0
  192. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.c +0 -608
  193. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.h +0 -23
  194. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.o +0 -0
  195. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.c +0 -48
  196. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.h +0 -10
  197. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.o +0 -0
  198. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.c +0 -202
  199. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.h +0 -10
  200. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.o +0 -0
  201. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.c +0 -123
  202. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.h +0 -10
  203. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.o +0 -0
  204. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.c +0 -69
  205. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.h +0 -9
  206. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.o +0 -0
  207. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 3.h +0 -9
  208. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.c +0 -79
  209. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.h +0 -8
  210. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.o +0 -0
  211. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.c +0 -79
  212. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.h +0 -8
  213. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.o +0 -0
  214. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.c +0 -110
  215. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.h +0 -10
  216. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.o +0 -0
  217. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 3.c +0 -110
  218. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 3.h +0 -10
  219. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.c +0 -52
  220. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.h +0 -9
  221. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.o +0 -0
  222. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 3.c +0 -52
  223. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 3.h +0 -9
  224. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.c +0 -61
  225. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.h +0 -11
  226. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.o +0 -0
  227. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 3.c +0 -61
  228. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 3.h +0 -11
  229. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.c +0 -112
  230. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.h +0 -12
  231. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.o +0 -0
  232. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.c +0 -112
  233. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.h +0 -12
  234. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.o +0 -0
  235. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.c +0 -111
  236. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.h +0 -14
  237. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.o +0 -0
  238. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.c +0 -111
  239. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.h +0 -14
  240. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.o +0 -0
  241. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 2.c +0 -1753
  242. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 2.h +0 -13
  243. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 2.o +0 -0
  244. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 3.h +0 -13
  245. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.c +0 -486
  246. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.h +0 -12
  247. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.o +0 -0
  248. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 3.c +0 -486
  249. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 3.h +0 -12
  250. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.c +0 -56
  251. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.h +0 -9
  252. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.o +0 -0
  253. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 3.c +0 -56
  254. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 3.h +0 -9
  255. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.c +0 -668
  256. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.h +0 -10
  257. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.o +0 -0
  258. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 3.h +0 -10
  259. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 3.o +0 -0
  260. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.c +0 -161
  261. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.h +0 -9
  262. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.o +0 -0
  263. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 3.c +0 -161
  264. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 3.h +0 -9
  265. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.c +0 -310
  266. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.h +0 -39
  267. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.o +0 -0
  268. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 3.c +0 -310
  269. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 3.h +0 -39
  270. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.c +0 -262
  271. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.h +0 -10
  272. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.o +0 -0
  273. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.c +0 -262
  274. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.h +0 -10
  275. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.o +0 -0
  276. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.c +0 -159
  277. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.h +0 -9
  278. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.o +0 -0
  279. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 3.c +0 -159
  280. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 3.h +0 -9
  281. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.c +0 -234
  282. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.h +0 -9
  283. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.o +0 -0
  284. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 3.c +0 -234
  285. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 3.h +0 -9
  286. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.c +0 -64
  287. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.h +0 -13
  288. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.o +0 -0
  289. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.c +0 -64
  290. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.h +0 -13
  291. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.o +0 -0
  292. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.c +0 -52
  293. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.h +0 -9
  294. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.o +0 -0
  295. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 3.c +0 -52
  296. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 3.h +0 -9
  297. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.c +0 -298
  298. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.h +0 -10
  299. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.o +0 -0
  300. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 3.h +0 -10
  301. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 3.o +0 -0
  302. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.c +0 -270
  303. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.h +0 -14
  304. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.o +0 -0
  305. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.c +0 -270
  306. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.h +0 -14
  307. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.o +0 -0
  308. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri 2.rb +0 -144
  309. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri 3.rb +0 -144
  310. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css 2.rb +0 -27
  311. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css 3.rb +0 -27
  312. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/node 2.rb +0 -52
  313. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/node 3.rb +0 -52
  314. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 2.rb +0 -750
  315. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 2.y +0 -272
  316. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 3.rb +0 -750
  317. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 3.y +0 -272
  318. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser_extras 2.rb +0 -91
  319. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser_extras 3.rb +0 -91
  320. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/syntax_error 2.rb +0 -7
  321. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/syntax_error 3.rb +0 -7
  322. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 2.rb +0 -153
  323. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 2.rex +0 -55
  324. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 3.rb +0 -153
  325. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 3.rex +0 -55
  326. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/xpath_visitor 2.rb +0 -230
  327. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/xpath_visitor 3.rb +0 -230
  328. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/decorators/slop 2.rb +0 -42
  329. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/decorators/slop 3.rb +0 -42
  330. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html 2.rb +0 -37
  331. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html 3.rb +0 -37
  332. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/builder 2.rb +0 -35
  333. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/builder 3.rb +0 -35
  334. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document 2.rb +0 -335
  335. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document 3.rb +0 -335
  336. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document_fragment 2.rb +0 -49
  337. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document_fragment 3.rb +0 -49
  338. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description 2.rb +0 -23
  339. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description 3.rb +0 -23
  340. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description_defaults 2.rb +0 -671
  341. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description_defaults 3.rb +0 -671
  342. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/entity_lookup 2.rb +0 -13
  343. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/entity_lookup 3.rb +0 -13
  344. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser 2.rb +0 -62
  345. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser 3.rb +0 -62
  346. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser_context 2.rb +0 -16
  347. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser_context 3.rb +0 -16
  348. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/push_parser 2.rb +0 -36
  349. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/push_parser 3.rb +0 -36
  350. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri 2.bundle +0 -0
  351. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri 3.bundle +0 -0
  352. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/syntax_error 2.rb +0 -4
  353. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/syntax_error 3.rb +0 -4
  354. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/version 2.rb +0 -109
  355. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/version 3.rb +0 -109
  356. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml 2.rb +0 -75
  357. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml 3.rb +0 -75
  358. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attr 2.rb +0 -14
  359. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attr 3.rb +0 -14
  360. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attribute_decl 2.rb +0 -18
  361. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attribute_decl 3.rb +0 -18
  362. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/builder 2.rb +0 -446
  363. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/builder 3.rb +0 -446
  364. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/cdata 2.rb +0 -11
  365. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/cdata 3.rb +0 -11
  366. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/character_data 2.rb +0 -7
  367. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/character_data 3.rb +0 -7
  368. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document 2.rb +0 -285
  369. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document 3.rb +0 -285
  370. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document_fragment 2.rb +0 -160
  371. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document_fragment 3.rb +0 -160
  372. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/dtd 2.rb +0 -32
  373. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/dtd 3.rb +0 -32
  374. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_content 2.rb +0 -36
  375. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_content 3.rb +0 -36
  376. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_decl 2.rb +0 -13
  377. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_decl 3.rb +0 -13
  378. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_decl 2.rb +0 -19
  379. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_decl 3.rb +0 -19
  380. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_reference 2.rb +0 -18
  381. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_reference 3.rb +0 -18
  382. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/namespace 2.rb +0 -13
  383. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/namespace 3.rb +0 -13
  384. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node 2.rb +0 -902
  385. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node 3.rb +0 -902
  386. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node/save_options 2.rb +0 -61
  387. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node/save_options 3.rb +0 -61
  388. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node_set 2.rb +0 -371
  389. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node_set 3.rb +0 -371
  390. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/notation 2.rb +0 -6
  391. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/notation 3.rb +0 -6
  392. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/parse_options 2.rb +0 -120
  393. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/parse_options 3.rb +0 -120
  394. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp 2.rb +0 -2
  395. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp 3.rb +0 -2
  396. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/character_data 2.rb +0 -18
  397. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/character_data 3.rb +0 -18
  398. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/node 2.rb +0 -56
  399. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/node 3.rb +0 -56
  400. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/processing_instruction 2.rb +0 -8
  401. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/processing_instruction 3.rb +0 -8
  402. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/reader 2.rb +0 -112
  403. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/reader 3.rb +0 -112
  404. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/relax_ng 2.rb +0 -32
  405. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/relax_ng 3.rb +0 -32
  406. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax 2.rb +0 -4
  407. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax 3.rb +0 -4
  408. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/document 2.rb +0 -171
  409. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/document 3.rb +0 -171
  410. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser 2.rb +0 -122
  411. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser 3.rb +0 -122
  412. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser_context 2.rb +0 -16
  413. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser_context 3.rb +0 -16
  414. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/push_parser 2.rb +0 -60
  415. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/push_parser 3.rb +0 -60
  416. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/schema 2.rb +0 -63
  417. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/schema 3.rb +0 -63
  418. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/searchable 2.rb +0 -230
  419. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/searchable 3.rb +0 -230
  420. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/syntax_error 2.rb +0 -70
  421. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/syntax_error 3.rb +0 -70
  422. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/text 2.rb +0 -9
  423. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/text 3.rb +0 -9
  424. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath 2.rb +0 -10
  425. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath 3.rb +0 -10
  426. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath/syntax_error 2.rb +0 -11
  427. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath/syntax_error 3.rb +0 -11
  428. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath_context 2.rb +0 -16
  429. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath_context 3.rb +0 -16
  430. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt 2.rb +0 -56
  431. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt 3.rb +0 -56
  432. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt/stylesheet 2.rb +0 -25
  433. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt/stylesheet 3.rb +0 -25
  434. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/xsd/xmlparser/nokogiri 2.rb +0 -102
  435. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/xsd/xmlparser/nokogiri 3.rb +0 -102
  436. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes 2.patch +0 -78
  437. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes 3.patch +0 -78
  438. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0002-Remove-script-macro-support 2.patch +0 -40
  439. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0002-Remove-script-macro-support 3.patch +0 -40
  440. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi 2.patch +0 -44
  441. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi 3.patch +0 -44
  442. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0004-libxml2.la-is-in-top_builddir 2.patch +0 -25
  443. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0004-libxml2.la-is-in-top_builddir 3.patch +0 -25
  444. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities 2.patch +0 -32
  445. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities 3.patch +0 -32
@@ -1,12 +0,0 @@
1
- #ifndef HAVE_XMLFIRSTELEMENTCHILD
2
-
3
- #ifndef XML_LIBXML2_HACKS
4
- #define XML_LIBXML2_HACKS
5
-
6
- xmlNodePtr xmlFirstElementChild(xmlNodePtr parent);
7
- xmlNodePtr xmlNextElementSibling(xmlNodePtr node);
8
- xmlNodePtr xmlLastElementChild(xmlNodePtr parent);
9
-
10
- #endif
11
-
12
- #endif
@@ -1,111 +0,0 @@
1
- #include <xml_namespace.h>
2
-
3
- VALUE cNokogiriXmlNamespace ;
4
-
5
- static void dealloc_namespace(xmlNsPtr ns)
6
- {
7
- /*
8
- *
9
- * this deallocator is only used for namespace nodes that are part of an xpath
10
- * node set.
11
- *
12
- * see Nokogiri_wrap_xml_namespace() for more details.
13
- *
14
- */
15
- NOKOGIRI_DEBUG_START(ns) ;
16
- if (ns->href) {
17
- xmlFree((xmlChar *)(uintptr_t)ns->href);
18
- }
19
- if (ns->prefix) {
20
- xmlFree((xmlChar *)(uintptr_t)ns->prefix);
21
- }
22
- xmlFree(ns);
23
- NOKOGIRI_DEBUG_END(ns) ;
24
- }
25
-
26
-
27
- /*
28
- * call-seq:
29
- * prefix
30
- *
31
- * Get the prefix for this namespace. Returns +nil+ if there is no prefix.
32
- */
33
- static VALUE prefix(VALUE self)
34
- {
35
- xmlNsPtr ns;
36
-
37
- Data_Get_Struct(self, xmlNs, ns);
38
- if(!ns->prefix) return Qnil;
39
-
40
- return NOKOGIRI_STR_NEW2(ns->prefix);
41
- }
42
-
43
- /*
44
- * call-seq:
45
- * href
46
- *
47
- * Get the href for this namespace
48
- */
49
- static VALUE href(VALUE self)
50
- {
51
- xmlNsPtr ns;
52
-
53
- Data_Get_Struct(self, xmlNs, ns);
54
- if(!ns->href) return Qnil;
55
-
56
- return NOKOGIRI_STR_NEW2(ns->href);
57
- }
58
-
59
- static int part_of_an_xpath_node_set_eh(xmlNsPtr node)
60
- {
61
- return (node->next && ! NOKOGIRI_NAMESPACE_EH(node->next));
62
- }
63
-
64
- VALUE Nokogiri_wrap_xml_namespace(xmlDocPtr doc, xmlNsPtr node)
65
- {
66
- VALUE ns = 0, document, node_cache;
67
-
68
- assert(doc->type == XML_DOCUMENT_NODE || doc->type == XML_HTML_DOCUMENT_NODE);
69
-
70
- if (node->_private) return (VALUE)node->_private;
71
-
72
- if (doc->type == XML_DOCUMENT_FRAG_NODE) doc = doc->doc;
73
-
74
- if (DOC_RUBY_OBJECT_TEST(doc)) {
75
- document = DOC_RUBY_OBJECT(doc);
76
-
77
- if (part_of_an_xpath_node_set_eh(node)) {
78
- /*
79
- * this is a duplicate returned as part of an xpath query node set, and so
80
- * we need to make sure we manage this memory.
81
- *
82
- * see comments in xml_node_set.c for more details.
83
- */
84
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, dealloc_namespace, node);
85
- } else {
86
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, 0, node);
87
- node_cache = rb_iv_get(document, "@node_cache");
88
- rb_ary_push(node_cache, ns);
89
- }
90
-
91
- rb_iv_set(ns, "@document", document);
92
- } else {
93
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, 0, node);
94
- }
95
-
96
- node->_private = (void *)ns;
97
-
98
- return ns;
99
- }
100
-
101
- void init_xml_namespace()
102
- {
103
- VALUE nokogiri = rb_define_module("Nokogiri");
104
- VALUE xml = rb_define_module_under(nokogiri, "XML");
105
- VALUE klass = rb_define_class_under(xml, "Namespace", rb_cObject);
106
-
107
- cNokogiriXmlNamespace = klass;
108
-
109
- rb_define_method(klass, "prefix", prefix, 0);
110
- rb_define_method(klass, "href", href, 0);
111
- }
@@ -1,14 +0,0 @@
1
- #ifndef NOKOGIRI_XML_NAMESPACE
2
- #define NOKOGIRI_XML_NAMESPACE
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_namespace();
7
-
8
- extern VALUE cNokogiriXmlNamespace ;
9
-
10
- VALUE Nokogiri_wrap_xml_namespace(xmlDocPtr doc, xmlNsPtr node);
11
-
12
- #define NOKOGIRI_NAMESPACE_EH(node) ((node)->type == XML_NAMESPACE_DECL)
13
-
14
- #endif
@@ -1,111 +0,0 @@
1
- #include <xml_namespace.h>
2
-
3
- VALUE cNokogiriXmlNamespace ;
4
-
5
- static void dealloc_namespace(xmlNsPtr ns)
6
- {
7
- /*
8
- *
9
- * this deallocator is only used for namespace nodes that are part of an xpath
10
- * node set.
11
- *
12
- * see Nokogiri_wrap_xml_namespace() for more details.
13
- *
14
- */
15
- NOKOGIRI_DEBUG_START(ns) ;
16
- if (ns->href) {
17
- xmlFree((xmlChar *)(uintptr_t)ns->href);
18
- }
19
- if (ns->prefix) {
20
- xmlFree((xmlChar *)(uintptr_t)ns->prefix);
21
- }
22
- xmlFree(ns);
23
- NOKOGIRI_DEBUG_END(ns) ;
24
- }
25
-
26
-
27
- /*
28
- * call-seq:
29
- * prefix
30
- *
31
- * Get the prefix for this namespace. Returns +nil+ if there is no prefix.
32
- */
33
- static VALUE prefix(VALUE self)
34
- {
35
- xmlNsPtr ns;
36
-
37
- Data_Get_Struct(self, xmlNs, ns);
38
- if(!ns->prefix) return Qnil;
39
-
40
- return NOKOGIRI_STR_NEW2(ns->prefix);
41
- }
42
-
43
- /*
44
- * call-seq:
45
- * href
46
- *
47
- * Get the href for this namespace
48
- */
49
- static VALUE href(VALUE self)
50
- {
51
- xmlNsPtr ns;
52
-
53
- Data_Get_Struct(self, xmlNs, ns);
54
- if(!ns->href) return Qnil;
55
-
56
- return NOKOGIRI_STR_NEW2(ns->href);
57
- }
58
-
59
- static int part_of_an_xpath_node_set_eh(xmlNsPtr node)
60
- {
61
- return (node->next && ! NOKOGIRI_NAMESPACE_EH(node->next));
62
- }
63
-
64
- VALUE Nokogiri_wrap_xml_namespace(xmlDocPtr doc, xmlNsPtr node)
65
- {
66
- VALUE ns = 0, document, node_cache;
67
-
68
- assert(doc->type == XML_DOCUMENT_NODE || doc->type == XML_HTML_DOCUMENT_NODE);
69
-
70
- if (node->_private) return (VALUE)node->_private;
71
-
72
- if (doc->type == XML_DOCUMENT_FRAG_NODE) doc = doc->doc;
73
-
74
- if (DOC_RUBY_OBJECT_TEST(doc)) {
75
- document = DOC_RUBY_OBJECT(doc);
76
-
77
- if (part_of_an_xpath_node_set_eh(node)) {
78
- /*
79
- * this is a duplicate returned as part of an xpath query node set, and so
80
- * we need to make sure we manage this memory.
81
- *
82
- * see comments in xml_node_set.c for more details.
83
- */
84
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, dealloc_namespace, node);
85
- } else {
86
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, 0, node);
87
- node_cache = rb_iv_get(document, "@node_cache");
88
- rb_ary_push(node_cache, ns);
89
- }
90
-
91
- rb_iv_set(ns, "@document", document);
92
- } else {
93
- ns = Data_Wrap_Struct(cNokogiriXmlNamespace, 0, 0, node);
94
- }
95
-
96
- node->_private = (void *)ns;
97
-
98
- return ns;
99
- }
100
-
101
- void init_xml_namespace()
102
- {
103
- VALUE nokogiri = rb_define_module("Nokogiri");
104
- VALUE xml = rb_define_module_under(nokogiri, "XML");
105
- VALUE klass = rb_define_class_under(xml, "Namespace", rb_cObject);
106
-
107
- cNokogiriXmlNamespace = klass;
108
-
109
- rb_define_method(klass, "prefix", prefix, 0);
110
- rb_define_method(klass, "href", href, 0);
111
- }
@@ -1,14 +0,0 @@
1
- #ifndef NOKOGIRI_XML_NAMESPACE
2
- #define NOKOGIRI_XML_NAMESPACE
3
-
4
- #include <nokogiri.h>
5
-
6
- void init_xml_namespace();
7
-
8
- extern VALUE cNokogiriXmlNamespace ;
9
-
10
- VALUE Nokogiri_wrap_xml_namespace(xmlDocPtr doc, xmlNsPtr node);
11
-
12
- #define NOKOGIRI_NAMESPACE_EH(node) ((node)->type == XML_NAMESPACE_DECL)
13
-
14
- #endif
@@ -1,1753 +0,0 @@
1
- #include <xml_node.h>
2
-
3
- static ID decorate, decorate_bang;
4
-
5
- #ifdef DEBUG
6
- static void debug_node_dealloc(xmlNodePtr x)
7
- {
8
- NOKOGIRI_DEBUG_START(x)
9
- NOKOGIRI_DEBUG_END(x)
10
- }
11
- #else
12
- # define debug_node_dealloc 0
13
- #endif
14
-
15
- static void mark(xmlNodePtr node)
16
- {
17
- xmlDocPtr doc = node->doc;
18
- if(doc->type == XML_DOCUMENT_NODE || doc->type == XML_HTML_DOCUMENT_NODE) {
19
- if(DOC_RUBY_OBJECT_TEST(doc)) {
20
- rb_gc_mark(DOC_RUBY_OBJECT(doc));
21
- }
22
- } else if(node->doc->_private) {
23
- rb_gc_mark((VALUE)doc->_private);
24
- }
25
- }
26
-
27
- /* :nodoc: */
28
- typedef xmlNodePtr (*pivot_reparentee_func)(xmlNodePtr, xmlNodePtr);
29
-
30
- /* :nodoc: */
31
- static void relink_namespace(xmlNodePtr reparented)
32
- {
33
- xmlNodePtr child;
34
-
35
- if (reparented->type != XML_ATTRIBUTE_NODE &&
36
- reparented->type != XML_ELEMENT_NODE) { return; }
37
-
38
- if (reparented->ns == NULL || reparented->ns->prefix == NULL) {
39
- xmlNsPtr ns = NULL;
40
- xmlChar *name = NULL, *prefix = NULL;
41
-
42
- name = xmlSplitQName2(reparented->name, &prefix);
43
-
44
- if (reparented->type == XML_ATTRIBUTE_NODE) {
45
- if (prefix == NULL || strcmp((char*)prefix, XMLNS_PREFIX) == 0) {
46
- xmlFree(name);
47
- xmlFree(prefix);
48
- return;
49
- }
50
- }
51
-
52
- ns = xmlSearchNs(reparented->doc, reparented, prefix);
53
-
54
- if (ns != NULL) {
55
- xmlNodeSetName(reparented, name);
56
- xmlSetNs(reparented, ns);
57
- }
58
-
59
- xmlFree(name);
60
- xmlFree(prefix);
61
- }
62
-
63
- /* Avoid segv when relinking against unlinked nodes. */
64
- if (reparented->type != XML_ELEMENT_NODE || !reparented->parent) { return; }
65
-
66
- /* Make sure that our reparented node has the correct namespaces */
67
- if (!reparented->ns && reparented->doc != (xmlDocPtr)reparented->parent) {
68
- xmlSetNs(reparented, reparented->parent->ns);
69
- }
70
-
71
- /* Search our parents for an existing definition */
72
- if (reparented->nsDef) {
73
- xmlNsPtr curr = reparented->nsDef;
74
- xmlNsPtr prev = NULL;
75
-
76
- while (curr) {
77
- xmlNsPtr ns = xmlSearchNsByHref(
78
- reparented->doc,
79
- reparented->parent,
80
- curr->href
81
- );
82
- /* If we find the namespace is already declared, remove it from this
83
- * definition list. */
84
- if (ns && ns != curr && xmlStrEqual(ns->prefix, curr->prefix)) {
85
- if (prev) {
86
- prev->next = curr->next;
87
- } else {
88
- reparented->nsDef = curr->next;
89
- }
90
- nokogiri_root_nsdef(curr, reparented->doc);
91
- } else {
92
- prev = curr;
93
- }
94
- curr = curr->next;
95
- }
96
- }
97
-
98
- /*
99
- * Search our parents for an existing definition of current namespace,
100
- * because the definition it's pointing to may have just been removed nsDef.
101
- *
102
- * And although that would technically probably be OK, I'd feel better if we
103
- * referred to a namespace that's still present in a node's nsDef somewhere
104
- * in the doc.
105
- */
106
- if (reparented->ns) {
107
- xmlNsPtr ns = xmlSearchNs(reparented->doc, reparented, reparented->ns->prefix);
108
- if (ns
109
- && ns != reparented->ns
110
- && xmlStrEqual(ns->prefix, reparented->ns->prefix)
111
- && xmlStrEqual(ns->href, reparented->ns->href)
112
- ) {
113
- xmlSetNs(reparented, ns);
114
- }
115
- }
116
-
117
- /* Only walk all children if there actually is a namespace we need to */
118
- /* reparent. */
119
- if (NULL == reparented->ns) { return; }
120
-
121
- /* When a node gets reparented, walk it's children to make sure that */
122
- /* their namespaces are reparented as well. */
123
- child = reparented->children;
124
- while (NULL != child) {
125
- relink_namespace(child);
126
- child = child->next;
127
- }
128
-
129
- if (reparented->type == XML_ELEMENT_NODE) {
130
- child = (xmlNodePtr)((xmlElementPtr)reparented)->attributes;
131
- while(NULL != child) {
132
- relink_namespace(child);
133
- child = child->next;
134
- }
135
- }
136
- }
137
-
138
- /* :nodoc: */
139
- static xmlNodePtr xmlReplaceNodeWrapper(xmlNodePtr pivot, xmlNodePtr new_node)
140
- {
141
- xmlNodePtr retval ;
142
-
143
- retval = xmlReplaceNode(pivot, new_node) ;
144
-
145
- if (retval == pivot) {
146
- retval = new_node ; /* return semantics for reparent_node_with */
147
- }
148
-
149
- /* work around libxml2 issue: https://bugzilla.gnome.org/show_bug.cgi?id=615612 */
150
- if (retval && retval->type == XML_TEXT_NODE) {
151
- if (retval->prev && retval->prev->type == XML_TEXT_NODE) {
152
- retval = xmlTextMerge(retval->prev, retval);
153
- }
154
- if (retval->next && retval->next->type == XML_TEXT_NODE) {
155
- retval = xmlTextMerge(retval, retval->next);
156
- }
157
- }
158
-
159
- return retval ;
160
- }
161
-
162
- /* :nodoc: */
163
- static VALUE reparent_node_with(VALUE pivot_obj, VALUE reparentee_obj, pivot_reparentee_func prf)
164
- {
165
- VALUE reparented_obj ;
166
- xmlNodePtr reparentee, pivot, reparented, next_text, new_next_text, parent ;
167
- int original_ns_prefix_is_default = 0 ;
168
-
169
- if(!rb_obj_is_kind_of(reparentee_obj, cNokogiriXmlNode)) {
170
- rb_raise(rb_eArgError, "node must be a Nokogiri::XML::Node");
171
- }
172
- if(rb_obj_is_kind_of(reparentee_obj, cNokogiriXmlDocument)) {
173
- rb_raise(rb_eArgError, "node must be a Nokogiri::XML::Node");
174
- }
175
-
176
- Data_Get_Struct(reparentee_obj, xmlNode, reparentee);
177
- Data_Get_Struct(pivot_obj, xmlNode, pivot);
178
-
179
- /*
180
- * Check if nodes given are appropriate to have a parent-child
181
- * relationship, based on the DOM specification.
182
- *
183
- * cf. http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-1590626202
184
- */
185
- if (prf == xmlAddChild) {
186
- parent = pivot;
187
- } else {
188
- parent = pivot->parent;
189
- }
190
-
191
- if (parent) {
192
- switch (parent->type) {
193
- case XML_DOCUMENT_NODE:
194
- case XML_HTML_DOCUMENT_NODE:
195
- switch (reparentee->type) {
196
- case XML_ELEMENT_NODE:
197
- case XML_PI_NODE:
198
- case XML_COMMENT_NODE:
199
- case XML_DOCUMENT_TYPE_NODE:
200
- /*
201
- * The DOM specification says no to adding text-like nodes
202
- * directly to a document, but we allow it for compatibility.
203
- */
204
- case XML_TEXT_NODE:
205
- case XML_CDATA_SECTION_NODE:
206
- case XML_ENTITY_REF_NODE:
207
- goto ok;
208
- default:
209
- break;
210
- }
211
- break;
212
- case XML_DOCUMENT_FRAG_NODE:
213
- case XML_ENTITY_REF_NODE:
214
- case XML_ELEMENT_NODE:
215
- switch (reparentee->type) {
216
- case XML_ELEMENT_NODE:
217
- case XML_PI_NODE:
218
- case XML_COMMENT_NODE:
219
- case XML_TEXT_NODE:
220
- case XML_CDATA_SECTION_NODE:
221
- case XML_ENTITY_REF_NODE:
222
- goto ok;
223
- default:
224
- break;
225
- }
226
- break;
227
- case XML_ATTRIBUTE_NODE:
228
- switch (reparentee->type) {
229
- case XML_TEXT_NODE:
230
- case XML_ENTITY_REF_NODE:
231
- goto ok;
232
- default:
233
- break;
234
- }
235
- break;
236
- case XML_TEXT_NODE:
237
- /*
238
- * xmlAddChild() breaks the DOM specification in that it allows
239
- * adding a text node to another, in which case text nodes are
240
- * coalesced, but since our JRuby version does not support such
241
- * operation, we should inhibit it.
242
- */
243
- break;
244
- default:
245
- break;
246
- }
247
-
248
- rb_raise(rb_eArgError, "cannot reparent %s there", rb_obj_classname(reparentee_obj));
249
- }
250
-
251
- ok:
252
- xmlUnlinkNode(reparentee);
253
-
254
- if (reparentee->doc != pivot->doc || reparentee->type == XML_TEXT_NODE) {
255
- /*
256
- * if the reparentee is a text node, there's a very good chance it will be
257
- * merged with an adjacent text node after being reparented, and in that case
258
- * libxml will free the underlying C struct.
259
- *
260
- * since we clearly have a ruby object which references the underlying
261
- * memory, we can't let the C struct get freed. let's pickle the original
262
- * reparentee by rooting it; and then we'll reparent a duplicate of the
263
- * node that we don't care about preserving.
264
- *
265
- * alternatively, if the reparentee is from a different document than the
266
- * pivot node, libxml2 is going to get confused about which document's
267
- * "dictionary" the node's strings belong to (this is an otherwise
268
- * uninteresting libxml2 implementation detail). as a result, we cannot
269
- * reparent the actual reparentee, so we reparent a duplicate.
270
- */
271
- if (reparentee->type == XML_TEXT_NODE && reparentee->_private) {
272
- /*
273
- * additionally, since we know this C struct isn't going to be related to
274
- * a Ruby object anymore, let's break the relationship on this end as
275
- * well.
276
- *
277
- * this is not absolutely necessary unless libxml-ruby is also in effect,
278
- * in which case its global callback `rxml_node_deregisterNode` will try
279
- * to do things to our data.
280
- *
281
- * for more details on this particular (and particularly nasty) edge
282
- * case, see:
283
- *
284
- * https://github.com/sparklemotion/nokogiri/issues/1426
285
- */
286
- reparentee->_private = NULL ;
287
- }
288
-
289
- if (reparentee->ns != NULL && reparentee->ns->prefix == NULL) {
290
- original_ns_prefix_is_default = 1;
291
- }
292
-
293
- nokogiri_root_node(reparentee);
294
-
295
- if (!(reparentee = xmlDocCopyNode(reparentee, pivot->doc, 1))) {
296
- rb_raise(rb_eRuntimeError, "Could not reparent node (xmlDocCopyNode)");
297
- }
298
-
299
- if (original_ns_prefix_is_default && reparentee->ns != NULL && reparentee->ns->prefix != NULL) {
300
- /*
301
- * issue #391, where new node's prefix may become the string "default"
302
- * see libxml2 tree.c xmlNewReconciliedNs which implements this behavior.
303
- */
304
- xmlFree(reparentee->ns->prefix);
305
- reparentee->ns->prefix = NULL;
306
- }
307
- }
308
-
309
- if (prf != xmlAddPrevSibling && prf != xmlAddNextSibling
310
- && reparentee->type == XML_TEXT_NODE && pivot->next && pivot->next->type == XML_TEXT_NODE) {
311
- /*
312
- * libxml merges text nodes in a right-to-left fashion, meaning that if
313
- * there are two text nodes who would be adjacent, the right (or following,
314
- * or next) node will be merged into the left (or preceding, or previous)
315
- * node.
316
- *
317
- * and by "merged" I mean the string contents will be concatenated onto the
318
- * left node's contents, and then the node will be freed.
319
- *
320
- * which means that if we have a ruby object wrapped around the right node,
321
- * its memory would be freed out from under it.
322
- *
323
- * so, we detect this edge case and unlink-and-root the text node before it gets
324
- * merged. then we dup the node and insert that duplicate back into the
325
- * document where the real node was.
326
- *
327
- * yes, this is totally lame.
328
- */
329
- next_text = pivot->next ;
330
- new_next_text = xmlDocCopyNode(next_text, pivot->doc, 1) ;
331
-
332
- xmlUnlinkNode(next_text);
333
- nokogiri_root_node(next_text);
334
-
335
- xmlAddNextSibling(pivot, new_next_text);
336
- }
337
-
338
- if(!(reparented = (*prf)(pivot, reparentee))) {
339
- rb_raise(rb_eRuntimeError, "Could not reparent node");
340
- }
341
-
342
- /*
343
- * make sure the ruby object is pointed at the just-reparented node, which
344
- * might be a duplicate (see above) or might be the result of merging
345
- * adjacent text nodes.
346
- */
347
- DATA_PTR(reparentee_obj) = reparented ;
348
-
349
- relink_namespace(reparented);
350
-
351
- reparented_obj = Nokogiri_wrap_xml_node(Qnil, reparented);
352
-
353
- rb_funcall(reparented_obj, decorate_bang, 0);
354
-
355
- return reparented_obj ;
356
- }
357
-
358
-
359
- /*
360
- * call-seq:
361
- * document
362
- *
363
- * Get the document for this Node
364
- */
365
- static VALUE document(VALUE self)
366
- {
367
- xmlNodePtr node;
368
- Data_Get_Struct(self, xmlNode, node);
369
- return DOC_RUBY_OBJECT(node->doc);
370
- }
371
-
372
- /*
373
- * call-seq:
374
- * pointer_id
375
- *
376
- * Get the internal pointer number
377
- */
378
- static VALUE pointer_id(VALUE self)
379
- {
380
- xmlNodePtr node;
381
- Data_Get_Struct(self, xmlNode, node);
382
-
383
- return INT2NUM((long)(node));
384
- }
385
-
386
- /*
387
- * call-seq:
388
- * encode_special_chars(string)
389
- *
390
- * Encode any special characters in +string+
391
- */
392
- static VALUE encode_special_chars(VALUE self, VALUE string)
393
- {
394
- xmlNodePtr node;
395
- xmlChar *encoded;
396
- VALUE encoded_str;
397
-
398
- Data_Get_Struct(self, xmlNode, node);
399
- encoded = xmlEncodeSpecialChars(
400
- node->doc,
401
- (const xmlChar *)StringValueCStr(string)
402
- );
403
-
404
- encoded_str = NOKOGIRI_STR_NEW2(encoded);
405
- xmlFree(encoded);
406
-
407
- return encoded_str;
408
- }
409
-
410
- /*
411
- * call-seq:
412
- * create_internal_subset(name, external_id, system_id)
413
- *
414
- * Create the internal subset of a document.
415
- *
416
- * doc.create_internal_subset("chapter", "-//OASIS//DTD DocBook XML//EN", "chapter.dtd")
417
- * # => <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML//EN" "chapter.dtd">
418
- *
419
- * doc.create_internal_subset("chapter", nil, "chapter.dtd")
420
- * # => <!DOCTYPE chapter SYSTEM "chapter.dtd">
421
- */
422
- static VALUE create_internal_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id)
423
- {
424
- xmlNodePtr node;
425
- xmlDocPtr doc;
426
- xmlDtdPtr dtd;
427
-
428
- Data_Get_Struct(self, xmlNode, node);
429
-
430
- doc = node->doc;
431
-
432
- if(xmlGetIntSubset(doc)) {
433
- rb_raise(rb_eRuntimeError, "Document already has an internal subset");
434
- }
435
-
436
- dtd = xmlCreateIntSubset(
437
- doc,
438
- NIL_P(name) ? NULL : (const xmlChar *)StringValueCStr(name),
439
- NIL_P(external_id) ? NULL : (const xmlChar *)StringValueCStr(external_id),
440
- NIL_P(system_id) ? NULL : (const xmlChar *)StringValueCStr(system_id)
441
- );
442
-
443
- if(!dtd) { return Qnil; }
444
-
445
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
446
- }
447
-
448
- /*
449
- * call-seq:
450
- * create_external_subset(name, external_id, system_id)
451
- *
452
- * Create an external subset
453
- */
454
- static VALUE create_external_subset(VALUE self, VALUE name, VALUE external_id, VALUE system_id)
455
- {
456
- xmlNodePtr node;
457
- xmlDocPtr doc;
458
- xmlDtdPtr dtd;
459
-
460
- Data_Get_Struct(self, xmlNode, node);
461
-
462
- doc = node->doc;
463
-
464
- if(doc->extSubset) {
465
- rb_raise(rb_eRuntimeError, "Document already has an external subset");
466
- }
467
-
468
- dtd = xmlNewDtd(
469
- doc,
470
- NIL_P(name) ? NULL : (const xmlChar *)StringValueCStr(name),
471
- NIL_P(external_id) ? NULL : (const xmlChar *)StringValueCStr(external_id),
472
- NIL_P(system_id) ? NULL : (const xmlChar *)StringValueCStr(system_id)
473
- );
474
-
475
- if(!dtd) { return Qnil; }
476
-
477
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
478
- }
479
-
480
- /*
481
- * call-seq:
482
- * external_subset
483
- *
484
- * Get the external subset
485
- */
486
- static VALUE external_subset(VALUE self)
487
- {
488
- xmlNodePtr node;
489
- xmlDocPtr doc;
490
- xmlDtdPtr dtd;
491
-
492
- Data_Get_Struct(self, xmlNode, node);
493
-
494
- if(!node->doc) { return Qnil; }
495
-
496
- doc = node->doc;
497
- dtd = doc->extSubset;
498
-
499
- if(!dtd) { return Qnil; }
500
-
501
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
502
- }
503
-
504
- /*
505
- * call-seq:
506
- * internal_subset
507
- *
508
- * Get the internal subset
509
- */
510
- static VALUE internal_subset(VALUE self)
511
- {
512
- xmlNodePtr node;
513
- xmlDocPtr doc;
514
- xmlDtdPtr dtd;
515
-
516
- Data_Get_Struct(self, xmlNode, node);
517
-
518
- if(!node->doc) { return Qnil; }
519
-
520
- doc = node->doc;
521
- dtd = xmlGetIntSubset(doc);
522
-
523
- if(!dtd) { return Qnil; }
524
-
525
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)dtd);
526
- }
527
-
528
- /*
529
- * call-seq:
530
- * dup
531
- * dup(depth)
532
- * dup(depth, new_parent_doc)
533
- *
534
- * Copy this node.
535
- * An optional depth may be passed in. 0 is a shallow copy, 1 (the default) is a deep copy.
536
- * An optional new_parent_doc may also be passed in, which will be the new
537
- * node's parent document. Defaults to the current node's document.
538
- * current document.
539
- */
540
- static VALUE duplicate_node(int argc, VALUE *argv, VALUE self)
541
- {
542
- VALUE r_level, r_new_parent_doc;
543
- int level;
544
- int n_args;
545
- xmlDocPtr new_parent_doc;
546
- xmlNodePtr node, dup;
547
-
548
- Data_Get_Struct(self, xmlNode, node);
549
-
550
- n_args = rb_scan_args(argc, argv, "02", &r_level, &r_new_parent_doc);
551
-
552
- if (n_args < 1) {
553
- r_level = INT2NUM((long)1);
554
- }
555
- level = (int)NUM2INT(r_level);
556
-
557
- if (n_args < 2) {
558
- new_parent_doc = node->doc;
559
- } else {
560
- Data_Get_Struct(r_new_parent_doc, xmlDoc, new_parent_doc);
561
- }
562
-
563
- dup = xmlDocCopyNode(node, new_parent_doc, level);
564
- if(dup == NULL) { return Qnil; }
565
-
566
- nokogiri_root_node(dup);
567
-
568
- return Nokogiri_wrap_xml_node(rb_obj_class(self), dup);
569
- }
570
-
571
- /*
572
- * call-seq:
573
- * unlink
574
- *
575
- * Unlink this node from its current context.
576
- */
577
- static VALUE unlink_node(VALUE self)
578
- {
579
- xmlNodePtr node;
580
- Data_Get_Struct(self, xmlNode, node);
581
- xmlUnlinkNode(node);
582
- nokogiri_root_node(node);
583
- return self;
584
- }
585
-
586
- /*
587
- * call-seq:
588
- * blank?
589
- *
590
- * Is this node blank?
591
- */
592
- static VALUE blank_eh(VALUE self)
593
- {
594
- xmlNodePtr node;
595
- Data_Get_Struct(self, xmlNode, node);
596
- return (1 == xmlIsBlankNode(node)) ? Qtrue : Qfalse ;
597
- }
598
-
599
- /*
600
- * call-seq:
601
- * next_sibling
602
- *
603
- * Returns the next sibling node
604
- */
605
- static VALUE next_sibling(VALUE self)
606
- {
607
- xmlNodePtr node, sibling;
608
- Data_Get_Struct(self, xmlNode, node);
609
-
610
- sibling = node->next;
611
- if(!sibling) { return Qnil; }
612
-
613
- return Nokogiri_wrap_xml_node(Qnil, sibling) ;
614
- }
615
-
616
- /*
617
- * call-seq:
618
- * previous_sibling
619
- *
620
- * Returns the previous sibling node
621
- */
622
- static VALUE previous_sibling(VALUE self)
623
- {
624
- xmlNodePtr node, sibling;
625
- Data_Get_Struct(self, xmlNode, node);
626
-
627
- sibling = node->prev;
628
- if(!sibling) { return Qnil; }
629
-
630
- return Nokogiri_wrap_xml_node(Qnil, sibling);
631
- }
632
-
633
- /*
634
- * call-seq:
635
- * next_element
636
- *
637
- * Returns the next Nokogiri::XML::Element type sibling node.
638
- */
639
- static VALUE next_element(VALUE self)
640
- {
641
- xmlNodePtr node, sibling;
642
- Data_Get_Struct(self, xmlNode, node);
643
-
644
- sibling = xmlNextElementSibling(node);
645
- if(!sibling) { return Qnil; }
646
-
647
- return Nokogiri_wrap_xml_node(Qnil, sibling);
648
- }
649
-
650
- /*
651
- * call-seq:
652
- * previous_element
653
- *
654
- * Returns the previous Nokogiri::XML::Element type sibling node.
655
- */
656
- static VALUE previous_element(VALUE self)
657
- {
658
- xmlNodePtr node, sibling;
659
- Data_Get_Struct(self, xmlNode, node);
660
-
661
- /*
662
- * note that we don't use xmlPreviousElementSibling here because it's buggy pre-2.7.7.
663
- */
664
- sibling = node->prev;
665
- if(!sibling) { return Qnil; }
666
-
667
- while(sibling && sibling->type != XML_ELEMENT_NODE) {
668
- sibling = sibling->prev;
669
- }
670
-
671
- return sibling ? Nokogiri_wrap_xml_node(Qnil, sibling) : Qnil ;
672
- }
673
-
674
- /* :nodoc: */
675
- static VALUE replace(VALUE self, VALUE new_node)
676
- {
677
- VALUE reparent = reparent_node_with(self, new_node, xmlReplaceNodeWrapper);
678
-
679
- xmlNodePtr pivot;
680
- Data_Get_Struct(self, xmlNode, pivot);
681
- nokogiri_root_node(pivot);
682
-
683
- return reparent;
684
- }
685
-
686
- /*
687
- * call-seq:
688
- * children
689
- *
690
- * Get the list of children for this node as a NodeSet
691
- */
692
- static VALUE children(VALUE self)
693
- {
694
- xmlNodePtr node;
695
- xmlNodePtr child;
696
- xmlNodeSetPtr set;
697
- VALUE document;
698
- VALUE node_set;
699
-
700
- Data_Get_Struct(self, xmlNode, node);
701
-
702
- child = node->children;
703
- set = xmlXPathNodeSetCreate(child);
704
-
705
- document = DOC_RUBY_OBJECT(node->doc);
706
-
707
- if(!child) { return Nokogiri_wrap_xml_node_set(set, document); }
708
-
709
- child = child->next;
710
- while(NULL != child) {
711
- xmlXPathNodeSetAddUnique(set, child);
712
- child = child->next;
713
- }
714
-
715
- node_set = Nokogiri_wrap_xml_node_set(set, document);
716
-
717
- return node_set;
718
- }
719
-
720
- /*
721
- * call-seq:
722
- * element_children
723
- *
724
- * Get the list of children for this node as a NodeSet. All nodes will be
725
- * element nodes.
726
- *
727
- * Example:
728
- *
729
- * @doc.root.element_children.all? { |x| x.element? } # => true
730
- */
731
- static VALUE element_children(VALUE self)
732
- {
733
- xmlNodePtr node;
734
- xmlNodePtr child;
735
- xmlNodeSetPtr set;
736
- VALUE document;
737
- VALUE node_set;
738
-
739
- Data_Get_Struct(self, xmlNode, node);
740
-
741
- child = xmlFirstElementChild(node);
742
- set = xmlXPathNodeSetCreate(child);
743
-
744
- document = DOC_RUBY_OBJECT(node->doc);
745
-
746
- if(!child) { return Nokogiri_wrap_xml_node_set(set, document); }
747
-
748
- child = xmlNextElementSibling(child);
749
- while(NULL != child) {
750
- xmlXPathNodeSetAddUnique(set, child);
751
- child = xmlNextElementSibling(child);
752
- }
753
-
754
- node_set = Nokogiri_wrap_xml_node_set(set, document);
755
-
756
- return node_set;
757
- }
758
-
759
- /*
760
- * call-seq:
761
- * child
762
- *
763
- * Returns the child node
764
- */
765
- static VALUE child(VALUE self)
766
- {
767
- xmlNodePtr node, child;
768
- Data_Get_Struct(self, xmlNode, node);
769
-
770
- child = node->children;
771
- if(!child) { return Qnil; }
772
-
773
- return Nokogiri_wrap_xml_node(Qnil, child);
774
- }
775
-
776
- /*
777
- * call-seq:
778
- * first_element_child
779
- *
780
- * Returns the first child node of this node that is an element.
781
- *
782
- * Example:
783
- *
784
- * @doc.root.first_element_child.element? # => true
785
- */
786
- static VALUE first_element_child(VALUE self)
787
- {
788
- xmlNodePtr node, child;
789
- Data_Get_Struct(self, xmlNode, node);
790
-
791
- child = xmlFirstElementChild(node);
792
- if(!child) { return Qnil; }
793
-
794
- return Nokogiri_wrap_xml_node(Qnil, child);
795
- }
796
-
797
- /*
798
- * call-seq:
799
- * last_element_child
800
- *
801
- * Returns the last child node of this node that is an element.
802
- *
803
- * Example:
804
- *
805
- * @doc.root.last_element_child.element? # => true
806
- */
807
- static VALUE last_element_child(VALUE self)
808
- {
809
- xmlNodePtr node, child;
810
- Data_Get_Struct(self, xmlNode, node);
811
-
812
- child = xmlLastElementChild(node);
813
- if(!child) { return Qnil; }
814
-
815
- return Nokogiri_wrap_xml_node(Qnil, child);
816
- }
817
-
818
- /*
819
- * call-seq:
820
- * key?(attribute)
821
- *
822
- * Returns true if +attribute+ is set
823
- */
824
- static VALUE key_eh(VALUE self, VALUE attribute)
825
- {
826
- xmlNodePtr node;
827
- Data_Get_Struct(self, xmlNode, node);
828
- if(xmlHasProp(node, (xmlChar *)StringValueCStr(attribute))) {
829
- return Qtrue;
830
- }
831
- return Qfalse;
832
- }
833
-
834
- /*
835
- * call-seq:
836
- * namespaced_key?(attribute, namespace)
837
- *
838
- * Returns true if +attribute+ is set with +namespace+
839
- */
840
- static VALUE namespaced_key_eh(VALUE self, VALUE attribute, VALUE namespace)
841
- {
842
- xmlNodePtr node;
843
- Data_Get_Struct(self, xmlNode, node);
844
- if(xmlHasNsProp(node, (xmlChar *)StringValueCStr(attribute),
845
- NIL_P(namespace) ? NULL : (xmlChar *)StringValueCStr(namespace))) {
846
- return Qtrue;
847
- }
848
- return Qfalse;
849
- }
850
-
851
- /*
852
- * call-seq:
853
- * []=(property, value)
854
- *
855
- * Set the +property+ to +value+
856
- */
857
- static VALUE set(VALUE self, VALUE property, VALUE value)
858
- {
859
- xmlNodePtr node, cur;
860
- xmlAttrPtr prop;
861
- Data_Get_Struct(self, xmlNode, node);
862
-
863
- /* If a matching attribute node already exists, then xmlSetProp will destroy
864
- * the existing node's children. However, if Nokogiri has a node object
865
- * pointing to one of those children, we are left with a broken reference.
866
- *
867
- * We can avoid this by unlinking these nodes first.
868
- */
869
- if (node->type != XML_ELEMENT_NODE) {
870
- return(Qnil);
871
- }
872
- prop = xmlHasProp(node, (xmlChar *)StringValueCStr(property));
873
- if (prop && prop->children) {
874
- for (cur = prop->children; cur; cur = cur->next) {
875
- if (cur->_private) {
876
- nokogiri_root_node(cur);
877
- xmlUnlinkNode(cur);
878
- }
879
- }
880
- }
881
-
882
- xmlSetProp(node, (xmlChar *)StringValueCStr(property),
883
- (xmlChar *)StringValueCStr(value));
884
-
885
- return value;
886
- }
887
-
888
- /*
889
- * call-seq:
890
- * get(attribute)
891
- *
892
- * Get the value for +attribute+
893
- */
894
- static VALUE get(VALUE self, VALUE rattribute)
895
- {
896
- xmlNodePtr node;
897
- xmlChar *value = 0;
898
- VALUE rvalue;
899
- xmlChar *colon;
900
- xmlChar *attribute, *attr_name, *prefix;
901
- xmlNsPtr ns;
902
-
903
- if (NIL_P(rattribute)) { return Qnil; }
904
-
905
- Data_Get_Struct(self, xmlNode, node);
906
- attribute = xmlCharStrdup(StringValueCStr(rattribute));
907
-
908
- colon = (xmlChar *)(uintptr_t)xmlStrchr(attribute, (const xmlChar)':');
909
- if (colon) {
910
- /* split the attribute string into separate prefix and name by
911
- * null-terminating the prefix at the colon */
912
- prefix = attribute;
913
- attr_name = colon + 1;
914
- (*colon) = 0;
915
-
916
- ns = xmlSearchNs(node->doc, node, prefix);
917
- if (ns) {
918
- value = xmlGetNsProp(node, attr_name, ns->href);
919
- } else {
920
- value = xmlGetProp(node, (xmlChar*)StringValueCStr(rattribute));
921
- }
922
- } else {
923
- value = xmlGetNoNsProp(node, attribute);
924
- }
925
-
926
- xmlFree((void *)attribute);
927
- if (!value) { return Qnil; }
928
-
929
- rvalue = NOKOGIRI_STR_NEW2(value);
930
- xmlFree((void *)value);
931
-
932
- return rvalue ;
933
- }
934
-
935
- /*
936
- * call-seq:
937
- * set_namespace(namespace)
938
- *
939
- * Set the namespace to +namespace+
940
- */
941
- static VALUE set_namespace(VALUE self, VALUE namespace)
942
- {
943
- xmlNodePtr node;
944
- xmlNsPtr ns = NULL;
945
-
946
- Data_Get_Struct(self, xmlNode, node);
947
-
948
- if(!NIL_P(namespace)) {
949
- Data_Get_Struct(namespace, xmlNs, ns);
950
- }
951
-
952
- xmlSetNs(node, ns);
953
-
954
- return self;
955
- }
956
-
957
- /*
958
- * call-seq:
959
- * attribute(name)
960
- *
961
- * Get the attribute node with +name+
962
- */
963
- static VALUE attr(VALUE self, VALUE name)
964
- {
965
- xmlNodePtr node;
966
- xmlAttrPtr prop;
967
- Data_Get_Struct(self, xmlNode, node);
968
- prop = xmlHasProp(node, (xmlChar *)StringValueCStr(name));
969
-
970
- if(! prop) { return Qnil; }
971
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
972
- }
973
-
974
- /*
975
- * call-seq:
976
- * attribute_with_ns(name, namespace)
977
- *
978
- * Get the attribute node with +name+ and +namespace+
979
- */
980
- static VALUE attribute_with_ns(VALUE self, VALUE name, VALUE namespace)
981
- {
982
- xmlNodePtr node;
983
- xmlAttrPtr prop;
984
- Data_Get_Struct(self, xmlNode, node);
985
- prop = xmlHasNsProp(node, (xmlChar *)StringValueCStr(name),
986
- NIL_P(namespace) ? NULL : (xmlChar *)StringValueCStr(namespace));
987
-
988
- if(! prop) { return Qnil; }
989
- return Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop);
990
- }
991
-
992
- /*
993
- * call-seq:
994
- * attribute_nodes()
995
- *
996
- * returns a list containing the Node attributes.
997
- */
998
- static VALUE attribute_nodes(VALUE self)
999
- {
1000
- /* this code in the mode of xmlHasProp() */
1001
- xmlNodePtr node;
1002
- VALUE attr;
1003
-
1004
- Data_Get_Struct(self, xmlNode, node);
1005
-
1006
- attr = rb_ary_new();
1007
- Nokogiri_xml_node_properties(node, attr);
1008
-
1009
- return attr ;
1010
- }
1011
-
1012
-
1013
- /*
1014
- * call-seq:
1015
- * namespace()
1016
- *
1017
- * returns the namespace of the element or attribute node as a Namespace
1018
- * object, or nil if there is no namespace for the element or attribute.
1019
- */
1020
- static VALUE namespace(VALUE self)
1021
- {
1022
- xmlNodePtr node ;
1023
- Data_Get_Struct(self, xmlNode, node);
1024
-
1025
- if (node->ns) {
1026
- return Nokogiri_wrap_xml_namespace(node->doc, node->ns);
1027
- }
1028
-
1029
- return Qnil ;
1030
- }
1031
-
1032
- /*
1033
- * call-seq:
1034
- * namespace_definitions()
1035
- *
1036
- * returns namespaces defined on self element directly, as an array of Namespace objects. Includes both a default namespace (as in"xmlns="), and prefixed namespaces (as in "xmlns:prefix=").
1037
- */
1038
- static VALUE namespace_definitions(VALUE self)
1039
- {
1040
- /* this code in the mode of xmlHasProp() */
1041
- xmlNodePtr node ;
1042
- VALUE list;
1043
- xmlNsPtr ns;
1044
-
1045
- Data_Get_Struct(self, xmlNode, node);
1046
-
1047
- list = rb_ary_new();
1048
-
1049
- ns = node->nsDef;
1050
-
1051
- if(!ns) { return list; }
1052
-
1053
- while(NULL != ns) {
1054
- rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns));
1055
- ns = ns->next;
1056
- }
1057
-
1058
- return list;
1059
- }
1060
-
1061
- /*
1062
- * call-seq:
1063
- * namespace_scopes()
1064
- *
1065
- * returns namespaces in scope for self -- those defined on self element
1066
- * directly or any ancestor node -- as an array of Namespace objects. Default
1067
- * namespaces ("xmlns=" style) for self are included in this array; Default
1068
- * namespaces for ancestors, however, are not. See also #namespaces
1069
- */
1070
- static VALUE namespace_scopes(VALUE self)
1071
- {
1072
- xmlNodePtr node ;
1073
- VALUE list;
1074
- xmlNsPtr *ns_list;
1075
- int j;
1076
-
1077
- Data_Get_Struct(self, xmlNode, node);
1078
-
1079
- list = rb_ary_new();
1080
- ns_list = xmlGetNsList(node->doc, node);
1081
-
1082
- if(!ns_list) { return list; }
1083
-
1084
- for (j = 0 ; ns_list[j] != NULL ; ++j) {
1085
- rb_ary_push(list, Nokogiri_wrap_xml_namespace(node->doc, ns_list[j]));
1086
- }
1087
-
1088
- xmlFree(ns_list);
1089
- return list;
1090
- }
1091
-
1092
- /*
1093
- * call-seq:
1094
- * node_type
1095
- *
1096
- * Get the type for this Node
1097
- */
1098
- static VALUE node_type(VALUE self)
1099
- {
1100
- xmlNodePtr node;
1101
- Data_Get_Struct(self, xmlNode, node);
1102
- return INT2NUM((long)node->type);
1103
- }
1104
-
1105
- /*
1106
- * call-seq:
1107
- * content=
1108
- *
1109
- * Set the content for this Node
1110
- */
1111
- static VALUE set_native_content(VALUE self, VALUE content)
1112
- {
1113
- xmlNodePtr node, child, next ;
1114
- Data_Get_Struct(self, xmlNode, node);
1115
-
1116
- child = node->children;
1117
- while (NULL != child) {
1118
- next = child->next ;
1119
- xmlUnlinkNode(child) ;
1120
- nokogiri_root_node(child);
1121
- child = next ;
1122
- }
1123
-
1124
- xmlNodeSetContent(node, (xmlChar *)StringValueCStr(content));
1125
- return content;
1126
- }
1127
-
1128
- /*
1129
- * call-seq:
1130
- * content
1131
- *
1132
- * Returns the plaintext content for this Node. Note that entities will always
1133
- * be expanded in the returned string.
1134
- */
1135
- static VALUE get_native_content(VALUE self)
1136
- {
1137
- xmlNodePtr node;
1138
- xmlChar * content;
1139
-
1140
- Data_Get_Struct(self, xmlNode, node);
1141
-
1142
- content = xmlNodeGetContent(node);
1143
- if(content) {
1144
- VALUE rval = NOKOGIRI_STR_NEW2(content);
1145
- xmlFree(content);
1146
- return rval;
1147
- }
1148
- return Qnil;
1149
- }
1150
-
1151
- /*
1152
- * call-seq:
1153
- * lang=
1154
- *
1155
- * Set the language of a node, i.e. the values of the xml:lang attribute.
1156
- */
1157
- static VALUE set_lang(VALUE self_rb, VALUE lang_rb)
1158
- {
1159
- xmlNodePtr self ;
1160
- xmlChar* lang ;
1161
-
1162
- Data_Get_Struct(self_rb, xmlNode, self);
1163
- lang = (xmlChar*)StringValueCStr(lang_rb);
1164
-
1165
- xmlNodeSetLang(self, lang);
1166
-
1167
- return Qnil ;
1168
- }
1169
-
1170
- /*
1171
- * call-seq:
1172
- * lang
1173
- *
1174
- * Searches the language of a node, i.e. the values of the xml:lang attribute or
1175
- * the one carried by the nearest ancestor.
1176
- */
1177
- static VALUE get_lang(VALUE self_rb)
1178
- {
1179
- xmlNodePtr self ;
1180
- xmlChar* lang ;
1181
- VALUE lang_rb ;
1182
-
1183
- Data_Get_Struct(self_rb, xmlNode, self);
1184
-
1185
- lang = xmlNodeGetLang(self);
1186
- if (lang) {
1187
- lang_rb = NOKOGIRI_STR_NEW2(lang);
1188
- xmlFree(lang);
1189
- return lang_rb ;
1190
- }
1191
-
1192
- return Qnil ;
1193
- }
1194
-
1195
- /* :nodoc: */
1196
- static VALUE add_child(VALUE self, VALUE new_child)
1197
- {
1198
- return reparent_node_with(self, new_child, xmlAddChild);
1199
- }
1200
-
1201
- /*
1202
- * call-seq:
1203
- * parent
1204
- *
1205
- * Get the parent Node for this Node
1206
- */
1207
- static VALUE get_parent(VALUE self)
1208
- {
1209
- xmlNodePtr node, parent;
1210
- Data_Get_Struct(self, xmlNode, node);
1211
-
1212
- parent = node->parent;
1213
- if(!parent) { return Qnil; }
1214
-
1215
- return Nokogiri_wrap_xml_node(Qnil, parent) ;
1216
- }
1217
-
1218
- /*
1219
- * call-seq:
1220
- * name=(new_name)
1221
- *
1222
- * Set the name for this Node
1223
- */
1224
- static VALUE set_name(VALUE self, VALUE new_name)
1225
- {
1226
- xmlNodePtr node;
1227
- Data_Get_Struct(self, xmlNode, node);
1228
- xmlNodeSetName(node, (xmlChar*)StringValueCStr(new_name));
1229
- return new_name;
1230
- }
1231
-
1232
- /*
1233
- * call-seq:
1234
- * name
1235
- *
1236
- * Returns the name for this Node
1237
- */
1238
- static VALUE get_name(VALUE self)
1239
- {
1240
- xmlNodePtr node;
1241
- Data_Get_Struct(self, xmlNode, node);
1242
- if(node->name) {
1243
- return NOKOGIRI_STR_NEW2(node->name);
1244
- }
1245
- return Qnil;
1246
- }
1247
-
1248
- /*
1249
- * call-seq:
1250
- * path
1251
- *
1252
- * Returns the path associated with this Node
1253
- */
1254
- static VALUE path(VALUE self)
1255
- {
1256
- xmlNodePtr node;
1257
- xmlChar *path ;
1258
- VALUE rval;
1259
-
1260
- Data_Get_Struct(self, xmlNode, node);
1261
-
1262
- path = xmlGetNodePath(node);
1263
- rval = NOKOGIRI_STR_NEW2(path);
1264
- xmlFree(path);
1265
- return rval ;
1266
- }
1267
-
1268
- /* :nodoc: */
1269
- static VALUE add_next_sibling(VALUE self, VALUE new_sibling)
1270
- {
1271
- return reparent_node_with(self, new_sibling, xmlAddNextSibling) ;
1272
- }
1273
-
1274
- /* :nodoc: */
1275
- static VALUE add_previous_sibling(VALUE self, VALUE new_sibling)
1276
- {
1277
- return reparent_node_with(self, new_sibling, xmlAddPrevSibling) ;
1278
- }
1279
-
1280
- /*
1281
- * call-seq:
1282
- * native_write_to(io, encoding, options)
1283
- *
1284
- * Write this Node to +io+ with +encoding+ and +options+
1285
- */
1286
- static VALUE native_write_to(
1287
- VALUE self,
1288
- VALUE io,
1289
- VALUE encoding,
1290
- VALUE indent_string,
1291
- VALUE options
1292
- )
1293
- {
1294
- xmlNodePtr node;
1295
- const char * before_indent;
1296
- xmlSaveCtxtPtr savectx;
1297
-
1298
- Data_Get_Struct(self, xmlNode, node);
1299
-
1300
- xmlIndentTreeOutput = 1;
1301
-
1302
- before_indent = xmlTreeIndentString;
1303
-
1304
- xmlTreeIndentString = StringValueCStr(indent_string);
1305
-
1306
- savectx = xmlSaveToIO(
1307
- (xmlOutputWriteCallback)io_write_callback,
1308
- (xmlOutputCloseCallback)io_close_callback,
1309
- (void *)io,
1310
- RTEST(encoding) ? StringValueCStr(encoding) : NULL,
1311
- (int)NUM2INT(options)
1312
- );
1313
-
1314
- xmlSaveTree(savectx, node);
1315
- xmlSaveClose(savectx);
1316
-
1317
- xmlTreeIndentString = before_indent;
1318
- return io;
1319
- }
1320
-
1321
- /*
1322
- * call-seq:
1323
- * line
1324
- *
1325
- * Returns the line for this Node
1326
- */
1327
- static VALUE line(VALUE self)
1328
- {
1329
- xmlNodePtr node;
1330
- Data_Get_Struct(self, xmlNode, node);
1331
-
1332
- return INT2NUM(xmlGetLineNo(node));
1333
- }
1334
-
1335
- /*
1336
- * call-seq:
1337
- * add_namespace_definition(prefix, href)
1338
- *
1339
- * Adds a namespace definition with +prefix+ using +href+ value. The result is
1340
- * as if parsed XML for this node had included an attribute
1341
- * 'xmlns:prefix=value'. A default namespace for this node ("xmlns=") can be
1342
- * added by passing 'nil' for prefix. Namespaces added this way will not
1343
- * show up in #attributes, but they will be included as an xmlns attribute
1344
- * when the node is serialized to XML.
1345
- */
1346
- static VALUE add_namespace_definition(VALUE self, VALUE prefix, VALUE href)
1347
- {
1348
- xmlNodePtr node, namespace;
1349
- xmlNsPtr ns;
1350
-
1351
- Data_Get_Struct(self, xmlNode, node);
1352
- namespace = node ;
1353
-
1354
- ns = xmlSearchNs(
1355
- node->doc,
1356
- node,
1357
- (const xmlChar *)(NIL_P(prefix) ? NULL : StringValueCStr(prefix))
1358
- );
1359
-
1360
- if(!ns) {
1361
- if (node->type != XML_ELEMENT_NODE) {
1362
- namespace = node->parent;
1363
- }
1364
- ns = xmlNewNs(
1365
- namespace,
1366
- (const xmlChar *)StringValueCStr(href),
1367
- (const xmlChar *)(NIL_P(prefix) ? NULL : StringValueCStr(prefix))
1368
- );
1369
- }
1370
-
1371
- if (!ns) { return Qnil ; }
1372
-
1373
- if(NIL_P(prefix) || node != namespace) { xmlSetNs(node, ns); }
1374
-
1375
- return Nokogiri_wrap_xml_namespace(node->doc, ns);
1376
- }
1377
-
1378
- /*
1379
- * call-seq:
1380
- * new(name, document)
1381
- *
1382
- * Create a new node with +name+ sharing GC lifecycle with +document+
1383
- */
1384
- static VALUE new(int argc, VALUE *argv, VALUE klass)
1385
- {
1386
- xmlDocPtr doc;
1387
- xmlNodePtr node;
1388
- VALUE name;
1389
- VALUE document;
1390
- VALUE rest;
1391
- VALUE rb_node;
1392
-
1393
- rb_scan_args(argc, argv, "2*", &name, &document, &rest);
1394
-
1395
- Data_Get_Struct(document, xmlDoc, doc);
1396
-
1397
- node = xmlNewNode(NULL, (xmlChar *)StringValueCStr(name));
1398
- node->doc = doc->doc;
1399
- nokogiri_root_node(node);
1400
-
1401
- rb_node = Nokogiri_wrap_xml_node(
1402
- klass == cNokogiriXmlNode ? (VALUE)NULL : klass,
1403
- node
1404
- );
1405
- rb_obj_call_init(rb_node, argc, argv);
1406
-
1407
- if(rb_block_given_p()) { rb_yield(rb_node); }
1408
-
1409
- return rb_node;
1410
- }
1411
-
1412
- /*
1413
- * call-seq:
1414
- * dump_html
1415
- *
1416
- * Returns the Node as html.
1417
- */
1418
- static VALUE dump_html(VALUE self)
1419
- {
1420
- xmlBufferPtr buf ;
1421
- xmlNodePtr node ;
1422
- VALUE html;
1423
-
1424
- Data_Get_Struct(self, xmlNode, node);
1425
-
1426
- buf = xmlBufferCreate() ;
1427
- htmlNodeDump(buf, node->doc, node);
1428
- html = NOKOGIRI_STR_NEW2(buf->content);
1429
- xmlBufferFree(buf);
1430
- return html ;
1431
- }
1432
-
1433
- /*
1434
- * call-seq:
1435
- * compare(other)
1436
- *
1437
- * Compare this Node to +other+ with respect to their Document
1438
- */
1439
- static VALUE compare(VALUE self, VALUE _other)
1440
- {
1441
- xmlNodePtr node, other;
1442
- Data_Get_Struct(self, xmlNode, node);
1443
- Data_Get_Struct(_other, xmlNode, other);
1444
-
1445
- return INT2NUM((long)xmlXPathCmpNodes(other, node));
1446
- }
1447
-
1448
-
1449
- /*
1450
- * call-seq:
1451
- * process_xincludes(options)
1452
- *
1453
- * Loads and substitutes all xinclude elements below the node. The
1454
- * parser context will be initialized with +options+.
1455
- */
1456
- static VALUE process_xincludes(VALUE self, VALUE options)
1457
- {
1458
- int rcode ;
1459
- xmlNodePtr node;
1460
- VALUE error_list = rb_ary_new();
1461
-
1462
- Data_Get_Struct(self, xmlNode, node);
1463
-
1464
- xmlSetStructuredErrorFunc((void *)error_list, Nokogiri_error_array_pusher);
1465
- rcode = xmlXIncludeProcessTreeFlags(node, (int)NUM2INT(options));
1466
- xmlSetStructuredErrorFunc(NULL, NULL);
1467
-
1468
- if (rcode < 0) {
1469
- xmlErrorPtr error;
1470
-
1471
- error = xmlGetLastError();
1472
- if(error) {
1473
- rb_exc_raise(Nokogiri_wrap_xml_syntax_error(error));
1474
- } else {
1475
- rb_raise(rb_eRuntimeError, "Could not perform xinclude substitution");
1476
- }
1477
- }
1478
-
1479
- return self;
1480
- }
1481
-
1482
-
1483
- /* TODO: DOCUMENT ME */
1484
- static VALUE in_context(VALUE self, VALUE _str, VALUE _options)
1485
- {
1486
- xmlNodePtr node, list = 0, tmp, child_iter, node_children, doc_children;
1487
- xmlNodeSetPtr set;
1488
- xmlParserErrors error;
1489
- VALUE doc, err;
1490
- int doc_is_empty;
1491
-
1492
- Data_Get_Struct(self, xmlNode, node);
1493
-
1494
- doc = DOC_RUBY_OBJECT(node->doc);
1495
- err = rb_iv_get(doc, "@errors");
1496
- doc_is_empty = (node->doc->children == NULL) ? 1 : 0;
1497
- node_children = node->children;
1498
- doc_children = node->doc->children;
1499
-
1500
- xmlSetStructuredErrorFunc((void *)err, Nokogiri_error_array_pusher);
1501
-
1502
- /* Twiddle global variable because of a bug in libxml2.
1503
- * http://git.gnome.org/browse/libxml2/commit/?id=e20fb5a72c83cbfc8e4a8aa3943c6be8febadab7
1504
- */
1505
- #ifndef HTML_PARSE_NOIMPLIED
1506
- htmlHandleOmittedElem(0);
1507
- #endif
1508
-
1509
- /* This function adds a fake node to the child of +node+. If the parser
1510
- * does not exit cleanly with XML_ERR_OK, the list is freed. This can
1511
- * leave the child pointers in a bad state if they were originally empty.
1512
- *
1513
- * http://git.gnome.org/browse/libxml2/tree/parser.c#n13177
1514
- * */
1515
- error = xmlParseInNodeContext(node, StringValuePtr(_str),
1516
- (int)RSTRING_LEN(_str),
1517
- (int)NUM2INT(_options), &list);
1518
-
1519
- /* xmlParseInNodeContext should not mutate the original document or node,
1520
- * so reassigning these pointers should be OK. The reason we're reassigning
1521
- * is because if there were errors, it's possible for the child pointers
1522
- * to be manipulated. */
1523
- if (error != XML_ERR_OK) {
1524
- node->doc->children = doc_children;
1525
- node->children = node_children;
1526
- }
1527
-
1528
- /* make sure parent/child pointers are coherent so an unlink will work
1529
- * properly (#331)
1530
- */
1531
- child_iter = node->doc->children ;
1532
- while (child_iter) {
1533
- if (child_iter->parent != (xmlNodePtr)node->doc) {
1534
- child_iter->parent = (xmlNodePtr)node->doc;
1535
- }
1536
- child_iter = child_iter->next;
1537
- }
1538
-
1539
- #ifndef HTML_PARSE_NOIMPLIED
1540
- htmlHandleOmittedElem(1);
1541
- #endif
1542
-
1543
- xmlSetStructuredErrorFunc(NULL, NULL);
1544
-
1545
- /* Workaround for a libxml2 bug where a parsing error may leave a broken
1546
- * node reference in node->doc->children.
1547
- * This workaround is limited to when a parse error occurs, the document
1548
- * went from having no children to having children, and the context node is
1549
- * part of a document fragment.
1550
- * https://bugzilla.gnome.org/show_bug.cgi?id=668155
1551
- */
1552
- if (error != XML_ERR_OK && doc_is_empty && node->doc->children != NULL) {
1553
- child_iter = node;
1554
- while (child_iter->parent) {
1555
- child_iter = child_iter->parent;
1556
- }
1557
-
1558
- if (child_iter->type == XML_DOCUMENT_FRAG_NODE) {
1559
- node->doc->children = NULL;
1560
- }
1561
- }
1562
-
1563
- /* FIXME: This probably needs to handle more constants... */
1564
- switch (error) {
1565
- case XML_ERR_INTERNAL_ERROR:
1566
- case XML_ERR_NO_MEMORY:
1567
- rb_raise(rb_eRuntimeError, "error parsing fragment (%d)", error);
1568
- break;
1569
- default:
1570
- break;
1571
- }
1572
-
1573
- set = xmlXPathNodeSetCreate(NULL);
1574
-
1575
- while (list) {
1576
- tmp = list->next;
1577
- list->next = NULL;
1578
- xmlXPathNodeSetAddUnique(set, list);
1579
- nokogiri_root_node(list);
1580
- list = tmp;
1581
- }
1582
-
1583
- return Nokogiri_wrap_xml_node_set(set, doc);
1584
- }
1585
-
1586
-
1587
- VALUE Nokogiri_wrap_xml_node(VALUE klass, xmlNodePtr node)
1588
- {
1589
- VALUE document = Qnil ;
1590
- VALUE node_cache = Qnil ;
1591
- VALUE rb_node = Qnil ;
1592
- nokogiriTuplePtr node_has_a_document;
1593
- xmlDocPtr doc;
1594
- void (*mark_method)(xmlNodePtr) = NULL ;
1595
-
1596
- assert(node);
1597
-
1598
- if(node->type == XML_DOCUMENT_NODE || node->type == XML_HTML_DOCUMENT_NODE) {
1599
- return DOC_RUBY_OBJECT(node->doc);
1600
- }
1601
-
1602
- /* It's OK if the node doesn't have a fully-realized document (as in XML::Reader). */
1603
- /* see https://github.com/sparklemotion/nokogiri/issues/95 */
1604
- /* and https://github.com/sparklemotion/nokogiri/issues/439 */
1605
- doc = node->doc;
1606
- if (doc->type == XML_DOCUMENT_FRAG_NODE) { doc = doc->doc; }
1607
- node_has_a_document = DOC_RUBY_OBJECT_TEST(doc);
1608
-
1609
- if(node->_private && node_has_a_document) {
1610
- return (VALUE)node->_private;
1611
- }
1612
-
1613
- if(!RTEST(klass)) {
1614
- switch(node->type) {
1615
- case XML_ELEMENT_NODE:
1616
- klass = cNokogiriXmlElement;
1617
- break;
1618
- case XML_TEXT_NODE:
1619
- klass = cNokogiriXmlText;
1620
- break;
1621
- case XML_ATTRIBUTE_NODE:
1622
- klass = cNokogiriXmlAttr;
1623
- break;
1624
- case XML_ENTITY_REF_NODE:
1625
- klass = cNokogiriXmlEntityReference;
1626
- break;
1627
- case XML_COMMENT_NODE:
1628
- klass = cNokogiriXmlComment;
1629
- break;
1630
- case XML_DOCUMENT_FRAG_NODE:
1631
- klass = cNokogiriXmlDocumentFragment;
1632
- break;
1633
- case XML_PI_NODE:
1634
- klass = cNokogiriXmlProcessingInstruction;
1635
- break;
1636
- case XML_ENTITY_DECL:
1637
- klass = cNokogiriXmlEntityDecl;
1638
- break;
1639
- case XML_CDATA_SECTION_NODE:
1640
- klass = cNokogiriXmlCData;
1641
- break;
1642
- case XML_DTD_NODE:
1643
- klass = cNokogiriXmlDtd;
1644
- break;
1645
- case XML_ATTRIBUTE_DECL:
1646
- klass = cNokogiriXmlAttributeDecl;
1647
- break;
1648
- case XML_ELEMENT_DECL:
1649
- klass = cNokogiriXmlElementDecl;
1650
- break;
1651
- default:
1652
- klass = cNokogiriXmlNode;
1653
- }
1654
- }
1655
-
1656
- mark_method = node_has_a_document ? mark : NULL ;
1657
-
1658
- rb_node = Data_Wrap_Struct(klass, mark_method, debug_node_dealloc, node) ;
1659
- node->_private = (void *)rb_node;
1660
-
1661
- if (node_has_a_document) {
1662
- document = DOC_RUBY_OBJECT(doc);
1663
- node_cache = DOC_NODE_CACHE(doc);
1664
- rb_ary_push(node_cache, rb_node);
1665
- rb_funcall(document, decorate, 1, rb_node);
1666
- }
1667
-
1668
- return rb_node ;
1669
- }
1670
-
1671
-
1672
- void Nokogiri_xml_node_properties(xmlNodePtr node, VALUE attr_list)
1673
- {
1674
- xmlAttrPtr prop;
1675
- prop = node->properties ;
1676
- while (prop != NULL) {
1677
- rb_ary_push(attr_list, Nokogiri_wrap_xml_node(Qnil, (xmlNodePtr)prop));
1678
- prop = prop->next ;
1679
- }
1680
- }
1681
-
1682
- VALUE cNokogiriXmlNode ;
1683
- VALUE cNokogiriXmlElement ;
1684
-
1685
- void init_xml_node()
1686
- {
1687
- VALUE nokogiri = rb_define_module("Nokogiri");
1688
- VALUE xml = rb_define_module_under(nokogiri, "XML");
1689
- VALUE klass = rb_define_class_under(xml, "Node", rb_cObject);
1690
-
1691
- cNokogiriXmlNode = klass;
1692
-
1693
- cNokogiriXmlElement = rb_define_class_under(xml, "Element", klass);
1694
-
1695
- rb_define_singleton_method(klass, "new", new, -1);
1696
-
1697
- rb_define_method(klass, "add_namespace_definition", add_namespace_definition, 2);
1698
- rb_define_method(klass, "node_name", get_name, 0);
1699
- rb_define_method(klass, "document", document, 0);
1700
- rb_define_method(klass, "node_name=", set_name, 1);
1701
- rb_define_method(klass, "parent", get_parent, 0);
1702
- rb_define_method(klass, "child", child, 0);
1703
- rb_define_method(klass, "first_element_child", first_element_child, 0);
1704
- rb_define_method(klass, "last_element_child", last_element_child, 0);
1705
- rb_define_method(klass, "children", children, 0);
1706
- rb_define_method(klass, "element_children", element_children, 0);
1707
- rb_define_method(klass, "next_sibling", next_sibling, 0);
1708
- rb_define_method(klass, "previous_sibling", previous_sibling, 0);
1709
- rb_define_method(klass, "next_element", next_element, 0);
1710
- rb_define_method(klass, "previous_element", previous_element, 0);
1711
- rb_define_method(klass, "node_type", node_type, 0);
1712
- rb_define_method(klass, "path", path, 0);
1713
- rb_define_method(klass, "key?", key_eh, 1);
1714
- rb_define_method(klass, "namespaced_key?", namespaced_key_eh, 2);
1715
- rb_define_method(klass, "blank?", blank_eh, 0);
1716
- rb_define_method(klass, "attribute_nodes", attribute_nodes, 0);
1717
- rb_define_method(klass, "attribute", attr, 1);
1718
- rb_define_method(klass, "attribute_with_ns", attribute_with_ns, 2);
1719
- rb_define_method(klass, "namespace", namespace, 0);
1720
- rb_define_method(klass, "namespace_definitions", namespace_definitions, 0);
1721
- rb_define_method(klass, "namespace_scopes", namespace_scopes, 0);
1722
- rb_define_method(klass, "encode_special_chars", encode_special_chars, 1);
1723
- rb_define_method(klass, "dup", duplicate_node, -1);
1724
- rb_define_method(klass, "unlink", unlink_node, 0);
1725
- rb_define_method(klass, "internal_subset", internal_subset, 0);
1726
- rb_define_method(klass, "external_subset", external_subset, 0);
1727
- rb_define_method(klass, "create_internal_subset", create_internal_subset, 3);
1728
- rb_define_method(klass, "create_external_subset", create_external_subset, 3);
1729
- rb_define_method(klass, "pointer_id", pointer_id, 0);
1730
- rb_define_method(klass, "line", line, 0);
1731
- rb_define_method(klass, "content", get_native_content, 0);
1732
- rb_define_method(klass, "native_content=", set_native_content, 1);
1733
- rb_define_method(klass, "lang", get_lang, 0);
1734
- rb_define_method(klass, "lang=", set_lang, 1);
1735
-
1736
- rb_define_private_method(klass, "process_xincludes", process_xincludes, 1);
1737
- rb_define_private_method(klass, "in_context", in_context, 2);
1738
- rb_define_private_method(klass, "add_child_node", add_child, 1);
1739
- rb_define_private_method(klass, "add_previous_sibling_node", add_previous_sibling, 1);
1740
- rb_define_private_method(klass, "add_next_sibling_node", add_next_sibling, 1);
1741
- rb_define_private_method(klass, "replace_node", replace, 1);
1742
- rb_define_private_method(klass, "dump_html", dump_html, 0);
1743
- rb_define_private_method(klass, "native_write_to", native_write_to, 4);
1744
- rb_define_private_method(klass, "get", get, 1);
1745
- rb_define_private_method(klass, "set", set, 2);
1746
- rb_define_private_method(klass, "set_namespace", set_namespace, 1);
1747
- rb_define_private_method(klass, "compare", compare, 1);
1748
-
1749
- decorate = rb_intern("decorate");
1750
- decorate_bang = rb_intern("decorate!");
1751
- }
1752
-
1753
- /* vim: set noet sw=4 sws=4 */