opal-wedge 0.9.0.dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (830) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.gitmodules +7 -0
  4. data/.inch.yml +19 -0
  5. data/.jshintrc +48 -0
  6. data/.rspec +3 -0
  7. data/.spectator +2 -0
  8. data/.spectator-mspec +3 -0
  9. data/.travis.yml +60 -0
  10. data/.yardopts +6 -0
  11. data/CHANGELOG.md +571 -0
  12. data/CODE_OF_CONDUCT.md +15 -0
  13. data/CONTRIBUTING.md +192 -0
  14. data/Gemfile +26 -0
  15. data/Guardfile +77 -0
  16. data/LICENSE +19 -0
  17. data/README.md +167 -0
  18. data/Rakefile +15 -0
  19. data/benchmark/benchmarks +103 -0
  20. data/benchmark/bm_array_intersection_numbers.rb +7 -0
  21. data/benchmark/bm_array_intersection_objects.rb +7 -0
  22. data/benchmark/bm_array_intersection_strings.rb +7 -0
  23. data/benchmark/bm_array_minus_numbers.rb +7 -0
  24. data/benchmark/bm_array_minus_objects.rb +7 -0
  25. data/benchmark/bm_array_minus_strings.rb +7 -0
  26. data/benchmark/bm_array_union_numbers.rb +7 -0
  27. data/benchmark/bm_array_union_objects.rb +7 -0
  28. data/benchmark/bm_array_union_strings.rb +7 -0
  29. data/benchmark/bm_array_uniq_bang_numbers.rb +5 -0
  30. data/benchmark/bm_array_uniq_bang_objects.rb +5 -0
  31. data/benchmark/bm_array_uniq_bang_strings.rb +5 -0
  32. data/benchmark/bm_array_uniq_numbers.rb +5 -0
  33. data/benchmark/bm_array_uniq_objects.rb +5 -0
  34. data/benchmark/bm_array_uniq_strings.rb +5 -0
  35. data/benchmark/bm_dispatch_bind_table.rb +57 -0
  36. data/benchmark/bm_dispatch_code_gen.rb +65 -0
  37. data/benchmark/bm_dispatch_code_gen_if.rb +64 -0
  38. data/benchmark/bm_dispatch_hardcoded.rb +44 -0
  39. data/benchmark/bm_dispatch_send.rb +38 -0
  40. data/benchmark/bm_dispatch_send_table.rb +57 -0
  41. data/benchmark/bm_hash_assoc_object.rb +11 -0
  42. data/benchmark/bm_hash_assoc_string.rb +9 -0
  43. data/benchmark/bm_hash_clone_object.rb +9 -0
  44. data/benchmark/bm_hash_clone_string.rb +9 -0
  45. data/benchmark/bm_hash_delete_object.rb +11 -0
  46. data/benchmark/bm_hash_delete_string.rb +9 -0
  47. data/benchmark/bm_hash_each_key_object.rb +9 -0
  48. data/benchmark/bm_hash_each_key_string.rb +9 -0
  49. data/benchmark/bm_hash_each_object.rb +9 -0
  50. data/benchmark/bm_hash_each_string.rb +9 -0
  51. data/benchmark/bm_hash_each_value_object.rb +9 -0
  52. data/benchmark/bm_hash_each_value_string.rb +9 -0
  53. data/benchmark/bm_hash_element_reference_object.rb +11 -0
  54. data/benchmark/bm_hash_element_reference_string.rb +9 -0
  55. data/benchmark/bm_hash_element_set_object.rb +5 -0
  56. data/benchmark/bm_hash_element_set_string.rb +5 -0
  57. data/benchmark/bm_hash_equal_value_object.rb +14 -0
  58. data/benchmark/bm_hash_equal_value_string.rb +11 -0
  59. data/benchmark/bm_hash_fetch_object.rb +11 -0
  60. data/benchmark/bm_hash_fetch_string.rb +9 -0
  61. data/benchmark/bm_hash_flatten_object.rb +9 -0
  62. data/benchmark/bm_hash_flatten_string.rb +9 -0
  63. data/benchmark/bm_hash_has_key_object.rb +11 -0
  64. data/benchmark/bm_hash_has_key_string.rb +9 -0
  65. data/benchmark/bm_hash_has_value_object.rb +9 -0
  66. data/benchmark/bm_hash_has_value_string.rb +9 -0
  67. data/benchmark/bm_hash_hash_object.rb +9 -0
  68. data/benchmark/bm_hash_hash_string.rb +9 -0
  69. data/benchmark/bm_hash_inspect_object.rb +9 -0
  70. data/benchmark/bm_hash_inspect_string.rb +9 -0
  71. data/benchmark/bm_hash_invert_object.rb +9 -0
  72. data/benchmark/bm_hash_invert_string.rb +9 -0
  73. data/benchmark/bm_hash_keep_if_object.rb +9 -0
  74. data/benchmark/bm_hash_keep_if_string.rb +9 -0
  75. data/benchmark/bm_hash_key_object.rb +9 -0
  76. data/benchmark/bm_hash_key_string.rb +9 -0
  77. data/benchmark/bm_hash_keys_object.rb +9 -0
  78. data/benchmark/bm_hash_keys_string.rb +9 -0
  79. data/benchmark/bm_hash_literal_mixed_large.rb +3 -0
  80. data/benchmark/bm_hash_literal_mixed_small.rb +3 -0
  81. data/benchmark/bm_hash_literal_object_large.rb +4 -0
  82. data/benchmark/bm_hash_literal_object_small.rb +3 -0
  83. data/benchmark/bm_hash_literal_string_large.rb +4 -0
  84. data/benchmark/bm_hash_literal_string_small.rb +3 -0
  85. data/benchmark/bm_hash_merge_object.rb +22 -0
  86. data/benchmark/bm_hash_merge_string.rb +18 -0
  87. data/benchmark/bm_hash_rassoc_object.rb +9 -0
  88. data/benchmark/bm_hash_rassoc_string.rb +9 -0
  89. data/benchmark/bm_hash_rehash_object.rb +9 -0
  90. data/benchmark/bm_hash_rehash_string.rb +9 -0
  91. data/benchmark/bm_hash_reject_bang_object.rb +9 -0
  92. data/benchmark/bm_hash_reject_bang_string.rb +9 -0
  93. data/benchmark/bm_hash_reject_object.rb +9 -0
  94. data/benchmark/bm_hash_reject_string.rb +9 -0
  95. data/benchmark/bm_hash_replace_object.rb +18 -0
  96. data/benchmark/bm_hash_replace_string.rb +14 -0
  97. data/benchmark/bm_hash_select_bang_object.rb +9 -0
  98. data/benchmark/bm_hash_select_bang_string.rb +9 -0
  99. data/benchmark/bm_hash_select_object.rb +9 -0
  100. data/benchmark/bm_hash_select_string.rb +9 -0
  101. data/benchmark/bm_hash_shift_object.rb +10 -0
  102. data/benchmark/bm_hash_shift_string.rb +10 -0
  103. data/benchmark/bm_hash_to_a_object.rb +9 -0
  104. data/benchmark/bm_hash_to_a_string.rb +9 -0
  105. data/benchmark/bm_hash_to_h_object.rb +10 -0
  106. data/benchmark/bm_hash_to_h_string.rb +10 -0
  107. data/benchmark/bm_hash_values_object.rb +9 -0
  108. data/benchmark/bm_hash_values_string.rb +9 -0
  109. data/benchmark/run.rb +37 -0
  110. data/bin/opal +27 -0
  111. data/bin/opal-build +77 -0
  112. data/bin/opal-mspec +10 -0
  113. data/bin/opal-repl +72 -0
  114. data/config.ru +14 -0
  115. data/docs/compiler_directives.md +127 -0
  116. data/examples/rack/.gitignore +1 -0
  117. data/examples/rack/Gemfile +3 -0
  118. data/examples/rack/app/application.rb +13 -0
  119. data/examples/rack/app/user.rb +22 -0
  120. data/examples/rack/config.ru +20 -0
  121. data/examples/rack/index.html.erb +10 -0
  122. data/examples/sinatra/Gemfile +5 -0
  123. data/examples/sinatra/app/application.rb +7 -0
  124. data/examples/sinatra/config.ru +38 -0
  125. data/lib/mspec/opal/main.rb.erb +9 -0
  126. data/lib/mspec/opal/new.html.erb +1 -0
  127. data/lib/mspec/opal/rake_task.rb +248 -0
  128. data/lib/mspec/opal/runner.rb +281 -0
  129. data/lib/mspec/opal/special_calls.rb +44 -0
  130. data/lib/mspec/opal/sprockets.js +57 -0
  131. data/lib/opal-wedge.rb +4 -0
  132. data/lib/opal.rb +11 -0
  133. data/lib/opal/builder.rb +161 -0
  134. data/lib/opal/builder_processors.rb +149 -0
  135. data/lib/opal/cli.rb +162 -0
  136. data/lib/opal/cli_options.rb +158 -0
  137. data/lib/opal/cli_runners.rb +11 -0
  138. data/lib/opal/cli_runners/apple_script.rb +65 -0
  139. data/lib/opal/cli_runners/nodejs.rb +63 -0
  140. data/lib/opal/cli_runners/phantom.js +44 -0
  141. data/lib/opal/cli_runners/phantomjs.rb +28 -0
  142. data/lib/opal/cli_runners/server.rb +56 -0
  143. data/lib/opal/compiler.rb +381 -0
  144. data/lib/opal/config.rb +48 -0
  145. data/lib/opal/erb.rb +84 -0
  146. data/lib/opal/fragment.rb +53 -0
  147. data/lib/opal/hike_path_finder.rb +18 -0
  148. data/lib/opal/nodes.rb +26 -0
  149. data/lib/opal/nodes/arglist.rb +56 -0
  150. data/lib/opal/nodes/array.rb +54 -0
  151. data/lib/opal/nodes/base.rb +151 -0
  152. data/lib/opal/nodes/call.rb +290 -0
  153. data/lib/opal/nodes/call_special.rb +252 -0
  154. data/lib/opal/nodes/case.rb +96 -0
  155. data/lib/opal/nodes/class.rb +42 -0
  156. data/lib/opal/nodes/constants.rb +78 -0
  157. data/lib/opal/nodes/def.rb +281 -0
  158. data/lib/opal/nodes/defined.rb +113 -0
  159. data/lib/opal/nodes/definitions.rb +168 -0
  160. data/lib/opal/nodes/for.rb +48 -0
  161. data/lib/opal/nodes/hash.rb +67 -0
  162. data/lib/opal/nodes/helpers.rb +116 -0
  163. data/lib/opal/nodes/if.rb +81 -0
  164. data/lib/opal/nodes/iter.rb +136 -0
  165. data/lib/opal/nodes/literal.rb +247 -0
  166. data/lib/opal/nodes/logic.rb +217 -0
  167. data/lib/opal/nodes/masgn.rb +62 -0
  168. data/lib/opal/nodes/module.rb +45 -0
  169. data/lib/opal/nodes/rescue.rb +143 -0
  170. data/lib/opal/nodes/runtime_helpers.rb +45 -0
  171. data/lib/opal/nodes/scope.rb +281 -0
  172. data/lib/opal/nodes/singleton_class.rb +26 -0
  173. data/lib/opal/nodes/super.rb +97 -0
  174. data/lib/opal/nodes/top.rb +103 -0
  175. data/lib/opal/nodes/variables.rb +191 -0
  176. data/lib/opal/nodes/while.rb +65 -0
  177. data/lib/opal/nodes/yield.rb +95 -0
  178. data/lib/opal/parser.rb +742 -0
  179. data/lib/opal/parser/grammar.rb +5723 -0
  180. data/lib/opal/parser/grammar.y +1787 -0
  181. data/lib/opal/parser/keywords.rb +66 -0
  182. data/lib/opal/parser/lexer.rb +1260 -0
  183. data/lib/opal/parser/parser_scope.rb +28 -0
  184. data/lib/opal/parser/sexp.rb +81 -0
  185. data/lib/opal/path_reader.rb +35 -0
  186. data/lib/opal/paths.rb +55 -0
  187. data/lib/opal/regexp_anchors.rb +5 -0
  188. data/lib/opal/source_map.rb +70 -0
  189. data/lib/opal/sprockets.rb +3 -0
  190. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  191. data/lib/opal/sprockets/environment.rb +31 -0
  192. data/lib/opal/sprockets/erb.rb +23 -0
  193. data/lib/opal/sprockets/path_reader.rb +36 -0
  194. data/lib/opal/sprockets/processor.rb +167 -0
  195. data/lib/opal/sprockets/server.rb +160 -0
  196. data/lib/opal/sprockets/source_map_header_patch.rb +41 -0
  197. data/lib/opal/sprockets/source_map_server.rb +115 -0
  198. data/lib/opal/util.rb +69 -0
  199. data/lib/opal/version.rb +5 -0
  200. data/lib/tilt/opal.rb +54 -0
  201. data/opal.gemspec +37 -0
  202. data/opal/README.md +6 -0
  203. data/opal/corelib/array.rb +2073 -0
  204. data/opal/corelib/array/inheritance.rb +127 -0
  205. data/opal/corelib/basic_object.rb +82 -0
  206. data/opal/corelib/boolean.rb +47 -0
  207. data/opal/corelib/class.rb +55 -0
  208. data/opal/corelib/comparable.rb +57 -0
  209. data/opal/corelib/complex.rb +3 -0
  210. data/opal/corelib/dir.rb +20 -0
  211. data/opal/corelib/enumerable.rb +1138 -0
  212. data/opal/corelib/enumerator.rb +426 -0
  213. data/opal/corelib/error.rb +77 -0
  214. data/opal/corelib/file.rb +59 -0
  215. data/opal/corelib/hash.rb +951 -0
  216. data/opal/corelib/helpers.rb +102 -0
  217. data/opal/corelib/io.rb +73 -0
  218. data/opal/corelib/kernel.rb +1124 -0
  219. data/opal/corelib/main.rb +7 -0
  220. data/opal/corelib/match_data.rb +128 -0
  221. data/opal/corelib/method.rb +62 -0
  222. data/opal/corelib/module.rb +553 -0
  223. data/opal/corelib/nil_class.rb +57 -0
  224. data/opal/corelib/numeric.rb +564 -0
  225. data/opal/corelib/proc.rb +105 -0
  226. data/opal/corelib/process.rb +27 -0
  227. data/opal/corelib/range.rb +116 -0
  228. data/opal/corelib/rational.rb +3 -0
  229. data/opal/corelib/regexp.rb +203 -0
  230. data/opal/corelib/runtime.js +1637 -0
  231. data/opal/corelib/string.rb +1762 -0
  232. data/opal/corelib/string/inheritance.rb +117 -0
  233. data/opal/corelib/struct.rb +159 -0
  234. data/opal/corelib/time.rb +746 -0
  235. data/opal/corelib/variables.rb +28 -0
  236. data/opal/opal.rb +33 -0
  237. data/spec/README.md +8 -0
  238. data/spec/filters/bugs/array.rb +77 -0
  239. data/spec/filters/bugs/basicobject.rb +33 -0
  240. data/spec/filters/bugs/class.rb +15 -0
  241. data/spec/filters/bugs/comparable.rb +4 -0
  242. data/spec/filters/bugs/date.rb +173 -0
  243. data/spec/filters/bugs/enumerable.rb +62 -0
  244. data/spec/filters/bugs/enumerator.rb +45 -0
  245. data/spec/filters/bugs/exception.rb +84 -0
  246. data/spec/filters/bugs/fixnum.rb +35 -0
  247. data/spec/filters/bugs/float.rb +100 -0
  248. data/spec/filters/bugs/hash.rb +17 -0
  249. data/spec/filters/bugs/integer.rb +63 -0
  250. data/spec/filters/bugs/kernel.rb +395 -0
  251. data/spec/filters/bugs/language.rb +246 -0
  252. data/spec/filters/bugs/math.rb +89 -0
  253. data/spec/filters/bugs/method.rb +5 -0
  254. data/spec/filters/bugs/module.rb +372 -0
  255. data/spec/filters/bugs/nil.rb +7 -0
  256. data/spec/filters/bugs/numeric.rb +123 -0
  257. data/spec/filters/bugs/proc.rb +65 -0
  258. data/spec/filters/bugs/range.rb +148 -0
  259. data/spec/filters/bugs/regexp.rb +252 -0
  260. data/spec/filters/bugs/set.rb +51 -0
  261. data/spec/filters/bugs/singleton.rb +6 -0
  262. data/spec/filters/bugs/string.rb +99 -0
  263. data/spec/filters/bugs/strscan.rb +106 -0
  264. data/spec/filters/bugs/struct.rb +22 -0
  265. data/spec/filters/bugs/time.rb +28 -0
  266. data/spec/filters/bugs/unboundmethod.rb +22 -0
  267. data/spec/filters/unsupported/array.rb +176 -0
  268. data/spec/filters/unsupported/basicobject.rb +12 -0
  269. data/spec/filters/unsupported/class.rb +4 -0
  270. data/spec/filters/unsupported/delegator.rb +5 -0
  271. data/spec/filters/unsupported/enumerable.rb +8 -0
  272. data/spec/filters/unsupported/enumerator.rb +13 -0
  273. data/spec/filters/unsupported/fixnum.rb +15 -0
  274. data/spec/filters/unsupported/float.rb +6 -0
  275. data/spec/filters/unsupported/hash.rb +55 -0
  276. data/spec/filters/unsupported/integer.rb +3 -0
  277. data/spec/filters/unsupported/kernel.rb +22 -0
  278. data/spec/filters/unsupported/language.rb +31 -0
  279. data/spec/filters/unsupported/matchdata.rb +33 -0
  280. data/spec/filters/unsupported/math.rb +3 -0
  281. data/spec/filters/unsupported/module.rb +36 -0
  282. data/spec/filters/unsupported/pathname.rb +3 -0
  283. data/spec/filters/unsupported/regexp.rb +94 -0
  284. data/spec/filters/unsupported/set.rb +4 -0
  285. data/spec/filters/unsupported/singleton.rb +6 -0
  286. data/spec/filters/unsupported/string.rb +538 -0
  287. data/spec/filters/unsupported/struct.rb +3 -0
  288. data/spec/filters/unsupported/time.rb +208 -0
  289. data/spec/lib/builder_processors_spec.rb +27 -0
  290. data/spec/lib/builder_spec.rb +72 -0
  291. data/spec/lib/cli_spec.rb +150 -0
  292. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +87 -0
  293. data/spec/lib/compiler_spec.rb +131 -0
  294. data/spec/lib/dependency_resolver_spec.rb +40 -0
  295. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +4 -0
  296. data/spec/lib/fixtures/file_with_directives.js +2 -0
  297. data/spec/lib/fixtures/jst_file.js.jst +1 -0
  298. data/spec/lib/fixtures/no_requires.rb +1 -0
  299. data/spec/lib/fixtures/opal_file.rb +2 -0
  300. data/spec/lib/fixtures/require_tree_test.rb +3 -0
  301. data/spec/lib/fixtures/required_file.js +1 -0
  302. data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
  303. data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
  304. data/spec/lib/fixtures/requires.rb +7 -0
  305. data/spec/lib/fixtures/source_map.rb +1 -0
  306. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +1 -0
  307. data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
  308. data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
  309. data/spec/lib/hike_path_finder_spec.rb +23 -0
  310. data/spec/lib/lexer_spec.rb +110 -0
  311. data/spec/lib/parser/alias_spec.rb +26 -0
  312. data/spec/lib/parser/and_spec.rb +13 -0
  313. data/spec/lib/parser/attrasgn_spec.rb +28 -0
  314. data/spec/lib/parser/begin_spec.rb +42 -0
  315. data/spec/lib/parser/block_spec.rb +12 -0
  316. data/spec/lib/parser/break_spec.rb +17 -0
  317. data/spec/lib/parser/call_spec.rb +165 -0
  318. data/spec/lib/parser/class_spec.rb +35 -0
  319. data/spec/lib/parser/comments_spec.rb +11 -0
  320. data/spec/lib/parser/def_spec.rb +80 -0
  321. data/spec/lib/parser/if_spec.rb +26 -0
  322. data/spec/lib/parser/iter_spec.rb +59 -0
  323. data/spec/lib/parser/lambda_spec.rb +64 -0
  324. data/spec/lib/parser/literal_spec.rb +118 -0
  325. data/spec/lib/parser/masgn_spec.rb +37 -0
  326. data/spec/lib/parser/module_spec.rb +27 -0
  327. data/spec/lib/parser/not_spec.rb +21 -0
  328. data/spec/lib/parser/op_asgn1_spec.rb +23 -0
  329. data/spec/lib/parser/op_asgn2_spec.rb +23 -0
  330. data/spec/lib/parser/or_spec.rb +13 -0
  331. data/spec/lib/parser/return_spec.rb +17 -0
  332. data/spec/lib/parser/sclass_spec.rb +21 -0
  333. data/spec/lib/parser/string_spec.rb +276 -0
  334. data/spec/lib/parser/super_spec.rb +20 -0
  335. data/spec/lib/parser/unary_spec.rb +48 -0
  336. data/spec/lib/parser/undef_spec.rb +15 -0
  337. data/spec/lib/parser/unless_spec.rb +13 -0
  338. data/spec/lib/parser/variables_spec.rb +92 -0
  339. data/spec/lib/parser/while_spec.rb +15 -0
  340. data/spec/lib/parser/yield_spec.rb +20 -0
  341. data/spec/lib/path_reader_spec.rb +36 -0
  342. data/spec/lib/shared/path_finder_shared.rb +19 -0
  343. data/spec/lib/shared/path_reader_shared.rb +31 -0
  344. data/spec/lib/spec_helper.rb +9 -0
  345. data/spec/lib/sprockets/erb_spec.rb +38 -0
  346. data/spec/lib/sprockets/path_reader_spec.rb +41 -0
  347. data/spec/lib/sprockets/processor_spec.rb +67 -0
  348. data/spec/lib/sprockets/server_spec.rb +102 -0
  349. data/spec/lib/tilt/opal_spec.rb +37 -0
  350. data/spec/opal/compiler/irb_spec.rb +44 -0
  351. data/spec/opal/core/array/intersection_spec.rb +38 -0
  352. data/spec/opal/core/array/minus_spec.rb +38 -0
  353. data/spec/opal/core/array/select_spec.rb +14 -0
  354. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  355. data/spec/opal/core/array/union_spec.rb +38 -0
  356. data/spec/opal/core/array/uniq_spec.rb +49 -0
  357. data/spec/opal/core/date_spec.rb +177 -0
  358. data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
  359. data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
  360. data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
  361. data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
  362. data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
  363. data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
  364. data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
  365. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
  366. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
  367. data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
  368. data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
  369. data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
  370. data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
  371. data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
  372. data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
  373. data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
  374. data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
  375. data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
  376. data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
  377. data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
  378. data/spec/opal/core/exception_spec.rb +13 -0
  379. data/spec/opal/core/fixtures/class.rb +124 -0
  380. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  381. data/spec/opal/core/fixtures/constants.rb +33 -0
  382. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
  383. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
  384. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
  385. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
  386. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
  387. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +1 -0
  388. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +1 -0
  389. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +1 -0
  390. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +1 -0
  391. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +1 -0
  392. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +1 -0
  393. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +3 -0
  394. data/spec/opal/core/hash/has_value_spec.rb +13 -0
  395. data/spec/opal/core/hash/internals_spec.rb +332 -0
  396. data/spec/opal/core/kernel/Array_spec.rb +10 -0
  397. data/spec/opal/core/kernel/block_given_spec.rb +30 -0
  398. data/spec/opal/core/kernel/class_spec.rb +6 -0
  399. data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
  400. data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
  401. data/spec/opal/core/kernel/extend_spec.rb +21 -0
  402. data/spec/opal/core/kernel/format_spec.rb +122 -0
  403. data/spec/opal/core/kernel/freeze_spec.rb +15 -0
  404. data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
  405. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
  406. data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
  407. data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
  408. data/spec/opal/core/kernel/loop_spec.rb +23 -0
  409. data/spec/opal/core/kernel/match_spec.rb +5 -0
  410. data/spec/opal/core/kernel/method_spec.rb +31 -0
  411. data/spec/opal/core/kernel/methods_spec.rb +25 -0
  412. data/spec/opal/core/kernel/nil_spec.rb +7 -0
  413. data/spec/opal/core/kernel/p_spec.rb +15 -0
  414. data/spec/opal/core/kernel/printf_spec.rb +11 -0
  415. data/spec/opal/core/kernel/proc_spec.rb +13 -0
  416. data/spec/opal/core/kernel/rand_spec.rb +23 -0
  417. data/spec/opal/core/kernel/require_tree_spec.rb +18 -0
  418. data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
  419. data/spec/opal/core/kernel/send_spec.rb +56 -0
  420. data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
  421. data/spec/opal/core/language/block_spec.rb +538 -0
  422. data/spec/opal/core/language/fixtures/array.rb +11 -0
  423. data/spec/opal/core/language/fixtures/block.rb +57 -0
  424. data/spec/opal/core/language/fixtures/break.rb +240 -0
  425. data/spec/opal/core/language/fixtures/ensure.rb +72 -0
  426. data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
  427. data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
  428. data/spec/opal/core/language/fixtures/module.rb +24 -0
  429. data/spec/opal/core/language/fixtures/next.rb +128 -0
  430. data/spec/opal/core/language/fixtures/return.rb +118 -0
  431. data/spec/opal/core/language/fixtures/send.rb +110 -0
  432. data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
  433. data/spec/opal/core/language/fixtures/super.rb +308 -0
  434. data/spec/opal/core/language/fixtures/variables.rb +58 -0
  435. data/spec/opal/core/language/fixtures/yield.rb +28 -0
  436. data/spec/opal/core/language/predefined_spec.rb +138 -0
  437. data/spec/opal/core/language/proc_spec.rb +263 -0
  438. data/spec/opal/core/language/regexp_spec.rb +20 -0
  439. data/spec/opal/core/language/send_spec.rb +225 -0
  440. data/spec/opal/core/language/string_spec.rb +44 -0
  441. data/spec/opal/core/language/variables_spec.rb +1366 -0
  442. data/spec/opal/core/language/versions/array_1.9.rb +39 -0
  443. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  444. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  445. data/spec/opal/core/language/versions/case_1.9.rb +20 -0
  446. data/spec/opal/core/language/versions/def_2_0_spec.rb +62 -0
  447. data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
  448. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
  449. data/spec/opal/core/language/versions/not_1.9.rb +22 -0
  450. data/spec/opal/core/language/versions/send_1.9.rb +241 -0
  451. data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
  452. data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
  453. data/spec/opal/core/language_spec.rb +23 -0
  454. data/spec/opal/core/method/to_proc_spec.rb +28 -0
  455. data/spec/opal/core/module/alias_method_spec.rb +28 -0
  456. data/spec/opal/core/module/ancestors_spec.rb +11 -0
  457. data/spec/opal/core/module/append_features_spec.rb +14 -0
  458. data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
  459. data/spec/opal/core/module/const_defined_spec.rb +85 -0
  460. data/spec/opal/core/module/const_get_spec.rb +85 -0
  461. data/spec/opal/core/module/const_missing_spec.rb +17 -0
  462. data/spec/opal/core/module/const_set_spec.rb +64 -0
  463. data/spec/opal/core/module/constants_spec.rb +49 -0
  464. data/spec/opal/core/module/fixtures/classes.rb +434 -0
  465. data/spec/opal/core/module/method_defined_spec.rb +48 -0
  466. data/spec/opal/core/module/module_function_spec.rb +25 -0
  467. data/spec/opal/core/module/name_spec.rb +52 -0
  468. data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
  469. data/spec/opal/core/module/remove_const_spec.rb +22 -0
  470. data/spec/opal/core/module/undef_method_spec.rb +66 -0
  471. data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
  472. data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
  473. data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
  474. data/spec/opal/core/numeric/ceil_spec.rb +8 -0
  475. data/spec/opal/core/numeric/chr_spec.rb +8 -0
  476. data/spec/opal/core/numeric/comparison_spec.rb +24 -0
  477. data/spec/opal/core/numeric/complement_spec.rb +8 -0
  478. data/spec/opal/core/numeric/divide_spec.rb +10 -0
  479. data/spec/opal/core/numeric/eql_spec.rb +9 -0
  480. data/spec/opal/core/numeric/exponent_spec.rb +33 -0
  481. data/spec/opal/core/numeric/floor_spec.rb +8 -0
  482. data/spec/opal/core/numeric/gt_spec.rb +11 -0
  483. data/spec/opal/core/numeric/gte_spec.rb +12 -0
  484. data/spec/opal/core/numeric/integer_spec.rb +9 -0
  485. data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
  486. data/spec/opal/core/numeric/lt_spec.rb +11 -0
  487. data/spec/opal/core/numeric/lte_spec.rb +12 -0
  488. data/spec/opal/core/numeric/minus_spec.rb +8 -0
  489. data/spec/opal/core/numeric/modulo_spec.rb +19 -0
  490. data/spec/opal/core/numeric/multiply_spec.rb +9 -0
  491. data/spec/opal/core/numeric/next_spec.rb +9 -0
  492. data/spec/opal/core/numeric/ord_spec.rb +9 -0
  493. data/spec/opal/core/numeric/plus_spec.rb +8 -0
  494. data/spec/opal/core/numeric/pred_spec.rb +7 -0
  495. data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
  496. data/spec/opal/core/numeric/step_spec.rb +11 -0
  497. data/spec/opal/core/numeric/succ_spec.rb +9 -0
  498. data/spec/opal/core/numeric/times_spec.rb +36 -0
  499. data/spec/opal/core/numeric/to_f_spec.rb +7 -0
  500. data/spec/opal/core/numeric/to_i_spec.rb +7 -0
  501. data/spec/opal/core/numeric/to_json_spec.rb +8 -0
  502. data/spec/opal/core/numeric/to_s_spec.rb +26 -0
  503. data/spec/opal/core/numeric/uminus_spec.rb +9 -0
  504. data/spec/opal/core/numeric/upto_spec.rb +19 -0
  505. data/spec/opal/core/numeric/zero_spec.rb +7 -0
  506. data/spec/opal/core/object_id_spec.rb +56 -0
  507. data/spec/opal/core/proc/call_spec.rb +21 -0
  508. data/spec/opal/core/proc/element_reference_spec.rb +21 -0
  509. data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
  510. data/spec/opal/core/runtime/begin_spec.rb +39 -0
  511. data/spec/opal/core/runtime/block_send_spec.rb +28 -0
  512. data/spec/opal/core/runtime/block_spec.rb +23 -0
  513. data/spec/opal/core/runtime/bridged_classes_spec.rb +111 -0
  514. data/spec/opal/core/runtime/constants_spec.rb +13 -0
  515. data/spec/opal/core/runtime/donate_spec.rb +53 -0
  516. data/spec/opal/core/runtime/eval_spec.rb +5 -0
  517. data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
  518. data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
  519. data/spec/opal/core/runtime/method_spec.rb +31 -0
  520. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  521. data/spec/opal/core/runtime/paren_spec.rb +14 -0
  522. data/spec/opal/core/runtime/rescue_spec.rb +38 -0
  523. data/spec/opal/core/runtime/return_spec.rb +38 -0
  524. data/spec/opal/core/runtime/send_spec.rb +34 -0
  525. data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
  526. data/spec/opal/core/runtime/super_spec.rb +212 -0
  527. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  528. data/spec/opal/core/runtime/variables_spec.rb +20 -0
  529. data/spec/opal/core/runtime_spec.rb +58 -0
  530. data/spec/opal/core/source_map_spec.rb +15 -0
  531. data/spec/opal/core/string_spec.rb +11 -0
  532. data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
  533. data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
  534. data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
  535. data/spec/opal/stdlib/erb/simple.opalerb +1 -0
  536. data/spec/opal/stdlib/js_spec.rb +66 -0
  537. data/spec/opal/stdlib/json/ext_spec.rb +48 -0
  538. data/spec/opal/stdlib/json/parse_spec.rb +33 -0
  539. data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
  540. data/spec/opal/stdlib/native/each_spec.rb +13 -0
  541. data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
  542. data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
  543. data/spec/opal/stdlib/native/ext_spec.rb +19 -0
  544. data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
  545. data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
  546. data/spec/opal/stdlib/native/native_alias_spec.rb +19 -0
  547. data/spec/opal/stdlib/native/native_class_spec.rb +18 -0
  548. data/spec/opal/stdlib/native/native_module_spec.rb +13 -0
  549. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  550. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  551. data/spec/opal/stdlib/native/new_spec.rb +8 -0
  552. data/spec/opal/stdlib/promise/always_spec.rb +30 -0
  553. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  554. data/spec/opal/stdlib/promise/rescue_spec.rb +44 -0
  555. data/spec/opal/stdlib/promise/then_spec.rb +71 -0
  556. data/spec/opal/stdlib/promise/trace_spec.rb +52 -0
  557. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  558. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  559. data/spec/opal/stdlib/template/paths_spec.rb +10 -0
  560. data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
  561. data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
  562. data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
  563. data/spec/rubyspecs +144 -0
  564. data/spec/spec_helper.rb +53 -0
  565. data/spec/support/mspec_rspec_adapter.rb +33 -0
  566. data/spec/support/parser_helpers.rb +37 -0
  567. data/stdlib/README.md +3 -0
  568. data/stdlib/base64.rb +152 -0
  569. data/stdlib/benchmark.rb +557 -0
  570. data/stdlib/buffer.rb +41 -0
  571. data/stdlib/buffer/array.rb +66 -0
  572. data/stdlib/buffer/view.rb +70 -0
  573. data/stdlib/date.rb +248 -0
  574. data/stdlib/delegate.rb +29 -0
  575. data/stdlib/dir.rb +1 -0
  576. data/stdlib/encoding.rb +170 -0
  577. data/stdlib/enumerator.rb +1 -0
  578. data/stdlib/erb.rb +16 -0
  579. data/stdlib/file.rb +1 -0
  580. data/stdlib/fileutils.rb +0 -0
  581. data/stdlib/forwardable.rb +71 -0
  582. data/stdlib/iconv.rb +0 -0
  583. data/stdlib/js.rb +56 -0
  584. data/stdlib/json.rb +190 -0
  585. data/stdlib/math.rb +370 -0
  586. data/stdlib/native.rb +530 -0
  587. data/stdlib/nodejs.rb +7 -0
  588. data/stdlib/nodejs/dir.rb +13 -0
  589. data/stdlib/nodejs/file.rb +98 -0
  590. data/stdlib/nodejs/fileutils.rb +26 -0
  591. data/stdlib/nodejs/io.rb +2 -0
  592. data/stdlib/nodejs/irb.rb +45 -0
  593. data/stdlib/nodejs/kernel.rb +33 -0
  594. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  595. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  596. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  597. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  598. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  599. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  600. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  601. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  602. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  603. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  604. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  605. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  606. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  607. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  608. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  609. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  610. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  611. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  612. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  613. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  614. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  615. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  616. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  617. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  618. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  619. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  620. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  621. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  622. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  623. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  624. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  625. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  626. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  627. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  628. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  629. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  630. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  631. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  632. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  633. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  634. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  635. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  636. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  637. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  638. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  639. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  640. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  641. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  642. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  643. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  644. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  645. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  646. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  647. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  648. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  649. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  650. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  651. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  652. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  653. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  654. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  655. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  656. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  657. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  658. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  659. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  660. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  661. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  662. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  663. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  664. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  665. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  666. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  667. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  668. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  669. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  670. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  671. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  672. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  673. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  674. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  675. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  676. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  677. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  678. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  679. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  680. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  681. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  682. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  683. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  684. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  685. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  686. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  687. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  688. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  689. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  690. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  691. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  692. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  693. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  694. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  695. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  696. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  697. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  698. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  699. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  700. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  701. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  702. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  703. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  704. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  705. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  706. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  707. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  708. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  709. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  710. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  711. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  712. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  714. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  715. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  725. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  726. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  727. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  728. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  729. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  730. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  731. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  732. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  733. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  734. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  735. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  736. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  737. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  738. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  739. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  740. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  741. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  742. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  743. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  744. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  745. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  746. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  747. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  748. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  749. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  750. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  751. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  752. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  753. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  754. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  755. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  756. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  757. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  758. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  759. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  760. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  761. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  762. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  763. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  764. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  765. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  766. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  767. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  768. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  769. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  770. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  771. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  772. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  773. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  774. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  775. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  776. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  777. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  778. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  779. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  780. data/stdlib/nodejs/package.json +6 -0
  781. data/stdlib/nodejs/require.rb +30 -0
  782. data/stdlib/nodejs/rubygems.rb +68 -0
  783. data/stdlib/nodejs/yaml.rb +11 -0
  784. data/stdlib/observer.rb +202 -0
  785. data/stdlib/opal-parser.rb +54 -0
  786. data/stdlib/opal-source-maps.rb +2 -0
  787. data/stdlib/ostruct.rb +69 -0
  788. data/stdlib/pathname.rb +55 -0
  789. data/stdlib/phantomjs.rb +3 -0
  790. data/stdlib/pp.rb +35 -0
  791. data/stdlib/promise.rb +427 -0
  792. data/stdlib/racc/parser.rb +215 -0
  793. data/stdlib/rbconfig.rb +18 -0
  794. data/stdlib/securerandom.rb +12 -0
  795. data/stdlib/set.rb +170 -0
  796. data/stdlib/singleton.rb +40 -0
  797. data/stdlib/source_map.rb +5 -0
  798. data/stdlib/source_map/map.rb +220 -0
  799. data/stdlib/source_map/mapping.rb +26 -0
  800. data/stdlib/source_map/offset.rb +88 -0
  801. data/stdlib/source_map/version.rb +3 -0
  802. data/stdlib/source_map/vlq.rb +98 -0
  803. data/stdlib/sourcemap.rb +1 -0
  804. data/stdlib/stringio.rb +181 -0
  805. data/stdlib/strscan.rb +166 -0
  806. data/stdlib/template.rb +46 -0
  807. data/stdlib/thread.rb +164 -0
  808. data/stdlib/time.rb +9 -0
  809. data/stdlib/yaml.rb +1 -0
  810. data/tasks/benchmarking.rake +88 -0
  811. data/tasks/building.rake +58 -0
  812. data/tasks/documenting.rake +37 -0
  813. data/tasks/github.rake +19 -0
  814. data/tasks/linting.rake +18 -0
  815. data/tasks/testing.rake +125 -0
  816. data/vendored-minitest/minitest.rb +780 -0
  817. data/vendored-minitest/minitest/assertions.rb +662 -0
  818. data/vendored-minitest/minitest/autorun.rb +12 -0
  819. data/vendored-minitest/minitest/benchmark.rb +426 -0
  820. data/vendored-minitest/minitest/expectations.rb +281 -0
  821. data/vendored-minitest/minitest/hell.rb +11 -0
  822. data/vendored-minitest/minitest/mock.rb +220 -0
  823. data/vendored-minitest/minitest/parallel.rb +65 -0
  824. data/vendored-minitest/minitest/pride.rb +4 -0
  825. data/vendored-minitest/minitest/pride_plugin.rb +142 -0
  826. data/vendored-minitest/minitest/spec.rb +310 -0
  827. data/vendored-minitest/minitest/test.rb +293 -0
  828. data/vendored-minitest/minitest/unit.rb +45 -0
  829. data/vendored-minitest/test/unit.rb +28 -0
  830. metadata +1058 -0
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+
4
+ function YAMLException(reason, mark) {
5
+ this.name = 'YAMLException';
6
+ this.reason = reason;
7
+ this.mark = mark;
8
+ this.message = this.toString(false);
9
+ }
10
+
11
+
12
+ YAMLException.prototype.toString = function toString(compact) {
13
+ var result;
14
+
15
+ result = 'JS-YAML: ' + (this.reason || '(unknown reason)');
16
+
17
+ if (!compact && this.mark) {
18
+ result += ' ' + this.mark.toString();
19
+ }
20
+
21
+ return result;
22
+ };
23
+
24
+
25
+ module.exports = YAMLException;
@@ -0,0 +1,1581 @@
1
+ 'use strict';
2
+
3
+
4
+ var common = require('./common');
5
+ var YAMLException = require('./exception');
6
+ var Mark = require('./mark');
7
+ var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
8
+ var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
9
+
10
+
11
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
12
+
13
+
14
+ var CONTEXT_FLOW_IN = 1;
15
+ var CONTEXT_FLOW_OUT = 2;
16
+ var CONTEXT_BLOCK_IN = 3;
17
+ var CONTEXT_BLOCK_OUT = 4;
18
+
19
+
20
+ var CHOMPING_CLIP = 1;
21
+ var CHOMPING_STRIP = 2;
22
+ var CHOMPING_KEEP = 3;
23
+
24
+
25
+ var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uD800-\uDFFF\uFFFE\uFFFF]/;
26
+ var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
27
+ var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
28
+ var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
29
+ var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
30
+
31
+
32
+ function is_EOL(c) {
33
+ return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
34
+ }
35
+
36
+ function is_WHITE_SPACE(c) {
37
+ return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
38
+ }
39
+
40
+ function is_WS_OR_EOL(c) {
41
+ return (c === 0x09/* Tab */) ||
42
+ (c === 0x20/* Space */) ||
43
+ (c === 0x0A/* LF */) ||
44
+ (c === 0x0D/* CR */);
45
+ }
46
+
47
+ function is_FLOW_INDICATOR(c) {
48
+ return 0x2C/* , */ === c ||
49
+ 0x5B/* [ */ === c ||
50
+ 0x5D/* ] */ === c ||
51
+ 0x7B/* { */ === c ||
52
+ 0x7D/* } */ === c;
53
+ }
54
+
55
+ function fromHexCode(c) {
56
+ var lc;
57
+
58
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
59
+ return c - 0x30;
60
+ }
61
+
62
+ lc = c | 0x20;
63
+ if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
64
+ return lc - 0x61 + 10;
65
+ }
66
+
67
+ return -1;
68
+ }
69
+
70
+ function escapedHexLen(c) {
71
+ if (c === 0x78/* x */) { return 2; }
72
+ if (c === 0x75/* u */) { return 4; }
73
+ if (c === 0x55/* U */) { return 8; }
74
+ return 0;
75
+ }
76
+
77
+ function fromDecimalCode(c) {
78
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
79
+ return c - 0x30;
80
+ }
81
+
82
+ return -1;
83
+ }
84
+
85
+ function simpleEscapeSequence(c) {
86
+ return (c === 0x30/* 0 */) ? '\x00' :
87
+ (c === 0x61/* a */) ? '\x07' :
88
+ (c === 0x62/* b */) ? '\x08' :
89
+ (c === 0x74/* t */) ? '\x09' :
90
+ (c === 0x09/* Tab */) ? '\x09' :
91
+ (c === 0x6E/* n */) ? '\x0A' :
92
+ (c === 0x76/* v */) ? '\x0B' :
93
+ (c === 0x66/* f */) ? '\x0C' :
94
+ (c === 0x72/* r */) ? '\x0D' :
95
+ (c === 0x65/* e */) ? '\x1B' :
96
+ (c === 0x20/* Space */) ? ' ' :
97
+ (c === 0x22/* " */) ? '\x22' :
98
+ (c === 0x2F/* / */) ? '/' :
99
+ (c === 0x5C/* \ */) ? '\x5C' :
100
+ (c === 0x4E/* N */) ? '\x85' :
101
+ (c === 0x5F/* _ */) ? '\xA0' :
102
+ (c === 0x4C/* L */) ? '\u2028' :
103
+ (c === 0x50/* P */) ? '\u2029' : '';
104
+ }
105
+
106
+ function charFromCodepoint(c) {
107
+ if (c <= 0xFFFF) {
108
+ return String.fromCharCode(c);
109
+ } else {
110
+ // Encode UTF-16 surrogate pair
111
+ // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
112
+ return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,
113
+ ((c - 0x010000) & 0x03FF) + 0xDC00);
114
+ }
115
+ }
116
+
117
+ var simpleEscapeCheck = new Array(256); // integer, for fast access
118
+ var simpleEscapeMap = new Array(256);
119
+ for (var i = 0; i < 256; i++) {
120
+ simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
121
+ simpleEscapeMap[i] = simpleEscapeSequence(i);
122
+ }
123
+
124
+
125
+ function State(input, options) {
126
+ this.input = input;
127
+
128
+ this.filename = options['filename'] || null;
129
+ this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
130
+ this.onWarning = options['onWarning'] || null;
131
+ this.legacy = options['legacy'] || false;
132
+
133
+ this.implicitTypes = this.schema.compiledImplicit;
134
+ this.typeMap = this.schema.compiledTypeMap;
135
+
136
+ this.length = input.length;
137
+ this.position = 0;
138
+ this.line = 0;
139
+ this.lineStart = 0;
140
+ this.lineIndent = 0;
141
+
142
+ this.documents = [];
143
+
144
+ /*
145
+ this.version;
146
+ this.checkLineBreaks;
147
+ this.tagMap;
148
+ this.anchorMap;
149
+ this.tag;
150
+ this.anchor;
151
+ this.kind;
152
+ this.result;*/
153
+
154
+ }
155
+
156
+
157
+ function generateError(state, message) {
158
+ return new YAMLException(
159
+ message,
160
+ new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
161
+ }
162
+
163
+ function throwError(state, message) {
164
+ throw generateError(state, message);
165
+ }
166
+
167
+ function throwWarning(state, message) {
168
+ var error = generateError(state, message);
169
+
170
+ if (state.onWarning) {
171
+ state.onWarning.call(null, error);
172
+ } else {
173
+ throw error;
174
+ }
175
+ }
176
+
177
+
178
+ var directiveHandlers = {
179
+
180
+ 'YAML': function handleYamlDirective(state, name, args) {
181
+
182
+ var match, major, minor;
183
+
184
+ if (null !== state.version) {
185
+ throwError(state, 'duplication of %YAML directive');
186
+ }
187
+
188
+ if (1 !== args.length) {
189
+ throwError(state, 'YAML directive accepts exactly one argument');
190
+ }
191
+
192
+ match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
193
+
194
+ if (null === match) {
195
+ throwError(state, 'ill-formed argument of the YAML directive');
196
+ }
197
+
198
+ major = parseInt(match[1], 10);
199
+ minor = parseInt(match[2], 10);
200
+
201
+ if (1 !== major) {
202
+ throwError(state, 'unacceptable YAML version of the document');
203
+ }
204
+
205
+ state.version = args[0];
206
+ state.checkLineBreaks = (minor < 2);
207
+
208
+ if (1 !== minor && 2 !== minor) {
209
+ throwWarning(state, 'unsupported YAML version of the document');
210
+ }
211
+ },
212
+
213
+ 'TAG': function handleTagDirective(state, name, args) {
214
+
215
+ var handle, prefix;
216
+
217
+ if (2 !== args.length) {
218
+ throwError(state, 'TAG directive accepts exactly two arguments');
219
+ }
220
+
221
+ handle = args[0];
222
+ prefix = args[1];
223
+
224
+ if (!PATTERN_TAG_HANDLE.test(handle)) {
225
+ throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
226
+ }
227
+
228
+ if (_hasOwnProperty.call(state.tagMap, handle)) {
229
+ throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
230
+ }
231
+
232
+ if (!PATTERN_TAG_URI.test(prefix)) {
233
+ throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
234
+ }
235
+
236
+ state.tagMap[handle] = prefix;
237
+ }
238
+ };
239
+
240
+
241
+ function captureSegment(state, start, end, checkJson) {
242
+ var _position, _length, _character, _result;
243
+
244
+ if (start < end) {
245
+ _result = state.input.slice(start, end);
246
+
247
+ if (checkJson) {
248
+ for (_position = 0, _length = _result.length;
249
+ _position < _length;
250
+ _position += 1) {
251
+ _character = _result.charCodeAt(_position);
252
+ if (!(0x09 === _character ||
253
+ 0x20 <= _character && _character <= 0x10FFFF)) {
254
+ throwError(state, 'expected valid JSON character');
255
+ }
256
+ }
257
+ }
258
+
259
+ state.result += _result;
260
+ }
261
+ }
262
+
263
+ function mergeMappings(state, destination, source) {
264
+ var sourceKeys, key, index, quantity;
265
+
266
+ if (!common.isObject(source)) {
267
+ throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
268
+ }
269
+
270
+ sourceKeys = Object.keys(source);
271
+
272
+ for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
273
+ key = sourceKeys[index];
274
+
275
+ if (!_hasOwnProperty.call(destination, key)) {
276
+ destination[key] = source[key];
277
+ }
278
+ }
279
+ }
280
+
281
+ function storeMappingPair(state, _result, keyTag, keyNode, valueNode) {
282
+ var index, quantity;
283
+
284
+ keyNode = String(keyNode);
285
+
286
+ if (null === _result) {
287
+ _result = {};
288
+ }
289
+
290
+ if ('tag:yaml.org,2002:merge' === keyTag) {
291
+ if (Array.isArray(valueNode)) {
292
+ for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
293
+ mergeMappings(state, _result, valueNode[index]);
294
+ }
295
+ } else {
296
+ mergeMappings(state, _result, valueNode);
297
+ }
298
+ } else {
299
+ _result[keyNode] = valueNode;
300
+ }
301
+
302
+ return _result;
303
+ }
304
+
305
+ function readLineBreak(state) {
306
+ var ch;
307
+
308
+ ch = state.input.charCodeAt(state.position);
309
+
310
+ if (0x0A/* LF */ === ch) {
311
+ state.position++;
312
+ } else if (0x0D/* CR */ === ch) {
313
+ state.position++;
314
+ if (0x0A/* LF */ === state.input.charCodeAt(state.position)) {
315
+ state.position++;
316
+ }
317
+ } else {
318
+ throwError(state, 'a line break is expected');
319
+ }
320
+
321
+ state.line += 1;
322
+ state.lineStart = state.position;
323
+ }
324
+
325
+ function skipSeparationSpace(state, allowComments, checkIndent) {
326
+ var lineBreaks = 0,
327
+ ch = state.input.charCodeAt(state.position);
328
+
329
+ while (0 !== ch) {
330
+ while (is_WHITE_SPACE(ch)) {
331
+ ch = state.input.charCodeAt(++state.position);
332
+ }
333
+
334
+ if (allowComments && 0x23/* # */ === ch) {
335
+ do {
336
+ ch = state.input.charCodeAt(++state.position);
337
+ } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && 0 !== ch);
338
+ }
339
+
340
+ if (is_EOL(ch)) {
341
+ readLineBreak(state);
342
+
343
+ ch = state.input.charCodeAt(state.position);
344
+ lineBreaks++;
345
+ state.lineIndent = 0;
346
+
347
+ while (0x20/* Space */ === ch) {
348
+ state.lineIndent++;
349
+ ch = state.input.charCodeAt(++state.position);
350
+ }
351
+ } else {
352
+ break;
353
+ }
354
+ }
355
+
356
+ if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) {
357
+ throwWarning(state, 'deficient indentation');
358
+ }
359
+
360
+ return lineBreaks;
361
+ }
362
+
363
+ function testDocumentSeparator(state) {
364
+ var _position = state.position,
365
+ ch;
366
+
367
+ ch = state.input.charCodeAt(_position);
368
+
369
+ // Condition state.position === state.lineStart is tested
370
+ // in parent on each call, for efficiency. No needs to test here again.
371
+ if ((0x2D/* - */ === ch || 0x2E/* . */ === ch) &&
372
+ state.input.charCodeAt(_position + 1) === ch &&
373
+ state.input.charCodeAt(_position+ 2) === ch) {
374
+
375
+ _position += 3;
376
+
377
+ ch = state.input.charCodeAt(_position);
378
+
379
+ if (ch === 0 || is_WS_OR_EOL(ch)) {
380
+ return true;
381
+ }
382
+ }
383
+
384
+ return false;
385
+ }
386
+
387
+ function writeFoldedLines(state, count) {
388
+ if (1 === count) {
389
+ state.result += ' ';
390
+ } else if (count > 1) {
391
+ state.result += common.repeat('\n', count - 1);
392
+ }
393
+ }
394
+
395
+
396
+ function readPlainScalar(state, nodeIndent, withinFlowCollection) {
397
+ var preceding,
398
+ following,
399
+ captureStart,
400
+ captureEnd,
401
+ hasPendingContent,
402
+ _line,
403
+ _lineStart,
404
+ _lineIndent,
405
+ _kind = state.kind,
406
+ _result = state.result,
407
+ ch;
408
+
409
+ ch = state.input.charCodeAt(state.position);
410
+
411
+ if (is_WS_OR_EOL(ch) ||
412
+ is_FLOW_INDICATOR(ch) ||
413
+ 0x23/* # */ === ch ||
414
+ 0x26/* & */ === ch ||
415
+ 0x2A/* * */ === ch ||
416
+ 0x21/* ! */ === ch ||
417
+ 0x7C/* | */ === ch ||
418
+ 0x3E/* > */ === ch ||
419
+ 0x27/* ' */ === ch ||
420
+ 0x22/* " */ === ch ||
421
+ 0x25/* % */ === ch ||
422
+ 0x40/* @ */ === ch ||
423
+ 0x60/* ` */ === ch) {
424
+ return false;
425
+ }
426
+
427
+ if (0x3F/* ? */ === ch || 0x2D/* - */ === ch) {
428
+ following = state.input.charCodeAt(state.position + 1);
429
+
430
+ if (is_WS_OR_EOL(following) ||
431
+ withinFlowCollection && is_FLOW_INDICATOR(following)) {
432
+ return false;
433
+ }
434
+ }
435
+
436
+ state.kind = 'scalar';
437
+ state.result = '';
438
+ captureStart = captureEnd = state.position;
439
+ hasPendingContent = false;
440
+
441
+ while (0 !== ch) {
442
+ if (0x3A/* : */ === ch) {
443
+ following = state.input.charCodeAt(state.position+1);
444
+
445
+ if (is_WS_OR_EOL(following) ||
446
+ withinFlowCollection && is_FLOW_INDICATOR(following)) {
447
+ break;
448
+ }
449
+
450
+ } else if (0x23/* # */ === ch) {
451
+ preceding = state.input.charCodeAt(state.position - 1);
452
+
453
+ if (is_WS_OR_EOL(preceding)) {
454
+ break;
455
+ }
456
+
457
+ } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
458
+ withinFlowCollection && is_FLOW_INDICATOR(ch)) {
459
+ break;
460
+
461
+ } else if (is_EOL(ch)) {
462
+ _line = state.line;
463
+ _lineStart = state.lineStart;
464
+ _lineIndent = state.lineIndent;
465
+ skipSeparationSpace(state, false, -1);
466
+
467
+ if (state.lineIndent >= nodeIndent) {
468
+ hasPendingContent = true;
469
+ ch = state.input.charCodeAt(state.position);
470
+ continue;
471
+ } else {
472
+ state.position = captureEnd;
473
+ state.line = _line;
474
+ state.lineStart = _lineStart;
475
+ state.lineIndent = _lineIndent;
476
+ break;
477
+ }
478
+ }
479
+
480
+ if (hasPendingContent) {
481
+ captureSegment(state, captureStart, captureEnd, false);
482
+ writeFoldedLines(state, state.line - _line);
483
+ captureStart = captureEnd = state.position;
484
+ hasPendingContent = false;
485
+ }
486
+
487
+ if (!is_WHITE_SPACE(ch)) {
488
+ captureEnd = state.position + 1;
489
+ }
490
+
491
+ ch = state.input.charCodeAt(++state.position);
492
+ }
493
+
494
+ captureSegment(state, captureStart, captureEnd, false);
495
+
496
+ if (state.result) {
497
+ return true;
498
+ } else {
499
+ state.kind = _kind;
500
+ state.result = _result;
501
+ return false;
502
+ }
503
+ }
504
+
505
+ function readSingleQuotedScalar(state, nodeIndent) {
506
+ var ch,
507
+ captureStart, captureEnd;
508
+
509
+ ch = state.input.charCodeAt(state.position);
510
+
511
+ if (0x27/* ' */ !== ch) {
512
+ return false;
513
+ }
514
+
515
+ state.kind = 'scalar';
516
+ state.result = '';
517
+ state.position++;
518
+ captureStart = captureEnd = state.position;
519
+
520
+ while (0 !== (ch = state.input.charCodeAt(state.position))) {
521
+ if (0x27/* ' */ === ch) {
522
+ captureSegment(state, captureStart, state.position, true);
523
+ ch = state.input.charCodeAt(++state.position);
524
+
525
+ if (0x27/* ' */ === ch) {
526
+ captureStart = captureEnd = state.position;
527
+ state.position++;
528
+ } else {
529
+ return true;
530
+ }
531
+
532
+ } else if (is_EOL(ch)) {
533
+ captureSegment(state, captureStart, captureEnd, true);
534
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
535
+ captureStart = captureEnd = state.position;
536
+
537
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
538
+ throwError(state, 'unexpected end of the document within a single quoted scalar');
539
+
540
+ } else {
541
+ state.position++;
542
+ captureEnd = state.position;
543
+ }
544
+ }
545
+
546
+ throwError(state, 'unexpected end of the stream within a single quoted scalar');
547
+ }
548
+
549
+ function readDoubleQuotedScalar(state, nodeIndent) {
550
+ var captureStart,
551
+ captureEnd,
552
+ hexLength,
553
+ hexResult,
554
+ tmp, tmpEsc,
555
+ ch;
556
+
557
+ ch = state.input.charCodeAt(state.position);
558
+
559
+ if (0x22/* " */ !== ch) {
560
+ return false;
561
+ }
562
+
563
+ state.kind = 'scalar';
564
+ state.result = '';
565
+ state.position++;
566
+ captureStart = captureEnd = state.position;
567
+
568
+ while (0 !== (ch = state.input.charCodeAt(state.position))) {
569
+ if (0x22/* " */ === ch) {
570
+ captureSegment(state, captureStart, state.position, true);
571
+ state.position++;
572
+ return true;
573
+
574
+ } else if (0x5C/* \ */ === ch) {
575
+ captureSegment(state, captureStart, state.position, true);
576
+ ch = state.input.charCodeAt(++state.position);
577
+
578
+ if (is_EOL(ch)) {
579
+ skipSeparationSpace(state, false, nodeIndent);
580
+
581
+ //TODO: rework to inline fn with no type cast?
582
+ } else if (ch < 256 && simpleEscapeCheck[ch]) {
583
+ state.result += simpleEscapeMap[ch];
584
+ state.position++;
585
+
586
+ } else if ((tmp = escapedHexLen(ch)) > 0) {
587
+ hexLength = tmp;
588
+ hexResult = 0;
589
+
590
+ for (; hexLength > 0; hexLength--) {
591
+ ch = state.input.charCodeAt(++state.position);
592
+
593
+ if ((tmp = fromHexCode(ch)) >= 0) {
594
+ hexResult = (hexResult << 4) + tmp;
595
+
596
+ } else {
597
+ throwError(state, 'expected hexadecimal character');
598
+ }
599
+ }
600
+
601
+ state.result += charFromCodepoint(hexResult);
602
+
603
+ state.position++;
604
+
605
+ } else {
606
+ throwError(state, 'unknown escape sequence');
607
+ }
608
+
609
+ captureStart = captureEnd = state.position;
610
+
611
+ } else if (is_EOL(ch)) {
612
+ captureSegment(state, captureStart, captureEnd, true);
613
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
614
+ captureStart = captureEnd = state.position;
615
+
616
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
617
+ throwError(state, 'unexpected end of the document within a double quoted scalar');
618
+
619
+ } else {
620
+ state.position++;
621
+ captureEnd = state.position;
622
+ }
623
+ }
624
+
625
+ throwError(state, 'unexpected end of the stream within a double quoted scalar');
626
+ }
627
+
628
+ function readFlowCollection(state, nodeIndent) {
629
+ var readNext = true,
630
+ _line,
631
+ _tag = state.tag,
632
+ _result,
633
+ _anchor = state.anchor,
634
+ following,
635
+ terminator,
636
+ isPair,
637
+ isExplicitPair,
638
+ isMapping,
639
+ keyNode,
640
+ keyTag,
641
+ valueNode,
642
+ ch;
643
+
644
+ ch = state.input.charCodeAt(state.position);
645
+
646
+ if (ch === 0x5B/* [ */) {
647
+ terminator = 0x5D/* ] */;
648
+ isMapping = false;
649
+ _result = [];
650
+ } else if (ch === 0x7B/* { */) {
651
+ terminator = 0x7D/* } */;
652
+ isMapping = true;
653
+ _result = {};
654
+ } else {
655
+ return false;
656
+ }
657
+
658
+ if (null !== state.anchor) {
659
+ state.anchorMap[state.anchor] = _result;
660
+ }
661
+
662
+ ch = state.input.charCodeAt(++state.position);
663
+
664
+ while (0 !== ch) {
665
+ skipSeparationSpace(state, true, nodeIndent);
666
+
667
+ ch = state.input.charCodeAt(state.position);
668
+
669
+ if (ch === terminator) {
670
+ state.position++;
671
+ state.tag = _tag;
672
+ state.anchor = _anchor;
673
+ state.kind = isMapping ? 'mapping' : 'sequence';
674
+ state.result = _result;
675
+ return true;
676
+ } else if (!readNext) {
677
+ throwError(state, 'missed comma between flow collection entries');
678
+ }
679
+
680
+ keyTag = keyNode = valueNode = null;
681
+ isPair = isExplicitPair = false;
682
+
683
+ if (0x3F/* ? */ === ch) {
684
+ following = state.input.charCodeAt(state.position + 1);
685
+
686
+ if (is_WS_OR_EOL(following)) {
687
+ isPair = isExplicitPair = true;
688
+ state.position++;
689
+ skipSeparationSpace(state, true, nodeIndent);
690
+ }
691
+ }
692
+
693
+ _line = state.line;
694
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
695
+ keyTag = state.tag;
696
+ keyNode = state.result;
697
+ skipSeparationSpace(state, true, nodeIndent);
698
+
699
+ ch = state.input.charCodeAt(state.position);
700
+
701
+ if ((isExplicitPair || state.line === _line) && 0x3A/* : */ === ch) {
702
+ isPair = true;
703
+ ch = state.input.charCodeAt(++state.position);
704
+ skipSeparationSpace(state, true, nodeIndent);
705
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
706
+ valueNode = state.result;
707
+ }
708
+
709
+ if (isMapping) {
710
+ storeMappingPair(state, _result, keyTag, keyNode, valueNode);
711
+ } else if (isPair) {
712
+ _result.push(storeMappingPair(state, null, keyTag, keyNode, valueNode));
713
+ } else {
714
+ _result.push(keyNode);
715
+ }
716
+
717
+ skipSeparationSpace(state, true, nodeIndent);
718
+
719
+ ch = state.input.charCodeAt(state.position);
720
+
721
+ if (0x2C/* , */ === ch) {
722
+ readNext = true;
723
+ ch = state.input.charCodeAt(++state.position);
724
+ } else {
725
+ readNext = false;
726
+ }
727
+ }
728
+
729
+ throwError(state, 'unexpected end of the stream within a flow collection');
730
+ }
731
+
732
+ function readBlockScalar(state, nodeIndent) {
733
+ var captureStart,
734
+ folding,
735
+ chomping = CHOMPING_CLIP,
736
+ detectedIndent = false,
737
+ textIndent = nodeIndent,
738
+ emptyLines = 0,
739
+ atMoreIndented = false,
740
+ tmp,
741
+ ch;
742
+
743
+ ch = state.input.charCodeAt(state.position);
744
+
745
+ if (ch === 0x7C/* | */) {
746
+ folding = false;
747
+ } else if (ch === 0x3E/* > */) {
748
+ folding = true;
749
+ } else {
750
+ return false;
751
+ }
752
+
753
+ state.kind = 'scalar';
754
+ state.result = '';
755
+
756
+ while (0 !== ch) {
757
+ ch = state.input.charCodeAt(++state.position);
758
+
759
+ if (0x2B/* + */ === ch || 0x2D/* - */ === ch) {
760
+ if (CHOMPING_CLIP === chomping) {
761
+ chomping = (0x2B/* + */ === ch) ? CHOMPING_KEEP : CHOMPING_STRIP;
762
+ } else {
763
+ throwError(state, 'repeat of a chomping mode identifier');
764
+ }
765
+
766
+ } else if ((tmp = fromDecimalCode(ch)) >= 0) {
767
+ if (tmp === 0) {
768
+ throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
769
+ } else if (!detectedIndent) {
770
+ textIndent = nodeIndent + tmp - 1;
771
+ detectedIndent = true;
772
+ } else {
773
+ throwError(state, 'repeat of an indentation width identifier');
774
+ }
775
+
776
+ } else {
777
+ break;
778
+ }
779
+ }
780
+
781
+ if (is_WHITE_SPACE(ch)) {
782
+ do { ch = state.input.charCodeAt(++state.position); }
783
+ while (is_WHITE_SPACE(ch));
784
+
785
+ if (0x23/* # */ === ch) {
786
+ do { ch = state.input.charCodeAt(++state.position); }
787
+ while (!is_EOL(ch) && (0 !== ch));
788
+ }
789
+ }
790
+
791
+ while (0 !== ch) {
792
+ readLineBreak(state);
793
+ state.lineIndent = 0;
794
+
795
+ ch = state.input.charCodeAt(state.position);
796
+
797
+ while ((!detectedIndent || state.lineIndent < textIndent) &&
798
+ (0x20/* Space */ === ch)) {
799
+ state.lineIndent++;
800
+ ch = state.input.charCodeAt(++state.position);
801
+ }
802
+
803
+ if (!detectedIndent && state.lineIndent > textIndent) {
804
+ textIndent = state.lineIndent;
805
+ }
806
+
807
+ if (is_EOL(ch)) {
808
+ emptyLines++;
809
+ continue;
810
+ }
811
+
812
+ // End of the scalar.
813
+ if (state.lineIndent < textIndent) {
814
+
815
+ // Perform the chomping.
816
+ if (chomping === CHOMPING_KEEP) {
817
+ state.result += common.repeat('\n', emptyLines);
818
+ } else if (chomping === CHOMPING_CLIP) {
819
+ if (detectedIndent) { // i.e. only if the scalar is not empty.
820
+ state.result += '\n';
821
+ }
822
+ }
823
+
824
+ // Break this `while` cycle and go to the funciton's epilogue.
825
+ break;
826
+ }
827
+
828
+ // Folded style: use fancy rules to handle line breaks.
829
+ if (folding) {
830
+
831
+ // Lines starting with white space characters (more-indented lines) are not folded.
832
+ if (is_WHITE_SPACE(ch)) {
833
+ atMoreIndented = true;
834
+ state.result += common.repeat('\n', emptyLines + 1);
835
+
836
+ // End of more-indented block.
837
+ } else if (atMoreIndented) {
838
+ atMoreIndented = false;
839
+ state.result += common.repeat('\n', emptyLines + 1);
840
+
841
+ // Just one line break - perceive as the same line.
842
+ } else if (0 === emptyLines) {
843
+ if (detectedIndent) { // i.e. only if we have already read some scalar content.
844
+ state.result += ' ';
845
+ }
846
+
847
+ // Several line breaks - perceive as different lines.
848
+ } else {
849
+ state.result += common.repeat('\n', emptyLines);
850
+ }
851
+
852
+ // Literal style: just add exact number of line breaks between content lines.
853
+ } else {
854
+
855
+ // If current line isn't the first one - count line break from the last content line.
856
+ if (detectedIndent) {
857
+ state.result += common.repeat('\n', emptyLines + 1);
858
+
859
+ // In case of the first content line - count only empty lines.
860
+ } else {
861
+ state.result += common.repeat('\n', emptyLines);
862
+ }
863
+ }
864
+
865
+ detectedIndent = true;
866
+ emptyLines = 0;
867
+ captureStart = state.position;
868
+
869
+ while (!is_EOL(ch) && (0 !== ch))
870
+ { ch = state.input.charCodeAt(++state.position); }
871
+
872
+ captureSegment(state, captureStart, state.position, false);
873
+ }
874
+
875
+ return true;
876
+ }
877
+
878
+ function readBlockSequence(state, nodeIndent) {
879
+ var _line,
880
+ _tag = state.tag,
881
+ _anchor = state.anchor,
882
+ _result = [],
883
+ following,
884
+ detected = false,
885
+ ch;
886
+
887
+ if (null !== state.anchor) {
888
+ state.anchorMap[state.anchor] = _result;
889
+ }
890
+
891
+ ch = state.input.charCodeAt(state.position);
892
+
893
+ while (0 !== ch) {
894
+
895
+ if (0x2D/* - */ !== ch) {
896
+ break;
897
+ }
898
+
899
+ following = state.input.charCodeAt(state.position + 1);
900
+
901
+ if (!is_WS_OR_EOL(following)) {
902
+ break;
903
+ }
904
+
905
+ detected = true;
906
+ state.position++;
907
+
908
+ if (skipSeparationSpace(state, true, -1)) {
909
+ if (state.lineIndent <= nodeIndent) {
910
+ _result.push(null);
911
+ ch = state.input.charCodeAt(state.position);
912
+ continue;
913
+ }
914
+ }
915
+
916
+ _line = state.line;
917
+ composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
918
+ _result.push(state.result);
919
+ skipSeparationSpace(state, true, -1);
920
+
921
+ ch = state.input.charCodeAt(state.position);
922
+
923
+ if ((state.line === _line || state.lineIndent > nodeIndent) && (0 !== ch)) {
924
+ throwError(state, 'bad indentation of a sequence entry');
925
+ } else if (state.lineIndent < nodeIndent) {
926
+ break;
927
+ }
928
+ }
929
+
930
+ if (detected) {
931
+ state.tag = _tag;
932
+ state.anchor = _anchor;
933
+ state.kind = 'sequence';
934
+ state.result = _result;
935
+ return true;
936
+ } else {
937
+ return false;
938
+ }
939
+ }
940
+
941
+ function readBlockMapping(state, nodeIndent, flowIndent) {
942
+ var following,
943
+ allowCompact,
944
+ _line,
945
+ _tag = state.tag,
946
+ _anchor = state.anchor,
947
+ _result = {},
948
+ keyTag = null,
949
+ keyNode = null,
950
+ valueNode = null,
951
+ atExplicitKey = false,
952
+ detected = false,
953
+ ch;
954
+
955
+ if (null !== state.anchor) {
956
+ state.anchorMap[state.anchor] = _result;
957
+ }
958
+
959
+ ch = state.input.charCodeAt(state.position);
960
+
961
+ while (0 !== ch) {
962
+ following = state.input.charCodeAt(state.position + 1);
963
+ _line = state.line; // Save the current line.
964
+
965
+ //
966
+ // Explicit notation case. There are two separate blocks:
967
+ // first for the key (denoted by "?") and second for the value (denoted by ":")
968
+ //
969
+ if ((0x3F/* ? */ === ch || 0x3A/* : */ === ch) && is_WS_OR_EOL(following)) {
970
+
971
+ if (0x3F/* ? */ === ch) {
972
+ if (atExplicitKey) {
973
+ storeMappingPair(state, _result, keyTag, keyNode, null);
974
+ keyTag = keyNode = valueNode = null;
975
+ }
976
+
977
+ detected = true;
978
+ atExplicitKey = true;
979
+ allowCompact = true;
980
+
981
+ } else if (atExplicitKey) {
982
+ // i.e. 0x3A/* : */ === character after the explicit key.
983
+ atExplicitKey = false;
984
+ allowCompact = true;
985
+
986
+ } else {
987
+ throwError(state, 'incomplete explicit mapping pair; a key node is missed');
988
+ }
989
+
990
+ state.position += 1;
991
+ ch = following;
992
+
993
+ //
994
+ // Implicit notation case. Flow-style node as the key first, then ":", and the value.
995
+ //
996
+ } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
997
+
998
+ if (state.line === _line) {
999
+ ch = state.input.charCodeAt(state.position);
1000
+
1001
+ while (is_WHITE_SPACE(ch)) {
1002
+ ch = state.input.charCodeAt(++state.position);
1003
+ }
1004
+
1005
+ if (0x3A/* : */ === ch) {
1006
+ ch = state.input.charCodeAt(++state.position);
1007
+
1008
+ if (!is_WS_OR_EOL(ch)) {
1009
+ throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
1010
+ }
1011
+
1012
+ if (atExplicitKey) {
1013
+ storeMappingPair(state, _result, keyTag, keyNode, null);
1014
+ keyTag = keyNode = valueNode = null;
1015
+ }
1016
+
1017
+ detected = true;
1018
+ atExplicitKey = false;
1019
+ allowCompact = false;
1020
+ keyTag = state.tag;
1021
+ keyNode = state.result;
1022
+
1023
+ } else if (detected) {
1024
+ throwError(state, 'can not read an implicit mapping pair; a colon is missed');
1025
+
1026
+ } else {
1027
+ state.tag = _tag;
1028
+ state.anchor = _anchor;
1029
+ return true; // Keep the result of `composeNode`.
1030
+ }
1031
+
1032
+ } else if (detected) {
1033
+ throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
1034
+
1035
+ } else {
1036
+ state.tag = _tag;
1037
+ state.anchor = _anchor;
1038
+ return true; // Keep the result of `composeNode`.
1039
+ }
1040
+
1041
+ } else {
1042
+ break; // Reading is done. Go to the epilogue.
1043
+ }
1044
+
1045
+ //
1046
+ // Common reading code for both explicit and implicit notations.
1047
+ //
1048
+ if (state.line === _line || state.lineIndent > nodeIndent) {
1049
+ if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
1050
+ if (atExplicitKey) {
1051
+ keyNode = state.result;
1052
+ } else {
1053
+ valueNode = state.result;
1054
+ }
1055
+ }
1056
+
1057
+ if (!atExplicitKey) {
1058
+ storeMappingPair(state, _result, keyTag, keyNode, valueNode);
1059
+ keyTag = keyNode = valueNode = null;
1060
+ }
1061
+
1062
+ skipSeparationSpace(state, true, -1);
1063
+ ch = state.input.charCodeAt(state.position);
1064
+ }
1065
+
1066
+ if (state.lineIndent > nodeIndent && (0 !== ch)) {
1067
+ throwError(state, 'bad indentation of a mapping entry');
1068
+ } else if (state.lineIndent < nodeIndent) {
1069
+ break;
1070
+ }
1071
+ }
1072
+
1073
+ //
1074
+ // Epilogue.
1075
+ //
1076
+
1077
+ // Special case: last mapping's node contains only the key in explicit notation.
1078
+ if (atExplicitKey) {
1079
+ storeMappingPair(state, _result, keyTag, keyNode, null);
1080
+ }
1081
+
1082
+ // Expose the resulting mapping.
1083
+ if (detected) {
1084
+ state.tag = _tag;
1085
+ state.anchor = _anchor;
1086
+ state.kind = 'mapping';
1087
+ state.result = _result;
1088
+ }
1089
+
1090
+ return detected;
1091
+ }
1092
+
1093
+ function readTagProperty(state) {
1094
+ var _position,
1095
+ isVerbatim = false,
1096
+ isNamed = false,
1097
+ tagHandle,
1098
+ tagName,
1099
+ ch;
1100
+
1101
+ ch = state.input.charCodeAt(state.position);
1102
+
1103
+ if (0x21/* ! */ !== ch) {
1104
+ return false;
1105
+ }
1106
+
1107
+ if (null !== state.tag) {
1108
+ throwError(state, 'duplication of a tag property');
1109
+ }
1110
+
1111
+ ch = state.input.charCodeAt(++state.position);
1112
+
1113
+ if (0x3C/* < */ === ch) {
1114
+ isVerbatim = true;
1115
+ ch = state.input.charCodeAt(++state.position);
1116
+
1117
+ } else if (0x21/* ! */ === ch) {
1118
+ isNamed = true;
1119
+ tagHandle = '!!';
1120
+ ch = state.input.charCodeAt(++state.position);
1121
+
1122
+ } else {
1123
+ tagHandle = '!';
1124
+ }
1125
+
1126
+ _position = state.position;
1127
+
1128
+ if (isVerbatim) {
1129
+ do { ch = state.input.charCodeAt(++state.position); }
1130
+ while (0 !== ch && 0x3E/* > */ !== ch);
1131
+
1132
+ if (state.position < state.length) {
1133
+ tagName = state.input.slice(_position, state.position);
1134
+ ch = state.input.charCodeAt(++state.position);
1135
+ } else {
1136
+ throwError(state, 'unexpected end of the stream within a verbatim tag');
1137
+ }
1138
+ } else {
1139
+ while (0 !== ch && !is_WS_OR_EOL(ch)) {
1140
+
1141
+ if (0x21/* ! */ === ch) {
1142
+ if (!isNamed) {
1143
+ tagHandle = state.input.slice(_position - 1, state.position + 1);
1144
+
1145
+ if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
1146
+ throwError(state, 'named tag handle cannot contain such characters');
1147
+ }
1148
+
1149
+ isNamed = true;
1150
+ _position = state.position + 1;
1151
+ } else {
1152
+ throwError(state, 'tag suffix cannot contain exclamation marks');
1153
+ }
1154
+ }
1155
+
1156
+ ch = state.input.charCodeAt(++state.position);
1157
+ }
1158
+
1159
+ tagName = state.input.slice(_position, state.position);
1160
+
1161
+ if (PATTERN_FLOW_INDICATORS.test(tagName)) {
1162
+ throwError(state, 'tag suffix cannot contain flow indicator characters');
1163
+ }
1164
+ }
1165
+
1166
+ if (tagName && !PATTERN_TAG_URI.test(tagName)) {
1167
+ throwError(state, 'tag name cannot contain such characters: ' + tagName);
1168
+ }
1169
+
1170
+ if (isVerbatim) {
1171
+ state.tag = tagName;
1172
+
1173
+ } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
1174
+ state.tag = state.tagMap[tagHandle] + tagName;
1175
+
1176
+ } else if ('!' === tagHandle) {
1177
+ state.tag = '!' + tagName;
1178
+
1179
+ } else if ('!!' === tagHandle) {
1180
+ state.tag = 'tag:yaml.org,2002:' + tagName;
1181
+
1182
+ } else {
1183
+ throwError(state, 'undeclared tag handle "' + tagHandle + '"');
1184
+ }
1185
+
1186
+ return true;
1187
+ }
1188
+
1189
+ function readAnchorProperty(state) {
1190
+ var _position,
1191
+ ch;
1192
+
1193
+ ch = state.input.charCodeAt(state.position);
1194
+
1195
+ if (0x26/* & */ !== ch) {
1196
+ return false;
1197
+ }
1198
+
1199
+ if (null !== state.anchor) {
1200
+ throwError(state, 'duplication of an anchor property');
1201
+ }
1202
+
1203
+ ch = state.input.charCodeAt(++state.position);
1204
+ _position = state.position;
1205
+
1206
+ while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
1207
+ ch = state.input.charCodeAt(++state.position);
1208
+ }
1209
+
1210
+ if (state.position === _position) {
1211
+ throwError(state, 'name of an anchor node must contain at least one character');
1212
+ }
1213
+
1214
+ state.anchor = state.input.slice(_position, state.position);
1215
+ return true;
1216
+ }
1217
+
1218
+ function readAlias(state) {
1219
+ var _position, alias,
1220
+ len = state.length,
1221
+ input = state.input,
1222
+ ch;
1223
+
1224
+ ch = state.input.charCodeAt(state.position);
1225
+
1226
+ if (0x2A/* * */ !== ch) {
1227
+ return false;
1228
+ }
1229
+
1230
+ ch = state.input.charCodeAt(++state.position);
1231
+ _position = state.position;
1232
+
1233
+ while (0 !== ch && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
1234
+ ch = state.input.charCodeAt(++state.position);
1235
+ }
1236
+
1237
+ if (state.position === _position) {
1238
+ throwError(state, 'name of an alias node must contain at least one character');
1239
+ }
1240
+
1241
+ alias = state.input.slice(_position, state.position);
1242
+
1243
+ if (!state.anchorMap.hasOwnProperty(alias)) {
1244
+ throwError(state, 'unidentified alias "' + alias + '"');
1245
+ }
1246
+
1247
+ state.result = state.anchorMap[alias];
1248
+ skipSeparationSpace(state, true, -1);
1249
+ return true;
1250
+ }
1251
+
1252
+ function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
1253
+ var allowBlockStyles,
1254
+ allowBlockScalars,
1255
+ allowBlockCollections,
1256
+ indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent
1257
+ atNewLine = false,
1258
+ hasContent = false,
1259
+ typeIndex,
1260
+ typeQuantity,
1261
+ type,
1262
+ flowIndent,
1263
+ blockIndent,
1264
+ _result;
1265
+
1266
+ state.tag = null;
1267
+ state.anchor = null;
1268
+ state.kind = null;
1269
+ state.result = null;
1270
+
1271
+ allowBlockStyles = allowBlockScalars = allowBlockCollections =
1272
+ CONTEXT_BLOCK_OUT === nodeContext ||
1273
+ CONTEXT_BLOCK_IN === nodeContext;
1274
+
1275
+ if (allowToSeek) {
1276
+ if (skipSeparationSpace(state, true, -1)) {
1277
+ atNewLine = true;
1278
+
1279
+ if (state.lineIndent > parentIndent) {
1280
+ indentStatus = 1;
1281
+ } else if (state.lineIndent === parentIndent) {
1282
+ indentStatus = 0;
1283
+ } else if (state.lineIndent < parentIndent) {
1284
+ indentStatus = -1;
1285
+ }
1286
+ }
1287
+ }
1288
+
1289
+ if (1 === indentStatus) {
1290
+ while (readTagProperty(state) || readAnchorProperty(state)) {
1291
+ if (skipSeparationSpace(state, true, -1)) {
1292
+ atNewLine = true;
1293
+ allowBlockCollections = allowBlockStyles;
1294
+
1295
+ if (state.lineIndent > parentIndent) {
1296
+ indentStatus = 1;
1297
+ } else if (state.lineIndent === parentIndent) {
1298
+ indentStatus = 0;
1299
+ } else if (state.lineIndent < parentIndent) {
1300
+ indentStatus = -1;
1301
+ }
1302
+ } else {
1303
+ allowBlockCollections = false;
1304
+ }
1305
+ }
1306
+ }
1307
+
1308
+ if (allowBlockCollections) {
1309
+ allowBlockCollections = atNewLine || allowCompact;
1310
+ }
1311
+
1312
+ if (1 === indentStatus || CONTEXT_BLOCK_OUT === nodeContext) {
1313
+ if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
1314
+ flowIndent = parentIndent;
1315
+ } else {
1316
+ flowIndent = parentIndent + 1;
1317
+ }
1318
+
1319
+ blockIndent = state.position - state.lineStart;
1320
+
1321
+ if (1 === indentStatus) {
1322
+ if (allowBlockCollections &&
1323
+ (readBlockSequence(state, blockIndent) ||
1324
+ readBlockMapping(state, blockIndent, flowIndent)) ||
1325
+ readFlowCollection(state, flowIndent)) {
1326
+ hasContent = true;
1327
+ } else {
1328
+ if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||
1329
+ readSingleQuotedScalar(state, flowIndent) ||
1330
+ readDoubleQuotedScalar(state, flowIndent)) {
1331
+ hasContent = true;
1332
+
1333
+ } else if (readAlias(state)) {
1334
+ hasContent = true;
1335
+
1336
+ if (null !== state.tag || null !== state.anchor) {
1337
+ throwError(state, 'alias node should not have any properties');
1338
+ }
1339
+
1340
+ } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
1341
+ hasContent = true;
1342
+
1343
+ if (null === state.tag) {
1344
+ state.tag = '?';
1345
+ }
1346
+ }
1347
+
1348
+ if (null !== state.anchor) {
1349
+ state.anchorMap[state.anchor] = state.result;
1350
+ }
1351
+ }
1352
+ } else if (0 === indentStatus) {
1353
+ // Special case: block sequences are allowed to have same indentation level as the parent.
1354
+ // http://www.yaml.org/spec/1.2/spec.html#id2799784
1355
+ hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
1356
+ }
1357
+ }
1358
+
1359
+ if (null !== state.tag && '!' !== state.tag) {
1360
+ if ('?' === state.tag) {
1361
+ for (typeIndex = 0, typeQuantity = state.implicitTypes.length;
1362
+ typeIndex < typeQuantity;
1363
+ typeIndex += 1) {
1364
+ type = state.implicitTypes[typeIndex];
1365
+
1366
+ // Implicit resolving is not allowed for non-scalar types, and '?'
1367
+ // non-specific tag is only assigned to plain scalars. So, it isn't
1368
+ // needed to check for 'kind' conformity.
1369
+
1370
+ if (type.resolve(state.result)) { // `state.result` updated in resolver if matched
1371
+ state.result = type.construct(state.result);
1372
+ state.tag = type.tag;
1373
+ if (null !== state.anchor) {
1374
+ state.anchorMap[state.anchor] = state.result;
1375
+ }
1376
+ break;
1377
+ }
1378
+ }
1379
+ } else if (_hasOwnProperty.call(state.typeMap, state.tag)) {
1380
+ type = state.typeMap[state.tag];
1381
+
1382
+ if (null !== state.result && type.kind !== state.kind) {
1383
+ throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
1384
+ }
1385
+
1386
+ if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched
1387
+ throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
1388
+ } else {
1389
+ state.result = type.construct(state.result);
1390
+ if (null !== state.anchor) {
1391
+ state.anchorMap[state.anchor] = state.result;
1392
+ }
1393
+ }
1394
+ } else {
1395
+ throwWarning(state, 'unknown tag !<' + state.tag + '>');
1396
+ }
1397
+ }
1398
+
1399
+ return null !== state.tag || null !== state.anchor || hasContent;
1400
+ }
1401
+
1402
+ function readDocument(state) {
1403
+ var documentStart = state.position,
1404
+ _position,
1405
+ directiveName,
1406
+ directiveArgs,
1407
+ hasDirectives = false,
1408
+ ch;
1409
+
1410
+ state.version = null;
1411
+ state.checkLineBreaks = state.legacy;
1412
+ state.tagMap = {};
1413
+ state.anchorMap = {};
1414
+
1415
+ while (0 !== (ch = state.input.charCodeAt(state.position))) {
1416
+ skipSeparationSpace(state, true, -1);
1417
+
1418
+ ch = state.input.charCodeAt(state.position);
1419
+
1420
+ if (state.lineIndent > 0 || 0x25/* % */ !== ch) {
1421
+ break;
1422
+ }
1423
+
1424
+ hasDirectives = true;
1425
+ ch = state.input.charCodeAt(++state.position);
1426
+ _position = state.position;
1427
+
1428
+ while (0 !== ch && !is_WS_OR_EOL(ch)) {
1429
+ ch = state.input.charCodeAt(++state.position);
1430
+ }
1431
+
1432
+ directiveName = state.input.slice(_position, state.position);
1433
+ directiveArgs = [];
1434
+
1435
+ if (directiveName.length < 1) {
1436
+ throwError(state, 'directive name must not be less than one character in length');
1437
+ }
1438
+
1439
+ while (0 !== ch) {
1440
+ while (is_WHITE_SPACE(ch)) {
1441
+ ch = state.input.charCodeAt(++state.position);
1442
+ }
1443
+
1444
+ if (0x23/* # */ === ch) {
1445
+ do { ch = state.input.charCodeAt(++state.position); }
1446
+ while (0 !== ch && !is_EOL(ch));
1447
+ break;
1448
+ }
1449
+
1450
+ if (is_EOL(ch)) {
1451
+ break;
1452
+ }
1453
+
1454
+ _position = state.position;
1455
+
1456
+ while (0 !== ch && !is_WS_OR_EOL(ch)) {
1457
+ ch = state.input.charCodeAt(++state.position);
1458
+ }
1459
+
1460
+ directiveArgs.push(state.input.slice(_position, state.position));
1461
+ }
1462
+
1463
+ if (0 !== ch) {
1464
+ readLineBreak(state);
1465
+ }
1466
+
1467
+ if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
1468
+ directiveHandlers[directiveName](state, directiveName, directiveArgs);
1469
+ } else {
1470
+ throwWarning(state, 'unknown document directive "' + directiveName + '"');
1471
+ }
1472
+ }
1473
+
1474
+ skipSeparationSpace(state, true, -1);
1475
+
1476
+ if (0 === state.lineIndent &&
1477
+ 0x2D/* - */ === state.input.charCodeAt(state.position) &&
1478
+ 0x2D/* - */ === state.input.charCodeAt(state.position + 1) &&
1479
+ 0x2D/* - */ === state.input.charCodeAt(state.position + 2)) {
1480
+ state.position += 3;
1481
+ skipSeparationSpace(state, true, -1);
1482
+
1483
+ } else if (hasDirectives) {
1484
+ throwError(state, 'directives end mark is expected');
1485
+ }
1486
+
1487
+ composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
1488
+ skipSeparationSpace(state, true, -1);
1489
+
1490
+ if (state.checkLineBreaks &&
1491
+ PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
1492
+ throwWarning(state, 'non-ASCII line breaks are interpreted as content');
1493
+ }
1494
+
1495
+ state.documents.push(state.result);
1496
+
1497
+ if (state.position === state.lineStart && testDocumentSeparator(state)) {
1498
+
1499
+ if (0x2E/* . */ === state.input.charCodeAt(state.position)) {
1500
+ state.position += 3;
1501
+ skipSeparationSpace(state, true, -1);
1502
+ }
1503
+ return;
1504
+ }
1505
+
1506
+ if (state.position < (state.length - 1)) {
1507
+ throwError(state, 'end of the stream or a document separator is expected');
1508
+ } else {
1509
+ return;
1510
+ }
1511
+ }
1512
+
1513
+
1514
+ function loadDocuments(input, options) {
1515
+ input = String(input);
1516
+ options = options || {};
1517
+
1518
+ if (0 !== input.length &&
1519
+ 0x0A/* LF */ !== input.charCodeAt(input.length - 1) &&
1520
+ 0x0D/* CR */ !== input.charCodeAt(input.length - 1)) {
1521
+ input += '\n';
1522
+ }
1523
+
1524
+ var state = new State(input, options);
1525
+
1526
+ if (PATTERN_NON_PRINTABLE.test(state.input)) {
1527
+ throwError(state, 'the stream contains non-printable characters');
1528
+ }
1529
+
1530
+ // Use 0 as string terminator. That significantly simplifies bounds check.
1531
+ state.input += '\0';
1532
+
1533
+ while (0x20/* Space */ === state.input.charCodeAt(state.position)) {
1534
+ state.lineIndent += 1;
1535
+ state.position += 1;
1536
+ }
1537
+
1538
+ while (state.position < (state.length - 1)) {
1539
+ readDocument(state);
1540
+ }
1541
+
1542
+ return state.documents;
1543
+ }
1544
+
1545
+
1546
+ function loadAll(input, iterator, options) {
1547
+ var documents = loadDocuments(input, options), index, length;
1548
+
1549
+ for (index = 0, length = documents.length; index < length; index += 1) {
1550
+ iterator(documents[index]);
1551
+ }
1552
+ }
1553
+
1554
+
1555
+ function load(input, options) {
1556
+ var documents = loadDocuments(input, options), index, length;
1557
+
1558
+ if (0 === documents.length) {
1559
+ return undefined;
1560
+ } else if (1 === documents.length) {
1561
+ return documents[0];
1562
+ } else {
1563
+ throw new YAMLException('expected a single document in the stream, but found more');
1564
+ }
1565
+ }
1566
+
1567
+
1568
+ function safeLoadAll(input, output, options) {
1569
+ loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
1570
+ }
1571
+
1572
+
1573
+ function safeLoad(input, options) {
1574
+ return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
1575
+ }
1576
+
1577
+
1578
+ module.exports.loadAll = loadAll;
1579
+ module.exports.load = load;
1580
+ module.exports.safeLoadAll = safeLoadAll;
1581
+ module.exports.safeLoad = safeLoad;