video_chat_get 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (462) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +6 -1
  4. data/lib/requests/request.rb +1 -1
  5. data/lib/site_list/mildom_analyze.rb +1 -0
  6. data/lib/site_list/openrec_analyze.rb +1 -0
  7. data/lib/site_list/twitcasting_analyze.rb +1 -0
  8. data/lib/site_list/youtubelive_analyze.rb +60 -52
  9. data/lib/video_chat_get/version.rb +1 -1
  10. 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
  11. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem.build_complete +0 -0
  12. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem_make 2.out +13 -0
  13. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/gem_make.out +13 -0
  14. 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
  15. 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
  16. 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
  17. 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
  18. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/mkmf 2.log +60 -0
  19. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/json-2.3.0/mkmf.log +60 -0
  20. 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
  21. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem.build_complete +0 -0
  22. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem_make 2.out +155 -0
  23. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/gem_make.out +155 -0
  24. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/mkmf 2.log +542 -0
  25. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/mkmf.log +542 -0
  26. 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
  27. data/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/nokogiri-1.10.9/nokogiri/nokogiri.bundle +0 -0
  28. 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
  29. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/Makefile 2 +199 -0
  30. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/fbuffer/fbuffer 2.h +187 -0
  31. 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
  32. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/Makefile 2 +265 -0
  33. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/depend 2 +1 -0
  34. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/extconf 2.rb +4 -0
  35. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/generator 2.c +1499 -0
  36. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/generator/generator 2.h +171 -0
  37. 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
  38. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/Makefile 2 +265 -0
  39. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/depend 2 +1 -0
  40. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/extconf 2.rb +6 -0
  41. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.c +2136 -0
  42. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.h +91 -0
  43. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/ext/parser/parser 2.rl +896 -0
  44. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/ext/json/extconf 2.rb +2 -0
  45. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/install 2.rb +23 -0
  46. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/ByteListTranscoder 2.java +166 -0
  47. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Generator 2.java +466 -0
  48. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorMethods 2.java +231 -0
  49. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorService 2.java +42 -0
  50. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/GeneratorState 2.java +490 -0
  51. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/OptionsReader 2.java +113 -0
  52. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Parser 2.java +2362 -0
  53. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Parser 2.rl +893 -0
  54. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/ParserService 2.java +34 -0
  55. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/RuntimeInfo 2.java +116 -0
  56. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/StringDecoder 2.java +166 -0
  57. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/StringEncoder 2.java +111 -0
  58. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/java/src/json/ext/Utils 2.java +88 -0
  59. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json 2.gemspec +0 -0
  60. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json-java 2.gemspec +37 -0
  61. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/json_pure 2.gemspec +38 -0
  62. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json 2.rb +63 -0
  63. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/bigdecimal 2.rb +29 -0
  64. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/complex 2.rb +29 -0
  65. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/core 2.rb +12 -0
  66. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/date 2.rb +34 -0
  67. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/date_time 2.rb +50 -0
  68. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/exception 2.rb +31 -0
  69. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/ostruct 2.rb +31 -0
  70. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/range 2.rb +29 -0
  71. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/rational 2.rb +28 -0
  72. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/regexp 2.rb +30 -0
  73. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/set 2.rb +29 -0
  74. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/struct 2.rb +30 -0
  75. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/symbol 2.rb +25 -0
  76. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/add/time 2.rb +38 -0
  77. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/common 2.rb +456 -0
  78. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/ext 2.rb +15 -0
  79. 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
  80. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/generic_object 2.rb +71 -0
  81. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure 2.rb +15 -0
  82. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure/generator 2.rb +459 -0
  83. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/pure/parser 2.rb +319 -0
  84. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/lib/json/version 2.rb +9 -0
  85. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/references/rfc7159 2.txt +899 -0
  86. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail10 2.json +1 -0
  87. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail11 2.json +1 -0
  88. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail12 2.json +1 -0
  89. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail13 2.json +1 -0
  90. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail14 2.json +1 -0
  91. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail18 2.json +1 -0
  92. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail19 2.json +1 -0
  93. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail2 2.json +1 -0
  94. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail20 2.json +1 -0
  95. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail21 2.json +1 -0
  96. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail22 2.json +1 -0
  97. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail23 2.json +1 -0
  98. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail24 2.json +1 -0
  99. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail25 2.json +1 -0
  100. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail27 2.json +2 -0
  101. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail28 2.json +2 -0
  102. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail3 2.json +1 -0
  103. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail4 2.json +1 -0
  104. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail5 2.json +1 -0
  105. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail6 2.json +1 -0
  106. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail7 2.json +1 -0
  107. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail8 2.json +1 -0
  108. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/fail9 2.json +1 -0
  109. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/obsolete_fail1 2.json +1 -0
  110. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass1 2.json +56 -0
  111. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass15 2.json +1 -0
  112. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass16 2.json +1 -0
  113. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass17 2.json +1 -0
  114. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass2 2.json +1 -0
  115. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass26 2.json +1 -0
  116. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/fixtures/pass3 2.json +6 -0
  117. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_addition_test 2.rb +203 -0
  118. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_common_interface_test 2.rb +126 -0
  119. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_encoding_test 2.rb +107 -0
  120. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_ext_parser_test 2.rb +15 -0
  121. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_fixtures_test 2.rb +32 -0
  122. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_generator_test 2.rb +421 -0
  123. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_generic_object_test 2.rb +82 -0
  124. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_parser_test 2.rb +472 -0
  125. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/json_string_matching_test 2.rb +38 -0
  126. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tests/test_helper 2.rb +17 -0
  127. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/diff 2.sh +18 -0
  128. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/fuzz 2.rb +131 -0
  129. data/vendor/bundle/ruby/2.5.0/gems/json-2.3.0/tools/server 2.rb +62 -0
  130. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/LICENSE 2.md +9 -0
  131. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/LICENSE-DEPENDENCIES 2.md +1614 -0
  132. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/README 2.md +198 -0
  133. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/bin/nokogiri 2 +118 -0
  134. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/dependencies 2.yml +74 -0
  135. 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
  136. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/Makefile +16 -15
  137. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/Makefile 2 +626 -0
  138. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/depend 2 +358 -0
  139. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/extconf 2.rb +686 -0
  140. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.c +170 -0
  141. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.h +10 -0
  142. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document 2.o +0 -0
  143. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_document.o +0 -0
  144. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.c +279 -0
  145. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.h +10 -0
  146. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description 2.o +0 -0
  147. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_element_description.o +0 -0
  148. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.c +32 -0
  149. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.h +8 -0
  150. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup 2.o +0 -0
  151. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_entity_lookup.o +0 -0
  152. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.c +116 -0
  153. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.h +11 -0
  154. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context 2.o +0 -0
  155. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_parser_context.o +0 -0
  156. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.c +87 -0
  157. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.h +9 -0
  158. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser 2.o +0 -0
  159. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/html_sax_push_parser.o +0 -0
  160. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.bundle +0 -0
  161. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.c +141 -0
  162. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.h +121 -0
  163. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri 2.o +0 -0
  164. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.bundle +0 -0
  165. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/nokogiri.o +0 -0
  166. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.c +103 -0
  167. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.h +9 -0
  168. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr 2.o +0 -0
  169. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attr.o +0 -0
  170. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.c +70 -0
  171. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.h +9 -0
  172. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl 2.o +0 -0
  173. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_attribute_decl.o +0 -0
  174. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.c +62 -0
  175. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.h +9 -0
  176. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata 2.o +0 -0
  177. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_cdata.o +0 -0
  178. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.c +69 -0
  179. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.h +9 -0
  180. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment 2.o +0 -0
  181. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_comment.o +0 -0
  182. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.c +608 -0
  183. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.h +23 -0
  184. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document 2.o +0 -0
  185. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document.o +0 -0
  186. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.c +48 -0
  187. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.h +10 -0
  188. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment 2.o +0 -0
  189. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_document_fragment.o +0 -0
  190. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.c +202 -0
  191. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.h +10 -0
  192. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd 2.o +0 -0
  193. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_dtd.o +0 -0
  194. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.c +123 -0
  195. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.h +10 -0
  196. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content 2.o +0 -0
  197. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_content.o +0 -0
  198. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.c +69 -0
  199. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.h +9 -0
  200. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 2.o +0 -0
  201. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl 3.h +9 -0
  202. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_element_decl.o +0 -0
  203. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.c +79 -0
  204. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.h +8 -0
  205. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 2.o +0 -0
  206. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.c +79 -0
  207. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.h +8 -0
  208. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler 3.o +0 -0
  209. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_encoding_handler.o +0 -0
  210. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.c +110 -0
  211. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.h +10 -0
  212. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 2.o +0 -0
  213. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 3.c +110 -0
  214. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl 3.h +10 -0
  215. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_decl.o +0 -0
  216. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.c +52 -0
  217. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.h +9 -0
  218. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 2.o +0 -0
  219. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 3.c +52 -0
  220. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference 3.h +9 -0
  221. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_entity_reference.o +0 -0
  222. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.c +61 -0
  223. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.h +11 -0
  224. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 2.o +0 -0
  225. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 3.c +61 -0
  226. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io 3.h +11 -0
  227. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_io.o +0 -0
  228. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.c +112 -0
  229. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.h +12 -0
  230. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 2.o +0 -0
  231. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.c +112 -0
  232. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.h +12 -0
  233. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_libxml2_hacks 3.o +0 -0
  234. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.c +111 -0
  235. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.h +14 -0
  236. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 2.o +0 -0
  237. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.c +111 -0
  238. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.h +14 -0
  239. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace 3.o +0 -0
  240. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_namespace.o +0 -0
  241. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 2.c +1753 -0
  242. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node 2.h +13 -0
  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 +13 -0
  245. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node.o +0 -0
  246. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.c +486 -0
  247. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.h +12 -0
  248. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 2.o +0 -0
  249. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 3.c +486 -0
  250. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set 3.h +12 -0
  251. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_node_set.o +0 -0
  252. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.c +56 -0
  253. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.h +9 -0
  254. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 2.o +0 -0
  255. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 3.c +56 -0
  256. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction 3.h +9 -0
  257. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_processing_instruction.o +0 -0
  258. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.c +668 -0
  259. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.h +10 -0
  260. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 2.o +0 -0
  261. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 3.h +10 -0
  262. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader 3.o +0 -0
  263. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_reader.o +0 -0
  264. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.c +161 -0
  265. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.h +9 -0
  266. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 2.o +0 -0
  267. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 3.c +161 -0
  268. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng 3.h +9 -0
  269. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_relax_ng.o +0 -0
  270. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.c +310 -0
  271. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.h +39 -0
  272. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 2.o +0 -0
  273. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 3.c +310 -0
  274. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser 3.h +39 -0
  275. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser.o +0 -0
  276. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.c +262 -0
  277. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.h +10 -0
  278. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 2.o +0 -0
  279. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.c +262 -0
  280. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.h +10 -0
  281. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context 3.o +0 -0
  282. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_parser_context.o +0 -0
  283. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.c +159 -0
  284. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.h +9 -0
  285. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 2.o +0 -0
  286. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 3.c +159 -0
  287. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser 3.h +9 -0
  288. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_sax_push_parser.o +0 -0
  289. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.c +234 -0
  290. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.h +9 -0
  291. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 2.o +0 -0
  292. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 3.c +234 -0
  293. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema 3.h +9 -0
  294. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_schema.o +0 -0
  295. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.c +64 -0
  296. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.h +13 -0
  297. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 2.o +0 -0
  298. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.c +64 -0
  299. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.h +13 -0
  300. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error 3.o +0 -0
  301. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_syntax_error.o +0 -0
  302. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.c +52 -0
  303. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.h +9 -0
  304. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 2.o +0 -0
  305. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 3.c +52 -0
  306. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text 3.h +9 -0
  307. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_text.o +0 -0
  308. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.c +298 -0
  309. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.h +10 -0
  310. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 2.o +0 -0
  311. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 3.h +10 -0
  312. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context 3.o +0 -0
  313. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xml_xpath_context.o +0 -0
  314. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.c +270 -0
  315. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.h +14 -0
  316. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 2.o +0 -0
  317. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.c +270 -0
  318. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.h +14 -0
  319. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet 3.o +0 -0
  320. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/ext/nokogiri/xslt_stylesheet.o +0 -0
  321. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri 2.rb +144 -0
  322. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri 3.rb +144 -0
  323. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css 2.rb +27 -0
  324. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css 3.rb +27 -0
  325. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/node 2.rb +52 -0
  326. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/node 3.rb +52 -0
  327. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 2.rb +750 -0
  328. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 2.y +272 -0
  329. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 3.rb +750 -0
  330. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser 3.y +272 -0
  331. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser_extras 2.rb +91 -0
  332. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/parser_extras 3.rb +91 -0
  333. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/syntax_error 2.rb +7 -0
  334. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/syntax_error 3.rb +7 -0
  335. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 2.rb +153 -0
  336. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 2.rex +55 -0
  337. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 3.rb +153 -0
  338. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/tokenizer 3.rex +55 -0
  339. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/xpath_visitor 2.rb +230 -0
  340. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/css/xpath_visitor 3.rb +230 -0
  341. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/decorators/slop 2.rb +42 -0
  342. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/decorators/slop 3.rb +42 -0
  343. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html 2.rb +37 -0
  344. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html 3.rb +37 -0
  345. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/builder 2.rb +35 -0
  346. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/builder 3.rb +35 -0
  347. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document 2.rb +335 -0
  348. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document 3.rb +335 -0
  349. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document_fragment 2.rb +49 -0
  350. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/document_fragment 3.rb +49 -0
  351. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description 2.rb +23 -0
  352. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description 3.rb +23 -0
  353. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description_defaults 2.rb +671 -0
  354. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/element_description_defaults 3.rb +671 -0
  355. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/entity_lookup 2.rb +13 -0
  356. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/entity_lookup 3.rb +13 -0
  357. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser 2.rb +62 -0
  358. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser 3.rb +62 -0
  359. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser_context 2.rb +16 -0
  360. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/parser_context 3.rb +16 -0
  361. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/push_parser 2.rb +36 -0
  362. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/html/sax/push_parser 3.rb +36 -0
  363. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri 2.bundle +0 -0
  364. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri 3.bundle +0 -0
  365. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/nokogiri.bundle +0 -0
  366. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/syntax_error 2.rb +4 -0
  367. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/syntax_error 3.rb +4 -0
  368. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/version 2.rb +109 -0
  369. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/version 3.rb +109 -0
  370. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml 2.rb +75 -0
  371. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml 3.rb +75 -0
  372. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attr 2.rb +14 -0
  373. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attr 3.rb +14 -0
  374. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attribute_decl 2.rb +18 -0
  375. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/attribute_decl 3.rb +18 -0
  376. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/builder 2.rb +446 -0
  377. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/builder 3.rb +446 -0
  378. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/cdata 2.rb +11 -0
  379. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/cdata 3.rb +11 -0
  380. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/character_data 2.rb +7 -0
  381. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/character_data 3.rb +7 -0
  382. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document 2.rb +285 -0
  383. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document 3.rb +285 -0
  384. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document_fragment 2.rb +160 -0
  385. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/document_fragment 3.rb +160 -0
  386. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/dtd 2.rb +32 -0
  387. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/dtd 3.rb +32 -0
  388. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_content 2.rb +36 -0
  389. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_content 3.rb +36 -0
  390. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_decl 2.rb +13 -0
  391. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/element_decl 3.rb +13 -0
  392. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_decl 2.rb +19 -0
  393. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_decl 3.rb +19 -0
  394. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_reference 2.rb +18 -0
  395. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/entity_reference 3.rb +18 -0
  396. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/namespace 2.rb +13 -0
  397. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/namespace 3.rb +13 -0
  398. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node 2.rb +902 -0
  399. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node 3.rb +902 -0
  400. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node/save_options 2.rb +61 -0
  401. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node/save_options 3.rb +61 -0
  402. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node_set 2.rb +371 -0
  403. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/node_set 3.rb +371 -0
  404. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/notation 2.rb +6 -0
  405. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/notation 3.rb +6 -0
  406. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/parse_options 2.rb +120 -0
  407. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/parse_options 3.rb +120 -0
  408. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp 2.rb +2 -0
  409. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp 3.rb +2 -0
  410. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/character_data 2.rb +18 -0
  411. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/character_data 3.rb +18 -0
  412. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/node 2.rb +56 -0
  413. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/pp/node 3.rb +56 -0
  414. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/processing_instruction 2.rb +8 -0
  415. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/processing_instruction 3.rb +8 -0
  416. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/reader 2.rb +112 -0
  417. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/reader 3.rb +112 -0
  418. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/relax_ng 2.rb +32 -0
  419. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/relax_ng 3.rb +32 -0
  420. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax 2.rb +4 -0
  421. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax 3.rb +4 -0
  422. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/document 2.rb +171 -0
  423. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/document 3.rb +171 -0
  424. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser 2.rb +122 -0
  425. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser 3.rb +122 -0
  426. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser_context 2.rb +16 -0
  427. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/parser_context 3.rb +16 -0
  428. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/push_parser 2.rb +60 -0
  429. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/sax/push_parser 3.rb +60 -0
  430. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/schema 2.rb +63 -0
  431. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/schema 3.rb +63 -0
  432. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/searchable 2.rb +230 -0
  433. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/searchable 3.rb +230 -0
  434. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/syntax_error 2.rb +70 -0
  435. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/syntax_error 3.rb +70 -0
  436. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/text 2.rb +9 -0
  437. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/text 3.rb +9 -0
  438. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath 2.rb +10 -0
  439. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath 3.rb +10 -0
  440. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath/syntax_error 2.rb +11 -0
  441. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath/syntax_error 3.rb +11 -0
  442. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath_context 2.rb +16 -0
  443. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xml/xpath_context 3.rb +16 -0
  444. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt 2.rb +56 -0
  445. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt 3.rb +56 -0
  446. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt/stylesheet 2.rb +25 -0
  447. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/nokogiri/xslt/stylesheet 3.rb +25 -0
  448. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/xsd/xmlparser/nokogiri 2.rb +102 -0
  449. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/lib/xsd/xmlparser/nokogiri 3.rb +102 -0
  450. 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 +78 -0
  451. 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 +78 -0
  452. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0002-Remove-script-macro-support 2.patch +40 -0
  453. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0002-Remove-script-macro-support 3.patch +40 -0
  454. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi 2.patch +44 -0
  455. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0003-Update-entities-to-remove-handling-of-ssi 3.patch +44 -0
  456. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0004-libxml2.la-is-in-top_builddir 2.patch +25 -0
  457. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0004-libxml2.la-is-in-top_builddir 3.patch +25 -0
  458. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities 2.patch +32 -0
  459. data/vendor/bundle/ruby/2.5.0/gems/nokogiri-1.10.9/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities 3.patch +32 -0
  460. data/vendor/bundle/ruby/2.5.0/specifications/json-2.3.0.gemspec +0 -0
  461. data/vendor/bundle/ruby/2.5.0/specifications/nokogiri-1.10.9.gemspec +2 -2
  462. metadata +493 -3
@@ -0,0 +1,113 @@
1
+ /*
2
+ * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
3
+ *
4
+ * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
5
+ */
6
+ package json.ext;
7
+
8
+ import org.jruby.Ruby;
9
+ import org.jruby.RubyClass;
10
+ import org.jruby.RubyHash;
11
+ import org.jruby.RubyNumeric;
12
+ import org.jruby.RubyString;
13
+ import org.jruby.runtime.ThreadContext;
14
+ import org.jruby.runtime.builtin.IRubyObject;
15
+ import org.jruby.util.ByteList;
16
+
17
+ final class OptionsReader {
18
+ private final ThreadContext context;
19
+ private final Ruby runtime;
20
+ private final RubyHash opts;
21
+ private RuntimeInfo info;
22
+
23
+ OptionsReader(ThreadContext context, IRubyObject vOpts) {
24
+ this.context = context;
25
+ this.runtime = context.getRuntime();
26
+ if (vOpts == null || vOpts.isNil()) {
27
+ opts = null;
28
+ } else if (vOpts.respondsTo("to_hash")) {
29
+ opts = vOpts.convertToHash();
30
+ } else if (vOpts.respondsTo("to_h")) {
31
+ opts = vOpts.callMethod(context, "to_h").convertToHash();
32
+ } else {
33
+ opts = vOpts.convertToHash(); /* Should just raise the correct TypeError */
34
+ }
35
+ }
36
+
37
+ private RuntimeInfo getRuntimeInfo() {
38
+ if (info != null) return info;
39
+ info = RuntimeInfo.forRuntime(runtime);
40
+ return info;
41
+ }
42
+
43
+ /**
44
+ * Efficiently looks up items with a {@link RubySymbol Symbol} key
45
+ * @param key The Symbol name to look up for
46
+ * @return The item in the {@link RubyHash Hash}, or <code>null</code>
47
+ * if not found
48
+ */
49
+ IRubyObject get(String key) {
50
+ return opts == null ? null : opts.fastARef(runtime.newSymbol(key));
51
+ }
52
+
53
+ boolean getBool(String key, boolean defaultValue) {
54
+ IRubyObject value = get(key);
55
+ return value == null ? defaultValue : value.isTrue();
56
+ }
57
+
58
+ int getInt(String key, int defaultValue) {
59
+ IRubyObject value = get(key);
60
+ if (value == null) return defaultValue;
61
+ if (!value.isTrue()) return 0;
62
+ return RubyNumeric.fix2int(value);
63
+ }
64
+
65
+ /**
66
+ * Reads the setting from the options hash. If no entry is set for this
67
+ * key or if it evaluates to <code>false</code>, returns null; attempts to
68
+ * coerce the value to {@link RubyString String} otherwise.
69
+ * @param key The Symbol name to look up for
70
+ * @return <code>null</code> if the key is not in the Hash or if
71
+ * its value evaluates to <code>false</code>
72
+ * @throws RaiseException <code>TypeError</code> if the value does not
73
+ * evaluate to <code>false</code> and can't be
74
+ * converted to string
75
+ */
76
+ ByteList getString(String key) {
77
+ RubyString str = getString(key, null);
78
+ return str == null ? null : str.getByteList().dup();
79
+ }
80
+
81
+ RubyString getString(String key, RubyString defaultValue) {
82
+ IRubyObject value = get(key);
83
+ if (value == null || !value.isTrue()) return defaultValue;
84
+
85
+ RubyString str = value.convertToString();
86
+ RuntimeInfo info = getRuntimeInfo();
87
+ if (str.encoding(context) != info.utf8.get()) {
88
+ str = (RubyString)str.encode(context, info.utf8.get());
89
+ }
90
+ return str;
91
+ }
92
+
93
+ /**
94
+ * Reads the setting from the options hash. If it is <code>nil</code> or
95
+ * undefined, returns the default value given.
96
+ * If not, ensures it is a RubyClass instance and shares the same
97
+ * allocator as the default value (i.e. for the basic types which have
98
+ * their specific allocators, this ensures the passed value is
99
+ * a subclass of them).
100
+ */
101
+ RubyClass getClass(String key, RubyClass defaultValue) {
102
+ IRubyObject value = get(key);
103
+
104
+ if (value == null || value.isNil()) return defaultValue;
105
+ return (RubyClass)value;
106
+ }
107
+
108
+ public RubyHash getHash(String key) {
109
+ IRubyObject value = get(key);
110
+ if (value == null || value.isNil()) return new RubyHash(runtime);
111
+ return (RubyHash) value;
112
+ }
113
+ }
@@ -0,0 +1,2362 @@
1
+
2
+ // line 1 "Parser.rl"
3
+ /*
4
+ * This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
5
+ *
6
+ * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
7
+ */
8
+ package json.ext;
9
+
10
+ import org.jruby.Ruby;
11
+ import org.jruby.RubyArray;
12
+ import org.jruby.RubyClass;
13
+ import org.jruby.RubyEncoding;
14
+ import org.jruby.RubyFloat;
15
+ import org.jruby.RubyHash;
16
+ import org.jruby.RubyInteger;
17
+ import org.jruby.RubyModule;
18
+ import org.jruby.RubyNumeric;
19
+ import org.jruby.RubyObject;
20
+ import org.jruby.RubyString;
21
+ import org.jruby.anno.JRubyMethod;
22
+ import org.jruby.exceptions.JumpException;
23
+ import org.jruby.exceptions.RaiseException;
24
+ import org.jruby.runtime.Block;
25
+ import org.jruby.runtime.ObjectAllocator;
26
+ import org.jruby.runtime.ThreadContext;
27
+ import org.jruby.runtime.Visibility;
28
+ import org.jruby.runtime.builtin.IRubyObject;
29
+ import org.jruby.util.ByteList;
30
+ import org.jruby.util.ConvertBytes;
31
+ import static org.jruby.util.ConvertDouble.DoubleConverter;
32
+
33
+ /**
34
+ * The <code>JSON::Ext::Parser</code> class.
35
+ *
36
+ * <p>This is the JSON parser implemented as a Java class. To use it as the
37
+ * standard parser, set
38
+ * <pre>JSON.parser = JSON::Ext::Parser</pre>
39
+ * This is performed for you when you <code>include "json/ext"</code>.
40
+ *
41
+ * <p>This class does not perform the actual parsing, just acts as an interface
42
+ * to Ruby code. When the {@link #parse()} method is invoked, a
43
+ * Parser.ParserSession object is instantiated, which handles the process.
44
+ *
45
+ * @author mernen
46
+ */
47
+ public class Parser extends RubyObject {
48
+ private final RuntimeInfo info;
49
+ private RubyString vSource;
50
+ private RubyString createId;
51
+ private boolean createAdditions;
52
+ private int maxNesting;
53
+ private boolean allowNaN;
54
+ private boolean symbolizeNames;
55
+ private RubyClass objectClass;
56
+ private RubyClass arrayClass;
57
+ private RubyClass decimalClass;
58
+ private RubyHash match_string;
59
+
60
+ private static final int DEFAULT_MAX_NESTING = 100;
61
+
62
+ private static final ByteList JSON_MINUS_INFINITY = new ByteList(ByteList.plain("-Infinity"));
63
+ // constant names in the JSON module containing those values
64
+ private static final String CONST_NAN = "NaN";
65
+ private static final String CONST_INFINITY = "Infinity";
66
+ private static final String CONST_MINUS_INFINITY = "MinusInfinity";
67
+
68
+ static final ObjectAllocator ALLOCATOR = new ObjectAllocator() {
69
+ public IRubyObject allocate(Ruby runtime, RubyClass klazz) {
70
+ return new Parser(runtime, klazz);
71
+ }
72
+ };
73
+
74
+ /**
75
+ * Multiple-value return for internal parser methods.
76
+ *
77
+ * <p>All the <code>parse<var>Stuff</var></code> methods return instances of
78
+ * <code>ParserResult</code> when successful, or <code>null</code> when
79
+ * there's a problem with the input data.
80
+ */
81
+ static final class ParserResult {
82
+ /**
83
+ * The result of the successful parsing. Should never be
84
+ * <code>null</code>.
85
+ */
86
+ IRubyObject result;
87
+ /**
88
+ * The point where the parser returned.
89
+ */
90
+ int p;
91
+
92
+ void update(IRubyObject result, int p) {
93
+ this.result = result;
94
+ this.p = p;
95
+ }
96
+ }
97
+
98
+ public Parser(Ruby runtime, RubyClass metaClass) {
99
+ super(runtime, metaClass);
100
+ info = RuntimeInfo.forRuntime(runtime);
101
+ }
102
+
103
+ /**
104
+ * <code>Parser.new(source, opts = {})</code>
105
+ *
106
+ * <p>Creates a new <code>JSON::Ext::Parser</code> instance for the string
107
+ * <code>source</code>.
108
+ * It will be configured by the <code>opts</code> Hash.
109
+ * <code>opts</code> can have the following keys:
110
+ *
111
+ * <dl>
112
+ * <dt><code>:max_nesting</code>
113
+ * <dd>The maximum depth of nesting allowed in the parsed data
114
+ * structures. Disable depth checking with <code>:max_nesting => false|nil|0</code>,
115
+ * it defaults to 100.
116
+ *
117
+ * <dt><code>:allow_nan</code>
118
+ * <dd>If set to <code>true</code>, allow <code>NaN</code>,
119
+ * <code>Infinity</code> and <code>-Infinity</code> in defiance of RFC 4627
120
+ * to be parsed by the Parser. This option defaults to <code>false</code>.
121
+ *
122
+ * <dt><code>:symbolize_names</code>
123
+ * <dd>If set to <code>true</code>, returns symbols for the names (keys) in
124
+ * a JSON object. Otherwise strings are returned, which is also the default.
125
+ *
126
+ * <dt><code>:create_additions</code>
127
+ * <dd>If set to <code>false</code>, the Parser doesn't create additions
128
+ * even if a matching class and <code>create_id</code> was found. This option
129
+ * defaults to <code>true</code>.
130
+ *
131
+ * <dt><code>:object_class</code>
132
+ * <dd>Defaults to Hash.
133
+ *
134
+ * <dt><code>:array_class</code>
135
+ * <dd>Defaults to Array.
136
+ *
137
+ * <dt><code>:decimal_class</code>
138
+ * <dd>Specifies which class to use instead of the default (Float) when
139
+ * parsing decimal numbers. This class must accept a single string argument
140
+ * in its constructor.
141
+ * </dl>
142
+ */
143
+ @JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
144
+ public static IRubyObject newInstance(IRubyObject clazz, IRubyObject[] args, Block block) {
145
+ Parser parser = (Parser)((RubyClass)clazz).allocate();
146
+
147
+ parser.callInit(args, block);
148
+
149
+ return parser;
150
+ }
151
+
152
+ @JRubyMethod(required = 1, optional = 1, visibility = Visibility.PRIVATE)
153
+ public IRubyObject initialize(ThreadContext context, IRubyObject[] args) {
154
+ Ruby runtime = context.getRuntime();
155
+ if (this.vSource != null) {
156
+ throw runtime.newTypeError("already initialized instance");
157
+ }
158
+
159
+ OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null);
160
+ this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
161
+ this.allowNaN = opts.getBool("allow_nan", false);
162
+ this.symbolizeNames = opts.getBool("symbolize_names", false);
163
+ this.createId = opts.getString("create_id", getCreateId(context));
164
+ this.createAdditions = opts.getBool("create_additions", false);
165
+ this.objectClass = opts.getClass("object_class", runtime.getHash());
166
+ this.arrayClass = opts.getClass("array_class", runtime.getArray());
167
+ this.decimalClass = opts.getClass("decimal_class", null);
168
+ this.match_string = opts.getHash("match_string");
169
+
170
+ if(symbolizeNames && createAdditions) {
171
+ throw runtime.newArgumentError(
172
+ "options :symbolize_names and :create_additions cannot be " +
173
+ " used in conjunction"
174
+ );
175
+ }
176
+ this.vSource = args[0].convertToString();
177
+ this.vSource = convertEncoding(context, vSource);
178
+
179
+ return this;
180
+ }
181
+
182
+ /**
183
+ * Checks the given string's encoding. If a non-UTF-8 encoding is detected,
184
+ * a converted copy is returned.
185
+ * Returns the source string if no conversion is needed.
186
+ */
187
+ private RubyString convertEncoding(ThreadContext context, RubyString source) {
188
+ RubyEncoding encoding = (RubyEncoding)source.encoding(context);
189
+ if (encoding == info.ascii8bit.get()) {
190
+ if (source.isFrozen()) {
191
+ source = (RubyString) source.dup();
192
+ }
193
+ source.force_encoding(context, info.utf8.get());
194
+ } else {
195
+ source = (RubyString) source.encode(context, info.utf8.get());
196
+ }
197
+ return source;
198
+ }
199
+
200
+ /**
201
+ * Checks the first four bytes of the given ByteList to infer its encoding,
202
+ * using the principle demonstrated on section 3 of RFC 4627 (JSON).
203
+ */
204
+ private static String sniffByteList(ByteList bl) {
205
+ if (bl.length() < 4) return null;
206
+ if (bl.get(0) == 0 && bl.get(2) == 0) {
207
+ return bl.get(1) == 0 ? "utf-32be" : "utf-16be";
208
+ }
209
+ if (bl.get(1) == 0 && bl.get(3) == 0) {
210
+ return bl.get(2) == 0 ? "utf-32le" : "utf-16le";
211
+ }
212
+ return null;
213
+ }
214
+
215
+ /**
216
+ * Assumes the given (binary) RubyString to be in the given encoding, then
217
+ * converts it to UTF-8.
218
+ */
219
+ private RubyString reinterpretEncoding(ThreadContext context,
220
+ RubyString str, String sniffedEncoding) {
221
+ RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding);
222
+ RubyEncoding targetEncoding = info.utf8.get();
223
+ RubyString dup = (RubyString)str.dup();
224
+ dup.force_encoding(context, actualEncoding);
225
+ return (RubyString)dup.encode_bang(context, targetEncoding);
226
+ }
227
+
228
+ /**
229
+ * <code>Parser#parse()</code>
230
+ *
231
+ * <p>Parses the current JSON text <code>source</code> and returns the
232
+ * complete data structure as a result.
233
+ */
234
+ @JRubyMethod
235
+ public IRubyObject parse(ThreadContext context) {
236
+ return new ParserSession(this, context, info).parse();
237
+ }
238
+
239
+ /**
240
+ * <code>Parser#source()</code>
241
+ *
242
+ * <p>Returns a copy of the current <code>source</code> string, that was
243
+ * used to construct this Parser.
244
+ */
245
+ @JRubyMethod(name = "source")
246
+ public IRubyObject source_get() {
247
+ return checkAndGetSource().dup();
248
+ }
249
+
250
+ public RubyString checkAndGetSource() {
251
+ if (vSource != null) {
252
+ return vSource;
253
+ } else {
254
+ throw getRuntime().newTypeError("uninitialized instance");
255
+ }
256
+ }
257
+
258
+ /**
259
+ * Queries <code>JSON.create_id</code>. Returns <code>null</code> if it is
260
+ * set to <code>nil</code> or <code>false</code>, and a String if not.
261
+ */
262
+ private RubyString getCreateId(ThreadContext context) {
263
+ IRubyObject v = info.jsonModule.get().callMethod(context, "create_id");
264
+ return v.isTrue() ? v.convertToString() : null;
265
+ }
266
+
267
+ /**
268
+ * A string parsing session.
269
+ *
270
+ * <p>Once a ParserSession is instantiated, the source string should not
271
+ * change until the parsing is complete. The ParserSession object assumes
272
+ * the source {@link RubyString} is still associated to its original
273
+ * {@link ByteList}, which in turn must still be bound to the same
274
+ * <code>byte[]</code> value (and on the same offset).
275
+ */
276
+ // Ragel uses lots of fall-through
277
+ @SuppressWarnings("fallthrough")
278
+ private static class ParserSession {
279
+ private final Parser parser;
280
+ private final ThreadContext context;
281
+ private final RuntimeInfo info;
282
+ private final ByteList byteList;
283
+ private final ByteList view;
284
+ private final byte[] data;
285
+ private final StringDecoder decoder;
286
+ private int currentNesting = 0;
287
+ private final DoubleConverter dc;
288
+
289
+ // initialization value for all state variables.
290
+ // no idea about the origins of this value, ask Flori ;)
291
+ private static final int EVIL = 0x666;
292
+
293
+ private ParserSession(Parser parser, ThreadContext context, RuntimeInfo info) {
294
+ this.parser = parser;
295
+ this.context = context;
296
+ this.info = info;
297
+ this.byteList = parser.checkAndGetSource().getByteList();
298
+ this.data = byteList.unsafeBytes();
299
+ this.view = new ByteList(data, false);
300
+ this.decoder = new StringDecoder(context);
301
+ this.dc = new DoubleConverter();
302
+ }
303
+
304
+ private RaiseException unexpectedToken(int absStart, int absEnd) {
305
+ RubyString msg = getRuntime().newString("unexpected token at '")
306
+ .cat(data, absStart, absEnd - absStart)
307
+ .cat((byte)'\'');
308
+ return newException(Utils.M_PARSER_ERROR, msg);
309
+ }
310
+
311
+ private Ruby getRuntime() {
312
+ return context.getRuntime();
313
+ }
314
+
315
+
316
+ // line 339 "Parser.rl"
317
+
318
+
319
+
320
+ // line 321 "Parser.java"
321
+ private static byte[] init__JSON_value_actions_0()
322
+ {
323
+ return new byte [] {
324
+ 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1,
325
+ 5, 1, 6, 1, 7, 1, 8, 1, 9
326
+ };
327
+ }
328
+
329
+ private static final byte _JSON_value_actions[] = init__JSON_value_actions_0();
330
+
331
+
332
+ private static byte[] init__JSON_value_key_offsets_0()
333
+ {
334
+ return new byte [] {
335
+ 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
336
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
337
+ };
338
+ }
339
+
340
+ private static final byte _JSON_value_key_offsets[] = init__JSON_value_key_offsets_0();
341
+
342
+
343
+ private static char[] init__JSON_value_trans_keys_0()
344
+ {
345
+ return new char [] {
346
+ 34, 45, 73, 78, 91, 102, 110, 116, 123, 48, 57, 110,
347
+ 102, 105, 110, 105, 116, 121, 97, 78, 97, 108, 115, 101,
348
+ 117, 108, 108, 114, 117, 101, 0
349
+ };
350
+ }
351
+
352
+ private static final char _JSON_value_trans_keys[] = init__JSON_value_trans_keys_0();
353
+
354
+
355
+ private static byte[] init__JSON_value_single_lengths_0()
356
+ {
357
+ return new byte [] {
358
+ 0, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
359
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0
360
+ };
361
+ }
362
+
363
+ private static final byte _JSON_value_single_lengths[] = init__JSON_value_single_lengths_0();
364
+
365
+
366
+ private static byte[] init__JSON_value_range_lengths_0()
367
+ {
368
+ return new byte [] {
369
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
370
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
371
+ };
372
+ }
373
+
374
+ private static final byte _JSON_value_range_lengths[] = init__JSON_value_range_lengths_0();
375
+
376
+
377
+ private static byte[] init__JSON_value_index_offsets_0()
378
+ {
379
+ return new byte [] {
380
+ 0, 0, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29,
381
+ 31, 33, 35, 37, 39, 41, 43, 45, 47, 49
382
+ };
383
+ }
384
+
385
+ private static final byte _JSON_value_index_offsets[] = init__JSON_value_index_offsets_0();
386
+
387
+
388
+ private static byte[] init__JSON_value_trans_targs_0()
389
+ {
390
+ return new byte [] {
391
+ 21, 21, 2, 9, 21, 11, 15, 18, 21, 21, 0, 3,
392
+ 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 21,
393
+ 0, 10, 0, 21, 0, 12, 0, 13, 0, 14, 0, 21,
394
+ 0, 16, 0, 17, 0, 21, 0, 19, 0, 20, 0, 21,
395
+ 0, 0, 0
396
+ };
397
+ }
398
+
399
+ private static final byte _JSON_value_trans_targs[] = init__JSON_value_trans_targs_0();
400
+
401
+
402
+ private static byte[] init__JSON_value_trans_actions_0()
403
+ {
404
+ return new byte [] {
405
+ 13, 11, 0, 0, 15, 0, 0, 0, 17, 11, 0, 0,
406
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
407
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3,
408
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5,
409
+ 0, 0, 0
410
+ };
411
+ }
412
+
413
+ private static final byte _JSON_value_trans_actions[] = init__JSON_value_trans_actions_0();
414
+
415
+
416
+ private static byte[] init__JSON_value_from_state_actions_0()
417
+ {
418
+ return new byte [] {
419
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 19
421
+ };
422
+ }
423
+
424
+ private static final byte _JSON_value_from_state_actions[] = init__JSON_value_from_state_actions_0();
425
+
426
+
427
+ static final int JSON_value_start = 1;
428
+ static final int JSON_value_first_final = 21;
429
+ static final int JSON_value_error = 0;
430
+
431
+ static final int JSON_value_en_main = 1;
432
+
433
+
434
+ // line 445 "Parser.rl"
435
+
436
+
437
+ void parseValue(ParserResult res, int p, int pe) {
438
+ int cs = EVIL;
439
+ IRubyObject result = null;
440
+
441
+
442
+ // line 443 "Parser.java"
443
+ {
444
+ cs = JSON_value_start;
445
+ }
446
+
447
+ // line 452 "Parser.rl"
448
+
449
+ // line 450 "Parser.java"
450
+ {
451
+ int _klen;
452
+ int _trans = 0;
453
+ int _acts;
454
+ int _nacts;
455
+ int _keys;
456
+ int _goto_targ = 0;
457
+
458
+ _goto: while (true) {
459
+ switch ( _goto_targ ) {
460
+ case 0:
461
+ if ( p == pe ) {
462
+ _goto_targ = 4;
463
+ continue _goto;
464
+ }
465
+ if ( cs == 0 ) {
466
+ _goto_targ = 5;
467
+ continue _goto;
468
+ }
469
+ case 1:
470
+ _acts = _JSON_value_from_state_actions[cs];
471
+ _nacts = (int) _JSON_value_actions[_acts++];
472
+ while ( _nacts-- > 0 ) {
473
+ switch ( _JSON_value_actions[_acts++] ) {
474
+ case 9:
475
+ // line 430 "Parser.rl"
476
+ {
477
+ p--;
478
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
479
+ }
480
+ break;
481
+ // line 482 "Parser.java"
482
+ }
483
+ }
484
+
485
+ _match: do {
486
+ _keys = _JSON_value_key_offsets[cs];
487
+ _trans = _JSON_value_index_offsets[cs];
488
+ _klen = _JSON_value_single_lengths[cs];
489
+ if ( _klen > 0 ) {
490
+ int _lower = _keys;
491
+ int _mid;
492
+ int _upper = _keys + _klen - 1;
493
+ while (true) {
494
+ if ( _upper < _lower )
495
+ break;
496
+
497
+ _mid = _lower + ((_upper-_lower) >> 1);
498
+ if ( data[p] < _JSON_value_trans_keys[_mid] )
499
+ _upper = _mid - 1;
500
+ else if ( data[p] > _JSON_value_trans_keys[_mid] )
501
+ _lower = _mid + 1;
502
+ else {
503
+ _trans += (_mid - _keys);
504
+ break _match;
505
+ }
506
+ }
507
+ _keys += _klen;
508
+ _trans += _klen;
509
+ }
510
+
511
+ _klen = _JSON_value_range_lengths[cs];
512
+ if ( _klen > 0 ) {
513
+ int _lower = _keys;
514
+ int _mid;
515
+ int _upper = _keys + (_klen<<1) - 2;
516
+ while (true) {
517
+ if ( _upper < _lower )
518
+ break;
519
+
520
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
521
+ if ( data[p] < _JSON_value_trans_keys[_mid] )
522
+ _upper = _mid - 2;
523
+ else if ( data[p] > _JSON_value_trans_keys[_mid+1] )
524
+ _lower = _mid + 2;
525
+ else {
526
+ _trans += ((_mid - _keys)>>1);
527
+ break _match;
528
+ }
529
+ }
530
+ _trans += _klen;
531
+ }
532
+ } while (false);
533
+
534
+ cs = _JSON_value_trans_targs[_trans];
535
+
536
+ if ( _JSON_value_trans_actions[_trans] != 0 ) {
537
+ _acts = _JSON_value_trans_actions[_trans];
538
+ _nacts = (int) _JSON_value_actions[_acts++];
539
+ while ( _nacts-- > 0 )
540
+ {
541
+ switch ( _JSON_value_actions[_acts++] )
542
+ {
543
+ case 0:
544
+ // line 347 "Parser.rl"
545
+ {
546
+ result = getRuntime().getNil();
547
+ }
548
+ break;
549
+ case 1:
550
+ // line 350 "Parser.rl"
551
+ {
552
+ result = getRuntime().getFalse();
553
+ }
554
+ break;
555
+ case 2:
556
+ // line 353 "Parser.rl"
557
+ {
558
+ result = getRuntime().getTrue();
559
+ }
560
+ break;
561
+ case 3:
562
+ // line 356 "Parser.rl"
563
+ {
564
+ if (parser.allowNaN) {
565
+ result = getConstant(CONST_NAN);
566
+ } else {
567
+ throw unexpectedToken(p - 2, pe);
568
+ }
569
+ }
570
+ break;
571
+ case 4:
572
+ // line 363 "Parser.rl"
573
+ {
574
+ if (parser.allowNaN) {
575
+ result = getConstant(CONST_INFINITY);
576
+ } else {
577
+ throw unexpectedToken(p - 7, pe);
578
+ }
579
+ }
580
+ break;
581
+ case 5:
582
+ // line 370 "Parser.rl"
583
+ {
584
+ if (pe > p + 8 &&
585
+ absSubSequence(p, p + 9).equals(JSON_MINUS_INFINITY)) {
586
+
587
+ if (parser.allowNaN) {
588
+ result = getConstant(CONST_MINUS_INFINITY);
589
+ {p = (( p + 10))-1;}
590
+ p--;
591
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
592
+ } else {
593
+ throw unexpectedToken(p, pe);
594
+ }
595
+ }
596
+ parseFloat(res, p, pe);
597
+ if (res.result != null) {
598
+ result = res.result;
599
+ {p = (( res.p))-1;}
600
+ }
601
+ parseInteger(res, p, pe);
602
+ if (res.result != null) {
603
+ result = res.result;
604
+ {p = (( res.p))-1;}
605
+ }
606
+ p--;
607
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
608
+ }
609
+ break;
610
+ case 6:
611
+ // line 396 "Parser.rl"
612
+ {
613
+ parseString(res, p, pe);
614
+ if (res.result == null) {
615
+ p--;
616
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
617
+ } else {
618
+ result = res.result;
619
+ {p = (( res.p))-1;}
620
+ }
621
+ }
622
+ break;
623
+ case 7:
624
+ // line 406 "Parser.rl"
625
+ {
626
+ currentNesting++;
627
+ parseArray(res, p, pe);
628
+ currentNesting--;
629
+ if (res.result == null) {
630
+ p--;
631
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
632
+ } else {
633
+ result = res.result;
634
+ {p = (( res.p))-1;}
635
+ }
636
+ }
637
+ break;
638
+ case 8:
639
+ // line 418 "Parser.rl"
640
+ {
641
+ currentNesting++;
642
+ parseObject(res, p, pe);
643
+ currentNesting--;
644
+ if (res.result == null) {
645
+ p--;
646
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
647
+ } else {
648
+ result = res.result;
649
+ {p = (( res.p))-1;}
650
+ }
651
+ }
652
+ break;
653
+ // line 654 "Parser.java"
654
+ }
655
+ }
656
+ }
657
+
658
+ case 2:
659
+ if ( cs == 0 ) {
660
+ _goto_targ = 5;
661
+ continue _goto;
662
+ }
663
+ if ( ++p != pe ) {
664
+ _goto_targ = 1;
665
+ continue _goto;
666
+ }
667
+ case 4:
668
+ case 5:
669
+ }
670
+ break; }
671
+ }
672
+
673
+ // line 453 "Parser.rl"
674
+
675
+ if (cs >= JSON_value_first_final && result != null) {
676
+ res.update(result, p);
677
+ } else {
678
+ res.update(null, p);
679
+ }
680
+ }
681
+
682
+
683
+ // line 684 "Parser.java"
684
+ private static byte[] init__JSON_integer_actions_0()
685
+ {
686
+ return new byte [] {
687
+ 0, 1, 0
688
+ };
689
+ }
690
+
691
+ private static final byte _JSON_integer_actions[] = init__JSON_integer_actions_0();
692
+
693
+
694
+ private static byte[] init__JSON_integer_key_offsets_0()
695
+ {
696
+ return new byte [] {
697
+ 0, 0, 4, 7, 9, 9
698
+ };
699
+ }
700
+
701
+ private static final byte _JSON_integer_key_offsets[] = init__JSON_integer_key_offsets_0();
702
+
703
+
704
+ private static char[] init__JSON_integer_trans_keys_0()
705
+ {
706
+ return new char [] {
707
+ 45, 48, 49, 57, 48, 49, 57, 48, 57, 48, 57, 0
708
+ };
709
+ }
710
+
711
+ private static final char _JSON_integer_trans_keys[] = init__JSON_integer_trans_keys_0();
712
+
713
+
714
+ private static byte[] init__JSON_integer_single_lengths_0()
715
+ {
716
+ return new byte [] {
717
+ 0, 2, 1, 0, 0, 0
718
+ };
719
+ }
720
+
721
+ private static final byte _JSON_integer_single_lengths[] = init__JSON_integer_single_lengths_0();
722
+
723
+
724
+ private static byte[] init__JSON_integer_range_lengths_0()
725
+ {
726
+ return new byte [] {
727
+ 0, 1, 1, 1, 0, 1
728
+ };
729
+ }
730
+
731
+ private static final byte _JSON_integer_range_lengths[] = init__JSON_integer_range_lengths_0();
732
+
733
+
734
+ private static byte[] init__JSON_integer_index_offsets_0()
735
+ {
736
+ return new byte [] {
737
+ 0, 0, 4, 7, 9, 10
738
+ };
739
+ }
740
+
741
+ private static final byte _JSON_integer_index_offsets[] = init__JSON_integer_index_offsets_0();
742
+
743
+
744
+ private static byte[] init__JSON_integer_indicies_0()
745
+ {
746
+ return new byte [] {
747
+ 0, 2, 3, 1, 2, 3, 1, 1, 4, 1, 3, 4,
748
+ 0
749
+ };
750
+ }
751
+
752
+ private static final byte _JSON_integer_indicies[] = init__JSON_integer_indicies_0();
753
+
754
+
755
+ private static byte[] init__JSON_integer_trans_targs_0()
756
+ {
757
+ return new byte [] {
758
+ 2, 0, 3, 5, 4
759
+ };
760
+ }
761
+
762
+ private static final byte _JSON_integer_trans_targs[] = init__JSON_integer_trans_targs_0();
763
+
764
+
765
+ private static byte[] init__JSON_integer_trans_actions_0()
766
+ {
767
+ return new byte [] {
768
+ 0, 0, 0, 0, 1
769
+ };
770
+ }
771
+
772
+ private static final byte _JSON_integer_trans_actions[] = init__JSON_integer_trans_actions_0();
773
+
774
+
775
+ static final int JSON_integer_start = 1;
776
+ static final int JSON_integer_first_final = 3;
777
+ static final int JSON_integer_error = 0;
778
+
779
+ static final int JSON_integer_en_main = 1;
780
+
781
+
782
+ // line 472 "Parser.rl"
783
+
784
+
785
+ void parseInteger(ParserResult res, int p, int pe) {
786
+ int new_p = parseIntegerInternal(p, pe);
787
+ if (new_p == -1) {
788
+ res.update(null, p);
789
+ return;
790
+ }
791
+ RubyInteger number = createInteger(p, new_p);
792
+ res.update(number, new_p + 1);
793
+ return;
794
+ }
795
+
796
+ int parseIntegerInternal(int p, int pe) {
797
+ int cs = EVIL;
798
+
799
+
800
+ // line 801 "Parser.java"
801
+ {
802
+ cs = JSON_integer_start;
803
+ }
804
+
805
+ // line 489 "Parser.rl"
806
+ int memo = p;
807
+
808
+ // line 809 "Parser.java"
809
+ {
810
+ int _klen;
811
+ int _trans = 0;
812
+ int _acts;
813
+ int _nacts;
814
+ int _keys;
815
+ int _goto_targ = 0;
816
+
817
+ _goto: while (true) {
818
+ switch ( _goto_targ ) {
819
+ case 0:
820
+ if ( p == pe ) {
821
+ _goto_targ = 4;
822
+ continue _goto;
823
+ }
824
+ if ( cs == 0 ) {
825
+ _goto_targ = 5;
826
+ continue _goto;
827
+ }
828
+ case 1:
829
+ _match: do {
830
+ _keys = _JSON_integer_key_offsets[cs];
831
+ _trans = _JSON_integer_index_offsets[cs];
832
+ _klen = _JSON_integer_single_lengths[cs];
833
+ if ( _klen > 0 ) {
834
+ int _lower = _keys;
835
+ int _mid;
836
+ int _upper = _keys + _klen - 1;
837
+ while (true) {
838
+ if ( _upper < _lower )
839
+ break;
840
+
841
+ _mid = _lower + ((_upper-_lower) >> 1);
842
+ if ( data[p] < _JSON_integer_trans_keys[_mid] )
843
+ _upper = _mid - 1;
844
+ else if ( data[p] > _JSON_integer_trans_keys[_mid] )
845
+ _lower = _mid + 1;
846
+ else {
847
+ _trans += (_mid - _keys);
848
+ break _match;
849
+ }
850
+ }
851
+ _keys += _klen;
852
+ _trans += _klen;
853
+ }
854
+
855
+ _klen = _JSON_integer_range_lengths[cs];
856
+ if ( _klen > 0 ) {
857
+ int _lower = _keys;
858
+ int _mid;
859
+ int _upper = _keys + (_klen<<1) - 2;
860
+ while (true) {
861
+ if ( _upper < _lower )
862
+ break;
863
+
864
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
865
+ if ( data[p] < _JSON_integer_trans_keys[_mid] )
866
+ _upper = _mid - 2;
867
+ else if ( data[p] > _JSON_integer_trans_keys[_mid+1] )
868
+ _lower = _mid + 2;
869
+ else {
870
+ _trans += ((_mid - _keys)>>1);
871
+ break _match;
872
+ }
873
+ }
874
+ _trans += _klen;
875
+ }
876
+ } while (false);
877
+
878
+ _trans = _JSON_integer_indicies[_trans];
879
+ cs = _JSON_integer_trans_targs[_trans];
880
+
881
+ if ( _JSON_integer_trans_actions[_trans] != 0 ) {
882
+ _acts = _JSON_integer_trans_actions[_trans];
883
+ _nacts = (int) _JSON_integer_actions[_acts++];
884
+ while ( _nacts-- > 0 )
885
+ {
886
+ switch ( _JSON_integer_actions[_acts++] )
887
+ {
888
+ case 0:
889
+ // line 466 "Parser.rl"
890
+ {
891
+ p--;
892
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
893
+ }
894
+ break;
895
+ // line 896 "Parser.java"
896
+ }
897
+ }
898
+ }
899
+
900
+ case 2:
901
+ if ( cs == 0 ) {
902
+ _goto_targ = 5;
903
+ continue _goto;
904
+ }
905
+ if ( ++p != pe ) {
906
+ _goto_targ = 1;
907
+ continue _goto;
908
+ }
909
+ case 4:
910
+ case 5:
911
+ }
912
+ break; }
913
+ }
914
+
915
+ // line 491 "Parser.rl"
916
+
917
+ if (cs < JSON_integer_first_final) {
918
+ return -1;
919
+ }
920
+
921
+ return p;
922
+ }
923
+
924
+ RubyInteger createInteger(int p, int new_p) {
925
+ Ruby runtime = getRuntime();
926
+ ByteList num = absSubSequence(p, new_p);
927
+ return bytesToInum(runtime, num);
928
+ }
929
+
930
+ RubyInteger bytesToInum(Ruby runtime, ByteList num) {
931
+ return runtime.is1_9() ?
932
+ ConvertBytes.byteListToInum19(runtime, num, 10, true) :
933
+ ConvertBytes.byteListToInum(runtime, num, 10, true);
934
+ }
935
+
936
+
937
+ // line 938 "Parser.java"
938
+ private static byte[] init__JSON_float_actions_0()
939
+ {
940
+ return new byte [] {
941
+ 0, 1, 0
942
+ };
943
+ }
944
+
945
+ private static final byte _JSON_float_actions[] = init__JSON_float_actions_0();
946
+
947
+
948
+ private static byte[] init__JSON_float_key_offsets_0()
949
+ {
950
+ return new byte [] {
951
+ 0, 0, 4, 7, 10, 12, 16, 18, 23, 29, 29
952
+ };
953
+ }
954
+
955
+ private static final byte _JSON_float_key_offsets[] = init__JSON_float_key_offsets_0();
956
+
957
+
958
+ private static char[] init__JSON_float_trans_keys_0()
959
+ {
960
+ return new char [] {
961
+ 45, 48, 49, 57, 48, 49, 57, 46, 69, 101, 48, 57,
962
+ 43, 45, 48, 57, 48, 57, 46, 69, 101, 48, 57, 69,
963
+ 101, 45, 46, 48, 57, 69, 101, 45, 46, 48, 57, 0
964
+ };
965
+ }
966
+
967
+ private static final char _JSON_float_trans_keys[] = init__JSON_float_trans_keys_0();
968
+
969
+
970
+ private static byte[] init__JSON_float_single_lengths_0()
971
+ {
972
+ return new byte [] {
973
+ 0, 2, 1, 3, 0, 2, 0, 3, 2, 0, 2
974
+ };
975
+ }
976
+
977
+ private static final byte _JSON_float_single_lengths[] = init__JSON_float_single_lengths_0();
978
+
979
+
980
+ private static byte[] init__JSON_float_range_lengths_0()
981
+ {
982
+ return new byte [] {
983
+ 0, 1, 1, 0, 1, 1, 1, 1, 2, 0, 2
984
+ };
985
+ }
986
+
987
+ private static final byte _JSON_float_range_lengths[] = init__JSON_float_range_lengths_0();
988
+
989
+
990
+ private static byte[] init__JSON_float_index_offsets_0()
991
+ {
992
+ return new byte [] {
993
+ 0, 0, 4, 7, 11, 13, 17, 19, 24, 29, 30
994
+ };
995
+ }
996
+
997
+ private static final byte _JSON_float_index_offsets[] = init__JSON_float_index_offsets_0();
998
+
999
+
1000
+ private static byte[] init__JSON_float_indicies_0()
1001
+ {
1002
+ return new byte [] {
1003
+ 0, 2, 3, 1, 2, 3, 1, 4, 5, 5, 1, 6,
1004
+ 1, 7, 7, 8, 1, 8, 1, 4, 5, 5, 3, 1,
1005
+ 5, 5, 1, 6, 9, 1, 1, 1, 1, 8, 9, 0
1006
+ };
1007
+ }
1008
+
1009
+ private static final byte _JSON_float_indicies[] = init__JSON_float_indicies_0();
1010
+
1011
+
1012
+ private static byte[] init__JSON_float_trans_targs_0()
1013
+ {
1014
+ return new byte [] {
1015
+ 2, 0, 3, 7, 4, 5, 8, 6, 10, 9
1016
+ };
1017
+ }
1018
+
1019
+ private static final byte _JSON_float_trans_targs[] = init__JSON_float_trans_targs_0();
1020
+
1021
+
1022
+ private static byte[] init__JSON_float_trans_actions_0()
1023
+ {
1024
+ return new byte [] {
1025
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
1026
+ };
1027
+ }
1028
+
1029
+ private static final byte _JSON_float_trans_actions[] = init__JSON_float_trans_actions_0();
1030
+
1031
+
1032
+ static final int JSON_float_start = 1;
1033
+ static final int JSON_float_first_final = 8;
1034
+ static final int JSON_float_error = 0;
1035
+
1036
+ static final int JSON_float_en_main = 1;
1037
+
1038
+
1039
+ // line 526 "Parser.rl"
1040
+
1041
+
1042
+ void parseFloat(ParserResult res, int p, int pe) {
1043
+ int new_p = parseFloatInternal(p, pe);
1044
+ if (new_p == -1) {
1045
+ res.update(null, p);
1046
+ return;
1047
+ }
1048
+ IRubyObject number = parser.decimalClass == null ?
1049
+ createFloat(p, new_p) : createCustomDecimal(p, new_p);
1050
+
1051
+ res.update(number, new_p + 1);
1052
+ return;
1053
+ }
1054
+
1055
+ int parseFloatInternal(int p, int pe) {
1056
+ int cs = EVIL;
1057
+
1058
+
1059
+ // line 1060 "Parser.java"
1060
+ {
1061
+ cs = JSON_float_start;
1062
+ }
1063
+
1064
+ // line 545 "Parser.rl"
1065
+ int memo = p;
1066
+
1067
+ // line 1068 "Parser.java"
1068
+ {
1069
+ int _klen;
1070
+ int _trans = 0;
1071
+ int _acts;
1072
+ int _nacts;
1073
+ int _keys;
1074
+ int _goto_targ = 0;
1075
+
1076
+ _goto: while (true) {
1077
+ switch ( _goto_targ ) {
1078
+ case 0:
1079
+ if ( p == pe ) {
1080
+ _goto_targ = 4;
1081
+ continue _goto;
1082
+ }
1083
+ if ( cs == 0 ) {
1084
+ _goto_targ = 5;
1085
+ continue _goto;
1086
+ }
1087
+ case 1:
1088
+ _match: do {
1089
+ _keys = _JSON_float_key_offsets[cs];
1090
+ _trans = _JSON_float_index_offsets[cs];
1091
+ _klen = _JSON_float_single_lengths[cs];
1092
+ if ( _klen > 0 ) {
1093
+ int _lower = _keys;
1094
+ int _mid;
1095
+ int _upper = _keys + _klen - 1;
1096
+ while (true) {
1097
+ if ( _upper < _lower )
1098
+ break;
1099
+
1100
+ _mid = _lower + ((_upper-_lower) >> 1);
1101
+ if ( data[p] < _JSON_float_trans_keys[_mid] )
1102
+ _upper = _mid - 1;
1103
+ else if ( data[p] > _JSON_float_trans_keys[_mid] )
1104
+ _lower = _mid + 1;
1105
+ else {
1106
+ _trans += (_mid - _keys);
1107
+ break _match;
1108
+ }
1109
+ }
1110
+ _keys += _klen;
1111
+ _trans += _klen;
1112
+ }
1113
+
1114
+ _klen = _JSON_float_range_lengths[cs];
1115
+ if ( _klen > 0 ) {
1116
+ int _lower = _keys;
1117
+ int _mid;
1118
+ int _upper = _keys + (_klen<<1) - 2;
1119
+ while (true) {
1120
+ if ( _upper < _lower )
1121
+ break;
1122
+
1123
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1124
+ if ( data[p] < _JSON_float_trans_keys[_mid] )
1125
+ _upper = _mid - 2;
1126
+ else if ( data[p] > _JSON_float_trans_keys[_mid+1] )
1127
+ _lower = _mid + 2;
1128
+ else {
1129
+ _trans += ((_mid - _keys)>>1);
1130
+ break _match;
1131
+ }
1132
+ }
1133
+ _trans += _klen;
1134
+ }
1135
+ } while (false);
1136
+
1137
+ _trans = _JSON_float_indicies[_trans];
1138
+ cs = _JSON_float_trans_targs[_trans];
1139
+
1140
+ if ( _JSON_float_trans_actions[_trans] != 0 ) {
1141
+ _acts = _JSON_float_trans_actions[_trans];
1142
+ _nacts = (int) _JSON_float_actions[_acts++];
1143
+ while ( _nacts-- > 0 )
1144
+ {
1145
+ switch ( _JSON_float_actions[_acts++] )
1146
+ {
1147
+ case 0:
1148
+ // line 517 "Parser.rl"
1149
+ {
1150
+ p--;
1151
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1152
+ }
1153
+ break;
1154
+ // line 1155 "Parser.java"
1155
+ }
1156
+ }
1157
+ }
1158
+
1159
+ case 2:
1160
+ if ( cs == 0 ) {
1161
+ _goto_targ = 5;
1162
+ continue _goto;
1163
+ }
1164
+ if ( ++p != pe ) {
1165
+ _goto_targ = 1;
1166
+ continue _goto;
1167
+ }
1168
+ case 4:
1169
+ case 5:
1170
+ }
1171
+ break; }
1172
+ }
1173
+
1174
+ // line 547 "Parser.rl"
1175
+
1176
+ if (cs < JSON_float_first_final) {
1177
+ return -1;
1178
+ }
1179
+
1180
+ return p;
1181
+ }
1182
+
1183
+ RubyFloat createFloat(int p, int new_p) {
1184
+ Ruby runtime = getRuntime();
1185
+ ByteList num = absSubSequence(p, new_p);
1186
+ return RubyFloat.newFloat(runtime, dc.parse(num, true, runtime.is1_9()));
1187
+ }
1188
+
1189
+ IRubyObject createCustomDecimal(int p, int new_p) {
1190
+ Ruby runtime = getRuntime();
1191
+ ByteList num = absSubSequence(p, new_p);
1192
+ IRubyObject numString = runtime.newString(num.toString());
1193
+ return parser.decimalClass.callMethod(context, "new", numString);
1194
+ }
1195
+
1196
+
1197
+ // line 1198 "Parser.java"
1198
+ private static byte[] init__JSON_string_actions_0()
1199
+ {
1200
+ return new byte [] {
1201
+ 0, 2, 0, 1
1202
+ };
1203
+ }
1204
+
1205
+ private static final byte _JSON_string_actions[] = init__JSON_string_actions_0();
1206
+
1207
+
1208
+ private static byte[] init__JSON_string_key_offsets_0()
1209
+ {
1210
+ return new byte [] {
1211
+ 0, 0, 1, 5, 8, 14, 20, 26, 32
1212
+ };
1213
+ }
1214
+
1215
+ private static final byte _JSON_string_key_offsets[] = init__JSON_string_key_offsets_0();
1216
+
1217
+
1218
+ private static char[] init__JSON_string_trans_keys_0()
1219
+ {
1220
+ return new char [] {
1221
+ 34, 34, 92, 0, 31, 117, 0, 31, 48, 57, 65, 70,
1222
+ 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70,
1223
+ 97, 102, 48, 57, 65, 70, 97, 102, 0
1224
+ };
1225
+ }
1226
+
1227
+ private static final char _JSON_string_trans_keys[] = init__JSON_string_trans_keys_0();
1228
+
1229
+
1230
+ private static byte[] init__JSON_string_single_lengths_0()
1231
+ {
1232
+ return new byte [] {
1233
+ 0, 1, 2, 1, 0, 0, 0, 0, 0
1234
+ };
1235
+ }
1236
+
1237
+ private static final byte _JSON_string_single_lengths[] = init__JSON_string_single_lengths_0();
1238
+
1239
+
1240
+ private static byte[] init__JSON_string_range_lengths_0()
1241
+ {
1242
+ return new byte [] {
1243
+ 0, 0, 1, 1, 3, 3, 3, 3, 0
1244
+ };
1245
+ }
1246
+
1247
+ private static final byte _JSON_string_range_lengths[] = init__JSON_string_range_lengths_0();
1248
+
1249
+
1250
+ private static byte[] init__JSON_string_index_offsets_0()
1251
+ {
1252
+ return new byte [] {
1253
+ 0, 0, 2, 6, 9, 13, 17, 21, 25
1254
+ };
1255
+ }
1256
+
1257
+ private static final byte _JSON_string_index_offsets[] = init__JSON_string_index_offsets_0();
1258
+
1259
+
1260
+ private static byte[] init__JSON_string_indicies_0()
1261
+ {
1262
+ return new byte [] {
1263
+ 0, 1, 2, 3, 1, 0, 4, 1, 0, 5, 5, 5,
1264
+ 1, 6, 6, 6, 1, 7, 7, 7, 1, 0, 0, 0,
1265
+ 1, 1, 0
1266
+ };
1267
+ }
1268
+
1269
+ private static final byte _JSON_string_indicies[] = init__JSON_string_indicies_0();
1270
+
1271
+
1272
+ private static byte[] init__JSON_string_trans_targs_0()
1273
+ {
1274
+ return new byte [] {
1275
+ 2, 0, 8, 3, 4, 5, 6, 7
1276
+ };
1277
+ }
1278
+
1279
+ private static final byte _JSON_string_trans_targs[] = init__JSON_string_trans_targs_0();
1280
+
1281
+
1282
+ private static byte[] init__JSON_string_trans_actions_0()
1283
+ {
1284
+ return new byte [] {
1285
+ 0, 0, 1, 0, 0, 0, 0, 0
1286
+ };
1287
+ }
1288
+
1289
+ private static final byte _JSON_string_trans_actions[] = init__JSON_string_trans_actions_0();
1290
+
1291
+
1292
+ static final int JSON_string_start = 1;
1293
+ static final int JSON_string_first_final = 8;
1294
+ static final int JSON_string_error = 0;
1295
+
1296
+ static final int JSON_string_en_main = 1;
1297
+
1298
+
1299
+ // line 599 "Parser.rl"
1300
+
1301
+
1302
+ void parseString(ParserResult res, int p, int pe) {
1303
+ int cs = EVIL;
1304
+ IRubyObject result = null;
1305
+
1306
+
1307
+ // line 1308 "Parser.java"
1308
+ {
1309
+ cs = JSON_string_start;
1310
+ }
1311
+
1312
+ // line 606 "Parser.rl"
1313
+ int memo = p;
1314
+
1315
+ // line 1316 "Parser.java"
1316
+ {
1317
+ int _klen;
1318
+ int _trans = 0;
1319
+ int _acts;
1320
+ int _nacts;
1321
+ int _keys;
1322
+ int _goto_targ = 0;
1323
+
1324
+ _goto: while (true) {
1325
+ switch ( _goto_targ ) {
1326
+ case 0:
1327
+ if ( p == pe ) {
1328
+ _goto_targ = 4;
1329
+ continue _goto;
1330
+ }
1331
+ if ( cs == 0 ) {
1332
+ _goto_targ = 5;
1333
+ continue _goto;
1334
+ }
1335
+ case 1:
1336
+ _match: do {
1337
+ _keys = _JSON_string_key_offsets[cs];
1338
+ _trans = _JSON_string_index_offsets[cs];
1339
+ _klen = _JSON_string_single_lengths[cs];
1340
+ if ( _klen > 0 ) {
1341
+ int _lower = _keys;
1342
+ int _mid;
1343
+ int _upper = _keys + _klen - 1;
1344
+ while (true) {
1345
+ if ( _upper < _lower )
1346
+ break;
1347
+
1348
+ _mid = _lower + ((_upper-_lower) >> 1);
1349
+ if ( data[p] < _JSON_string_trans_keys[_mid] )
1350
+ _upper = _mid - 1;
1351
+ else if ( data[p] > _JSON_string_trans_keys[_mid] )
1352
+ _lower = _mid + 1;
1353
+ else {
1354
+ _trans += (_mid - _keys);
1355
+ break _match;
1356
+ }
1357
+ }
1358
+ _keys += _klen;
1359
+ _trans += _klen;
1360
+ }
1361
+
1362
+ _klen = _JSON_string_range_lengths[cs];
1363
+ if ( _klen > 0 ) {
1364
+ int _lower = _keys;
1365
+ int _mid;
1366
+ int _upper = _keys + (_klen<<1) - 2;
1367
+ while (true) {
1368
+ if ( _upper < _lower )
1369
+ break;
1370
+
1371
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1372
+ if ( data[p] < _JSON_string_trans_keys[_mid] )
1373
+ _upper = _mid - 2;
1374
+ else if ( data[p] > _JSON_string_trans_keys[_mid+1] )
1375
+ _lower = _mid + 2;
1376
+ else {
1377
+ _trans += ((_mid - _keys)>>1);
1378
+ break _match;
1379
+ }
1380
+ }
1381
+ _trans += _klen;
1382
+ }
1383
+ } while (false);
1384
+
1385
+ _trans = _JSON_string_indicies[_trans];
1386
+ cs = _JSON_string_trans_targs[_trans];
1387
+
1388
+ if ( _JSON_string_trans_actions[_trans] != 0 ) {
1389
+ _acts = _JSON_string_trans_actions[_trans];
1390
+ _nacts = (int) _JSON_string_actions[_acts++];
1391
+ while ( _nacts-- > 0 )
1392
+ {
1393
+ switch ( _JSON_string_actions[_acts++] )
1394
+ {
1395
+ case 0:
1396
+ // line 574 "Parser.rl"
1397
+ {
1398
+ int offset = byteList.begin();
1399
+ ByteList decoded = decoder.decode(byteList, memo + 1 - offset,
1400
+ p - offset);
1401
+ result = getRuntime().newString(decoded);
1402
+ if (result == null) {
1403
+ p--;
1404
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1405
+ } else {
1406
+ {p = (( p + 1))-1;}
1407
+ }
1408
+ }
1409
+ break;
1410
+ case 1:
1411
+ // line 587 "Parser.rl"
1412
+ {
1413
+ p--;
1414
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1415
+ }
1416
+ break;
1417
+ // line 1418 "Parser.java"
1418
+ }
1419
+ }
1420
+ }
1421
+
1422
+ case 2:
1423
+ if ( cs == 0 ) {
1424
+ _goto_targ = 5;
1425
+ continue _goto;
1426
+ }
1427
+ if ( ++p != pe ) {
1428
+ _goto_targ = 1;
1429
+ continue _goto;
1430
+ }
1431
+ case 4:
1432
+ case 5:
1433
+ }
1434
+ break; }
1435
+ }
1436
+
1437
+ // line 608 "Parser.rl"
1438
+
1439
+ if (parser.createAdditions) {
1440
+ RubyHash matchString = parser.match_string;
1441
+ if (matchString != null) {
1442
+ final IRubyObject[] memoArray = { result, null };
1443
+ try {
1444
+ matchString.visitAll(new RubyHash.Visitor() {
1445
+ @Override
1446
+ public void visit(IRubyObject pattern, IRubyObject klass) {
1447
+ if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
1448
+ memoArray[1] = klass;
1449
+ throw JumpException.SPECIAL_JUMP;
1450
+ }
1451
+ }
1452
+ });
1453
+ } catch (JumpException e) { }
1454
+ if (memoArray[1] != null) {
1455
+ RubyClass klass = (RubyClass) memoArray[1];
1456
+ if (klass.respondsTo("json_creatable?") &&
1457
+ klass.callMethod(context, "json_creatable?").isTrue()) {
1458
+ result = klass.callMethod(context, "json_create", result);
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+
1464
+ if (cs >= JSON_string_first_final && result != null) {
1465
+ if (result instanceof RubyString) {
1466
+ ((RubyString)result).force_encoding(context, info.utf8.get());
1467
+ }
1468
+ res.update(result, p + 1);
1469
+ } else {
1470
+ res.update(null, p + 1);
1471
+ }
1472
+ }
1473
+
1474
+
1475
+ // line 1476 "Parser.java"
1476
+ private static byte[] init__JSON_array_actions_0()
1477
+ {
1478
+ return new byte [] {
1479
+ 0, 1, 0, 1, 1
1480
+ };
1481
+ }
1482
+
1483
+ private static final byte _JSON_array_actions[] = init__JSON_array_actions_0();
1484
+
1485
+
1486
+ private static byte[] init__JSON_array_key_offsets_0()
1487
+ {
1488
+ return new byte [] {
1489
+ 0, 0, 1, 18, 25, 41, 43, 44, 46, 47, 49, 50,
1490
+ 52, 53, 55, 56, 58, 59
1491
+ };
1492
+ }
1493
+
1494
+ private static final byte _JSON_array_key_offsets[] = init__JSON_array_key_offsets_0();
1495
+
1496
+
1497
+ private static char[] init__JSON_array_trans_keys_0()
1498
+ {
1499
+ return new char [] {
1500
+ 91, 13, 32, 34, 45, 47, 73, 78, 91, 93, 102, 110,
1501
+ 116, 123, 9, 10, 48, 57, 13, 32, 44, 47, 93, 9,
1502
+ 10, 13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116,
1503
+ 123, 9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42,
1504
+ 47, 42, 42, 47, 10, 42, 47, 42, 42, 47, 10, 0
1505
+ };
1506
+ }
1507
+
1508
+ private static final char _JSON_array_trans_keys[] = init__JSON_array_trans_keys_0();
1509
+
1510
+
1511
+ private static byte[] init__JSON_array_single_lengths_0()
1512
+ {
1513
+ return new byte [] {
1514
+ 0, 1, 13, 5, 12, 2, 1, 2, 1, 2, 1, 2,
1515
+ 1, 2, 1, 2, 1, 0
1516
+ };
1517
+ }
1518
+
1519
+ private static final byte _JSON_array_single_lengths[] = init__JSON_array_single_lengths_0();
1520
+
1521
+
1522
+ private static byte[] init__JSON_array_range_lengths_0()
1523
+ {
1524
+ return new byte [] {
1525
+ 0, 0, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0,
1526
+ 0, 0, 0, 0, 0, 0
1527
+ };
1528
+ }
1529
+
1530
+ private static final byte _JSON_array_range_lengths[] = init__JSON_array_range_lengths_0();
1531
+
1532
+
1533
+ private static byte[] init__JSON_array_index_offsets_0()
1534
+ {
1535
+ return new byte [] {
1536
+ 0, 0, 2, 18, 25, 40, 43, 45, 48, 50, 53, 55,
1537
+ 58, 60, 63, 65, 68, 70
1538
+ };
1539
+ }
1540
+
1541
+ private static final byte _JSON_array_index_offsets[] = init__JSON_array_index_offsets_0();
1542
+
1543
+
1544
+ private static byte[] init__JSON_array_indicies_0()
1545
+ {
1546
+ return new byte [] {
1547
+ 0, 1, 0, 0, 2, 2, 3, 2, 2, 2, 4, 2,
1548
+ 2, 2, 2, 0, 2, 1, 5, 5, 6, 7, 4, 5,
1549
+ 1, 6, 6, 2, 2, 8, 2, 2, 2, 2, 2, 2,
1550
+ 2, 6, 2, 1, 9, 10, 1, 11, 9, 11, 6, 9,
1551
+ 6, 10, 12, 13, 1, 14, 12, 14, 5, 12, 5, 13,
1552
+ 15, 16, 1, 17, 15, 17, 0, 15, 0, 16, 1, 0
1553
+ };
1554
+ }
1555
+
1556
+ private static final byte _JSON_array_indicies[] = init__JSON_array_indicies_0();
1557
+
1558
+
1559
+ private static byte[] init__JSON_array_trans_targs_0()
1560
+ {
1561
+ return new byte [] {
1562
+ 2, 0, 3, 13, 17, 3, 4, 9, 5, 6, 8, 7,
1563
+ 10, 12, 11, 14, 16, 15
1564
+ };
1565
+ }
1566
+
1567
+ private static final byte _JSON_array_trans_targs[] = init__JSON_array_trans_targs_0();
1568
+
1569
+
1570
+ private static byte[] init__JSON_array_trans_actions_0()
1571
+ {
1572
+ return new byte [] {
1573
+ 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0,
1574
+ 0, 0, 0, 0, 0, 0
1575
+ };
1576
+ }
1577
+
1578
+ private static final byte _JSON_array_trans_actions[] = init__JSON_array_trans_actions_0();
1579
+
1580
+
1581
+ static final int JSON_array_start = 1;
1582
+ static final int JSON_array_first_final = 17;
1583
+ static final int JSON_array_error = 0;
1584
+
1585
+ static final int JSON_array_en_main = 1;
1586
+
1587
+
1588
+ // line 681 "Parser.rl"
1589
+
1590
+
1591
+ void parseArray(ParserResult res, int p, int pe) {
1592
+ int cs = EVIL;
1593
+
1594
+ if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
1595
+ throw newException(Utils.M_NESTING_ERROR,
1596
+ "nesting of " + currentNesting + " is too deep");
1597
+ }
1598
+
1599
+ IRubyObject result;
1600
+ if (parser.arrayClass == getRuntime().getArray()) {
1601
+ result = RubyArray.newArray(getRuntime());
1602
+ } else {
1603
+ result = parser.arrayClass.newInstance(context,
1604
+ IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
1605
+ }
1606
+
1607
+
1608
+ // line 1609 "Parser.java"
1609
+ {
1610
+ cs = JSON_array_start;
1611
+ }
1612
+
1613
+ // line 700 "Parser.rl"
1614
+
1615
+ // line 1616 "Parser.java"
1616
+ {
1617
+ int _klen;
1618
+ int _trans = 0;
1619
+ int _acts;
1620
+ int _nacts;
1621
+ int _keys;
1622
+ int _goto_targ = 0;
1623
+
1624
+ _goto: while (true) {
1625
+ switch ( _goto_targ ) {
1626
+ case 0:
1627
+ if ( p == pe ) {
1628
+ _goto_targ = 4;
1629
+ continue _goto;
1630
+ }
1631
+ if ( cs == 0 ) {
1632
+ _goto_targ = 5;
1633
+ continue _goto;
1634
+ }
1635
+ case 1:
1636
+ _match: do {
1637
+ _keys = _JSON_array_key_offsets[cs];
1638
+ _trans = _JSON_array_index_offsets[cs];
1639
+ _klen = _JSON_array_single_lengths[cs];
1640
+ if ( _klen > 0 ) {
1641
+ int _lower = _keys;
1642
+ int _mid;
1643
+ int _upper = _keys + _klen - 1;
1644
+ while (true) {
1645
+ if ( _upper < _lower )
1646
+ break;
1647
+
1648
+ _mid = _lower + ((_upper-_lower) >> 1);
1649
+ if ( data[p] < _JSON_array_trans_keys[_mid] )
1650
+ _upper = _mid - 1;
1651
+ else if ( data[p] > _JSON_array_trans_keys[_mid] )
1652
+ _lower = _mid + 1;
1653
+ else {
1654
+ _trans += (_mid - _keys);
1655
+ break _match;
1656
+ }
1657
+ }
1658
+ _keys += _klen;
1659
+ _trans += _klen;
1660
+ }
1661
+
1662
+ _klen = _JSON_array_range_lengths[cs];
1663
+ if ( _klen > 0 ) {
1664
+ int _lower = _keys;
1665
+ int _mid;
1666
+ int _upper = _keys + (_klen<<1) - 2;
1667
+ while (true) {
1668
+ if ( _upper < _lower )
1669
+ break;
1670
+
1671
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1672
+ if ( data[p] < _JSON_array_trans_keys[_mid] )
1673
+ _upper = _mid - 2;
1674
+ else if ( data[p] > _JSON_array_trans_keys[_mid+1] )
1675
+ _lower = _mid + 2;
1676
+ else {
1677
+ _trans += ((_mid - _keys)>>1);
1678
+ break _match;
1679
+ }
1680
+ }
1681
+ _trans += _klen;
1682
+ }
1683
+ } while (false);
1684
+
1685
+ _trans = _JSON_array_indicies[_trans];
1686
+ cs = _JSON_array_trans_targs[_trans];
1687
+
1688
+ if ( _JSON_array_trans_actions[_trans] != 0 ) {
1689
+ _acts = _JSON_array_trans_actions[_trans];
1690
+ _nacts = (int) _JSON_array_actions[_acts++];
1691
+ while ( _nacts-- > 0 )
1692
+ {
1693
+ switch ( _JSON_array_actions[_acts++] )
1694
+ {
1695
+ case 0:
1696
+ // line 650 "Parser.rl"
1697
+ {
1698
+ parseValue(res, p, pe);
1699
+ if (res.result == null) {
1700
+ p--;
1701
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1702
+ } else {
1703
+ if (parser.arrayClass == getRuntime().getArray()) {
1704
+ ((RubyArray)result).append(res.result);
1705
+ } else {
1706
+ result.callMethod(context, "<<", res.result);
1707
+ }
1708
+ {p = (( res.p))-1;}
1709
+ }
1710
+ }
1711
+ break;
1712
+ case 1:
1713
+ // line 665 "Parser.rl"
1714
+ {
1715
+ p--;
1716
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1717
+ }
1718
+ break;
1719
+ // line 1720 "Parser.java"
1720
+ }
1721
+ }
1722
+ }
1723
+
1724
+ case 2:
1725
+ if ( cs == 0 ) {
1726
+ _goto_targ = 5;
1727
+ continue _goto;
1728
+ }
1729
+ if ( ++p != pe ) {
1730
+ _goto_targ = 1;
1731
+ continue _goto;
1732
+ }
1733
+ case 4:
1734
+ case 5:
1735
+ }
1736
+ break; }
1737
+ }
1738
+
1739
+ // line 701 "Parser.rl"
1740
+
1741
+ if (cs >= JSON_array_first_final) {
1742
+ res.update(result, p + 1);
1743
+ } else {
1744
+ throw unexpectedToken(p, pe);
1745
+ }
1746
+ }
1747
+
1748
+
1749
+ // line 1750 "Parser.java"
1750
+ private static byte[] init__JSON_object_actions_0()
1751
+ {
1752
+ return new byte [] {
1753
+ 0, 1, 0, 1, 1, 1, 2
1754
+ };
1755
+ }
1756
+
1757
+ private static final byte _JSON_object_actions[] = init__JSON_object_actions_0();
1758
+
1759
+
1760
+ private static byte[] init__JSON_object_key_offsets_0()
1761
+ {
1762
+ return new byte [] {
1763
+ 0, 0, 1, 8, 14, 16, 17, 19, 20, 36, 43, 49,
1764
+ 51, 52, 54, 55, 57, 58, 60, 61, 63, 64, 66, 67,
1765
+ 69, 70, 72, 73
1766
+ };
1767
+ }
1768
+
1769
+ private static final byte _JSON_object_key_offsets[] = init__JSON_object_key_offsets_0();
1770
+
1771
+
1772
+ private static char[] init__JSON_object_trans_keys_0()
1773
+ {
1774
+ return new char [] {
1775
+ 123, 13, 32, 34, 47, 125, 9, 10, 13, 32, 47, 58,
1776
+ 9, 10, 42, 47, 42, 42, 47, 10, 13, 32, 34, 45,
1777
+ 47, 73, 78, 91, 102, 110, 116, 123, 9, 10, 48, 57,
1778
+ 13, 32, 44, 47, 125, 9, 10, 13, 32, 34, 47, 9,
1779
+ 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47,
1780
+ 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47,
1781
+ 10, 0
1782
+ };
1783
+ }
1784
+
1785
+ private static final char _JSON_object_trans_keys[] = init__JSON_object_trans_keys_0();
1786
+
1787
+
1788
+ private static byte[] init__JSON_object_single_lengths_0()
1789
+ {
1790
+ return new byte [] {
1791
+ 0, 1, 5, 4, 2, 1, 2, 1, 12, 5, 4, 2,
1792
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
1793
+ 1, 2, 1, 0
1794
+ };
1795
+ }
1796
+
1797
+ private static final byte _JSON_object_single_lengths[] = init__JSON_object_single_lengths_0();
1798
+
1799
+
1800
+ private static byte[] init__JSON_object_range_lengths_0()
1801
+ {
1802
+ return new byte [] {
1803
+ 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 1, 0,
1804
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1805
+ 0, 0, 0, 0
1806
+ };
1807
+ }
1808
+
1809
+ private static final byte _JSON_object_range_lengths[] = init__JSON_object_range_lengths_0();
1810
+
1811
+
1812
+ private static byte[] init__JSON_object_index_offsets_0()
1813
+ {
1814
+ return new byte [] {
1815
+ 0, 0, 2, 9, 15, 18, 20, 23, 25, 40, 47, 53,
1816
+ 56, 58, 61, 63, 66, 68, 71, 73, 76, 78, 81, 83,
1817
+ 86, 88, 91, 93
1818
+ };
1819
+ }
1820
+
1821
+ private static final byte _JSON_object_index_offsets[] = init__JSON_object_index_offsets_0();
1822
+
1823
+
1824
+ private static byte[] init__JSON_object_indicies_0()
1825
+ {
1826
+ return new byte [] {
1827
+ 0, 1, 0, 0, 2, 3, 4, 0, 1, 5, 5, 6,
1828
+ 7, 5, 1, 8, 9, 1, 10, 8, 10, 5, 8, 5,
1829
+ 9, 7, 7, 11, 11, 12, 11, 11, 11, 11, 11, 11,
1830
+ 11, 7, 11, 1, 13, 13, 14, 15, 4, 13, 1, 14,
1831
+ 14, 2, 16, 14, 1, 17, 18, 1, 19, 17, 19, 14,
1832
+ 17, 14, 18, 20, 21, 1, 22, 20, 22, 13, 20, 13,
1833
+ 21, 23, 24, 1, 25, 23, 25, 7, 23, 7, 24, 26,
1834
+ 27, 1, 28, 26, 28, 0, 26, 0, 27, 1, 0
1835
+ };
1836
+ }
1837
+
1838
+ private static final byte _JSON_object_indicies[] = init__JSON_object_indicies_0();
1839
+
1840
+
1841
+ private static byte[] init__JSON_object_trans_targs_0()
1842
+ {
1843
+ return new byte [] {
1844
+ 2, 0, 3, 23, 27, 3, 4, 8, 5, 7, 6, 9,
1845
+ 19, 9, 10, 15, 11, 12, 14, 13, 16, 18, 17, 20,
1846
+ 22, 21, 24, 26, 25
1847
+ };
1848
+ }
1849
+
1850
+ private static final byte _JSON_object_trans_targs[] = init__JSON_object_trans_targs_0();
1851
+
1852
+
1853
+ private static byte[] init__JSON_object_trans_actions_0()
1854
+ {
1855
+ return new byte [] {
1856
+ 0, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 1,
1857
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858
+ 0, 0, 0, 0, 0
1859
+ };
1860
+ }
1861
+
1862
+ private static final byte _JSON_object_trans_actions[] = init__JSON_object_trans_actions_0();
1863
+
1864
+
1865
+ static final int JSON_object_start = 1;
1866
+ static final int JSON_object_first_final = 27;
1867
+ static final int JSON_object_error = 0;
1868
+
1869
+ static final int JSON_object_en_main = 1;
1870
+
1871
+
1872
+ // line 760 "Parser.rl"
1873
+
1874
+
1875
+ void parseObject(ParserResult res, int p, int pe) {
1876
+ int cs = EVIL;
1877
+ IRubyObject lastName = null;
1878
+ boolean objectDefault = true;
1879
+
1880
+ if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) {
1881
+ throw newException(Utils.M_NESTING_ERROR,
1882
+ "nesting of " + currentNesting + " is too deep");
1883
+ }
1884
+
1885
+ // this is guaranteed to be a RubyHash due to the earlier
1886
+ // allocator test at OptionsReader#getClass
1887
+ IRubyObject result;
1888
+ if (parser.objectClass == getRuntime().getHash()) {
1889
+ result = RubyHash.newHash(getRuntime());
1890
+ } else {
1891
+ objectDefault = false;
1892
+ result = parser.objectClass.newInstance(context,
1893
+ IRubyObject.NULL_ARRAY, Block.NULL_BLOCK);
1894
+ }
1895
+
1896
+
1897
+ // line 1898 "Parser.java"
1898
+ {
1899
+ cs = JSON_object_start;
1900
+ }
1901
+
1902
+ // line 784 "Parser.rl"
1903
+
1904
+ // line 1905 "Parser.java"
1905
+ {
1906
+ int _klen;
1907
+ int _trans = 0;
1908
+ int _acts;
1909
+ int _nacts;
1910
+ int _keys;
1911
+ int _goto_targ = 0;
1912
+
1913
+ _goto: while (true) {
1914
+ switch ( _goto_targ ) {
1915
+ case 0:
1916
+ if ( p == pe ) {
1917
+ _goto_targ = 4;
1918
+ continue _goto;
1919
+ }
1920
+ if ( cs == 0 ) {
1921
+ _goto_targ = 5;
1922
+ continue _goto;
1923
+ }
1924
+ case 1:
1925
+ _match: do {
1926
+ _keys = _JSON_object_key_offsets[cs];
1927
+ _trans = _JSON_object_index_offsets[cs];
1928
+ _klen = _JSON_object_single_lengths[cs];
1929
+ if ( _klen > 0 ) {
1930
+ int _lower = _keys;
1931
+ int _mid;
1932
+ int _upper = _keys + _klen - 1;
1933
+ while (true) {
1934
+ if ( _upper < _lower )
1935
+ break;
1936
+
1937
+ _mid = _lower + ((_upper-_lower) >> 1);
1938
+ if ( data[p] < _JSON_object_trans_keys[_mid] )
1939
+ _upper = _mid - 1;
1940
+ else if ( data[p] > _JSON_object_trans_keys[_mid] )
1941
+ _lower = _mid + 1;
1942
+ else {
1943
+ _trans += (_mid - _keys);
1944
+ break _match;
1945
+ }
1946
+ }
1947
+ _keys += _klen;
1948
+ _trans += _klen;
1949
+ }
1950
+
1951
+ _klen = _JSON_object_range_lengths[cs];
1952
+ if ( _klen > 0 ) {
1953
+ int _lower = _keys;
1954
+ int _mid;
1955
+ int _upper = _keys + (_klen<<1) - 2;
1956
+ while (true) {
1957
+ if ( _upper < _lower )
1958
+ break;
1959
+
1960
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
1961
+ if ( data[p] < _JSON_object_trans_keys[_mid] )
1962
+ _upper = _mid - 2;
1963
+ else if ( data[p] > _JSON_object_trans_keys[_mid+1] )
1964
+ _lower = _mid + 2;
1965
+ else {
1966
+ _trans += ((_mid - _keys)>>1);
1967
+ break _match;
1968
+ }
1969
+ }
1970
+ _trans += _klen;
1971
+ }
1972
+ } while (false);
1973
+
1974
+ _trans = _JSON_object_indicies[_trans];
1975
+ cs = _JSON_object_trans_targs[_trans];
1976
+
1977
+ if ( _JSON_object_trans_actions[_trans] != 0 ) {
1978
+ _acts = _JSON_object_trans_actions[_trans];
1979
+ _nacts = (int) _JSON_object_actions[_acts++];
1980
+ while ( _nacts-- > 0 )
1981
+ {
1982
+ switch ( _JSON_object_actions[_acts++] )
1983
+ {
1984
+ case 0:
1985
+ // line 715 "Parser.rl"
1986
+ {
1987
+ parseValue(res, p, pe);
1988
+ if (res.result == null) {
1989
+ p--;
1990
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
1991
+ } else {
1992
+ if (parser.objectClass == getRuntime().getHash()) {
1993
+ ((RubyHash)result).op_aset(context, lastName, res.result);
1994
+ } else {
1995
+ result.callMethod(context, "[]=", new IRubyObject[] { lastName, res.result });
1996
+ }
1997
+ {p = (( res.p))-1;}
1998
+ }
1999
+ }
2000
+ break;
2001
+ case 1:
2002
+ // line 730 "Parser.rl"
2003
+ {
2004
+ parseString(res, p, pe);
2005
+ if (res.result == null) {
2006
+ p--;
2007
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
2008
+ } else {
2009
+ RubyString name = (RubyString)res.result;
2010
+ if (parser.symbolizeNames) {
2011
+ lastName = context.getRuntime().is1_9()
2012
+ ? name.intern19()
2013
+ : name.intern();
2014
+ } else {
2015
+ lastName = name;
2016
+ }
2017
+ {p = (( res.p))-1;}
2018
+ }
2019
+ }
2020
+ break;
2021
+ case 2:
2022
+ // line 748 "Parser.rl"
2023
+ {
2024
+ p--;
2025
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
2026
+ }
2027
+ break;
2028
+ // line 2029 "Parser.java"
2029
+ }
2030
+ }
2031
+ }
2032
+
2033
+ case 2:
2034
+ if ( cs == 0 ) {
2035
+ _goto_targ = 5;
2036
+ continue _goto;
2037
+ }
2038
+ if ( ++p != pe ) {
2039
+ _goto_targ = 1;
2040
+ continue _goto;
2041
+ }
2042
+ case 4:
2043
+ case 5:
2044
+ }
2045
+ break; }
2046
+ }
2047
+
2048
+ // line 785 "Parser.rl"
2049
+
2050
+ if (cs < JSON_object_first_final) {
2051
+ res.update(null, p + 1);
2052
+ return;
2053
+ }
2054
+
2055
+ IRubyObject returnedResult = result;
2056
+
2057
+ // attempt to de-serialize object
2058
+ if (parser.createAdditions) {
2059
+ IRubyObject vKlassName;
2060
+ if (objectDefault) {
2061
+ vKlassName = ((RubyHash)result).op_aref(context, parser.createId);
2062
+ } else {
2063
+ vKlassName = result.callMethod(context, "[]", parser.createId);
2064
+ }
2065
+
2066
+ if (!vKlassName.isNil()) {
2067
+ // might throw ArgumentError, we let it propagate
2068
+ IRubyObject klass = parser.info.jsonModule.get().
2069
+ callMethod(context, "deep_const_get", vKlassName);
2070
+ if (klass.respondsTo("json_creatable?") &&
2071
+ klass.callMethod(context, "json_creatable?").isTrue()) {
2072
+
2073
+ returnedResult = klass.callMethod(context, "json_create", result);
2074
+ }
2075
+ }
2076
+ }
2077
+ res.update(returnedResult, p + 1);
2078
+ }
2079
+
2080
+
2081
+ // line 2082 "Parser.java"
2082
+ private static byte[] init__JSON_actions_0()
2083
+ {
2084
+ return new byte [] {
2085
+ 0, 1, 0
2086
+ };
2087
+ }
2088
+
2089
+ private static final byte _JSON_actions[] = init__JSON_actions_0();
2090
+
2091
+
2092
+ private static byte[] init__JSON_key_offsets_0()
2093
+ {
2094
+ return new byte [] {
2095
+ 0, 0, 16, 18, 19, 21, 22, 24, 25, 27, 28
2096
+ };
2097
+ }
2098
+
2099
+ private static final byte _JSON_key_offsets[] = init__JSON_key_offsets_0();
2100
+
2101
+
2102
+ private static char[] init__JSON_trans_keys_0()
2103
+ {
2104
+ return new char [] {
2105
+ 13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116, 123,
2106
+ 9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42, 47,
2107
+ 42, 42, 47, 10, 13, 32, 47, 9, 10, 0
2108
+ };
2109
+ }
2110
+
2111
+ private static final char _JSON_trans_keys[] = init__JSON_trans_keys_0();
2112
+
2113
+
2114
+ private static byte[] init__JSON_single_lengths_0()
2115
+ {
2116
+ return new byte [] {
2117
+ 0, 12, 2, 1, 2, 1, 2, 1, 2, 1, 3
2118
+ };
2119
+ }
2120
+
2121
+ private static final byte _JSON_single_lengths[] = init__JSON_single_lengths_0();
2122
+
2123
+
2124
+ private static byte[] init__JSON_range_lengths_0()
2125
+ {
2126
+ return new byte [] {
2127
+ 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1
2128
+ };
2129
+ }
2130
+
2131
+ private static final byte _JSON_range_lengths[] = init__JSON_range_lengths_0();
2132
+
2133
+
2134
+ private static byte[] init__JSON_index_offsets_0()
2135
+ {
2136
+ return new byte [] {
2137
+ 0, 0, 15, 18, 20, 23, 25, 28, 30, 33, 35
2138
+ };
2139
+ }
2140
+
2141
+ private static final byte _JSON_index_offsets[] = init__JSON_index_offsets_0();
2142
+
2143
+
2144
+ private static byte[] init__JSON_indicies_0()
2145
+ {
2146
+ return new byte [] {
2147
+ 0, 0, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
2148
+ 0, 2, 1, 4, 5, 1, 6, 4, 6, 7, 4, 7,
2149
+ 5, 8, 9, 1, 10, 8, 10, 0, 8, 0, 9, 7,
2150
+ 7, 11, 7, 1, 0
2151
+ };
2152
+ }
2153
+
2154
+ private static final byte _JSON_indicies[] = init__JSON_indicies_0();
2155
+
2156
+
2157
+ private static byte[] init__JSON_trans_targs_0()
2158
+ {
2159
+ return new byte [] {
2160
+ 1, 0, 10, 6, 3, 5, 4, 10, 7, 9, 8, 2
2161
+ };
2162
+ }
2163
+
2164
+ private static final byte _JSON_trans_targs[] = init__JSON_trans_targs_0();
2165
+
2166
+
2167
+ private static byte[] init__JSON_trans_actions_0()
2168
+ {
2169
+ return new byte [] {
2170
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
2171
+ };
2172
+ }
2173
+
2174
+ private static final byte _JSON_trans_actions[] = init__JSON_trans_actions_0();
2175
+
2176
+
2177
+ static final int JSON_start = 1;
2178
+ static final int JSON_first_final = 10;
2179
+ static final int JSON_error = 0;
2180
+
2181
+ static final int JSON_en_main = 1;
2182
+
2183
+
2184
+ // line 836 "Parser.rl"
2185
+
2186
+
2187
+ public IRubyObject parseImplemetation() {
2188
+ int cs = EVIL;
2189
+ int p, pe;
2190
+ IRubyObject result = null;
2191
+ ParserResult res = new ParserResult();
2192
+
2193
+
2194
+ // line 2195 "Parser.java"
2195
+ {
2196
+ cs = JSON_start;
2197
+ }
2198
+
2199
+ // line 845 "Parser.rl"
2200
+ p = byteList.begin();
2201
+ pe = p + byteList.length();
2202
+
2203
+ // line 2204 "Parser.java"
2204
+ {
2205
+ int _klen;
2206
+ int _trans = 0;
2207
+ int _acts;
2208
+ int _nacts;
2209
+ int _keys;
2210
+ int _goto_targ = 0;
2211
+
2212
+ _goto: while (true) {
2213
+ switch ( _goto_targ ) {
2214
+ case 0:
2215
+ if ( p == pe ) {
2216
+ _goto_targ = 4;
2217
+ continue _goto;
2218
+ }
2219
+ if ( cs == 0 ) {
2220
+ _goto_targ = 5;
2221
+ continue _goto;
2222
+ }
2223
+ case 1:
2224
+ _match: do {
2225
+ _keys = _JSON_key_offsets[cs];
2226
+ _trans = _JSON_index_offsets[cs];
2227
+ _klen = _JSON_single_lengths[cs];
2228
+ if ( _klen > 0 ) {
2229
+ int _lower = _keys;
2230
+ int _mid;
2231
+ int _upper = _keys + _klen - 1;
2232
+ while (true) {
2233
+ if ( _upper < _lower )
2234
+ break;
2235
+
2236
+ _mid = _lower + ((_upper-_lower) >> 1);
2237
+ if ( data[p] < _JSON_trans_keys[_mid] )
2238
+ _upper = _mid - 1;
2239
+ else if ( data[p] > _JSON_trans_keys[_mid] )
2240
+ _lower = _mid + 1;
2241
+ else {
2242
+ _trans += (_mid - _keys);
2243
+ break _match;
2244
+ }
2245
+ }
2246
+ _keys += _klen;
2247
+ _trans += _klen;
2248
+ }
2249
+
2250
+ _klen = _JSON_range_lengths[cs];
2251
+ if ( _klen > 0 ) {
2252
+ int _lower = _keys;
2253
+ int _mid;
2254
+ int _upper = _keys + (_klen<<1) - 2;
2255
+ while (true) {
2256
+ if ( _upper < _lower )
2257
+ break;
2258
+
2259
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
2260
+ if ( data[p] < _JSON_trans_keys[_mid] )
2261
+ _upper = _mid - 2;
2262
+ else if ( data[p] > _JSON_trans_keys[_mid+1] )
2263
+ _lower = _mid + 2;
2264
+ else {
2265
+ _trans += ((_mid - _keys)>>1);
2266
+ break _match;
2267
+ }
2268
+ }
2269
+ _trans += _klen;
2270
+ }
2271
+ } while (false);
2272
+
2273
+ _trans = _JSON_indicies[_trans];
2274
+ cs = _JSON_trans_targs[_trans];
2275
+
2276
+ if ( _JSON_trans_actions[_trans] != 0 ) {
2277
+ _acts = _JSON_trans_actions[_trans];
2278
+ _nacts = (int) _JSON_actions[_acts++];
2279
+ while ( _nacts-- > 0 )
2280
+ {
2281
+ switch ( _JSON_actions[_acts++] )
2282
+ {
2283
+ case 0:
2284
+ // line 822 "Parser.rl"
2285
+ {
2286
+ parseValue(res, p, pe);
2287
+ if (res.result == null) {
2288
+ p--;
2289
+ { p += 1; _goto_targ = 5; if (true) continue _goto;}
2290
+ } else {
2291
+ result = res.result;
2292
+ {p = (( res.p))-1;}
2293
+ }
2294
+ }
2295
+ break;
2296
+ // line 2297 "Parser.java"
2297
+ }
2298
+ }
2299
+ }
2300
+
2301
+ case 2:
2302
+ if ( cs == 0 ) {
2303
+ _goto_targ = 5;
2304
+ continue _goto;
2305
+ }
2306
+ if ( ++p != pe ) {
2307
+ _goto_targ = 1;
2308
+ continue _goto;
2309
+ }
2310
+ case 4:
2311
+ case 5:
2312
+ }
2313
+ break; }
2314
+ }
2315
+
2316
+ // line 848 "Parser.rl"
2317
+
2318
+ if (cs >= JSON_first_final && p == pe) {
2319
+ return result;
2320
+ } else {
2321
+ throw unexpectedToken(p, pe);
2322
+ }
2323
+ }
2324
+
2325
+ public IRubyObject parse() {
2326
+ return parseImplemetation();
2327
+ }
2328
+
2329
+ /**
2330
+ * Updates the "view" bytelist with the new offsets and returns it.
2331
+ * @param start
2332
+ * @param end
2333
+ */
2334
+ private ByteList absSubSequence(int absStart, int absEnd) {
2335
+ view.setBegin(absStart);
2336
+ view.setRealSize(absEnd - absStart);
2337
+ return view;
2338
+ }
2339
+
2340
+ /**
2341
+ * Retrieves a constant directly descended from the <code>JSON</code> module.
2342
+ * @param name The constant name
2343
+ */
2344
+ private IRubyObject getConstant(String name) {
2345
+ return parser.info.jsonModule.get().getConstant(name);
2346
+ }
2347
+
2348
+ private RaiseException newException(String className, String message) {
2349
+ return Utils.newException(context, className, message);
2350
+ }
2351
+
2352
+ private RaiseException newException(String className, RubyString message) {
2353
+ return Utils.newException(context, className, message);
2354
+ }
2355
+
2356
+ private RaiseException newException(String className,
2357
+ String messageBegin, ByteList messageEnd) {
2358
+ return newException(className,
2359
+ getRuntime().newString(messageBegin).cat(messageEnd));
2360
+ }
2361
+ }
2362
+ }