opal 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -1
  3. data/lib/opal/cli.rb +9 -1
  4. data/lib/opal/cli_options.rb +12 -3
  5. data/lib/opal/cli_runners/nodejs.rb +3 -2
  6. data/lib/opal/version.rb +1 -1
  7. data/opal/corelib/kernel.rb +7 -0
  8. data/opal/corelib/runtime.js +4 -0
  9. data/spec/lib/cli_spec.rb +16 -0
  10. data/stdlib/nodejs.rb +1 -2
  11. data/stdlib/nodejs/{process.rb → kernel.rb} +7 -4
  12. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  13. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  14. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  15. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  16. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  17. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  18. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  19. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  20. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  21. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  22. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  23. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  24. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  25. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  26. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  27. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  28. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  29. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  30. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  31. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  32. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  33. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  34. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  35. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  36. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  37. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  38. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  39. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  40. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  41. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  42. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  43. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  44. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  45. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  46. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  47. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  48. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  49. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  50. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  51. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  52. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  53. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  54. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  55. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  56. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  57. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  58. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  59. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  60. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  61. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  62. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  63. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  64. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  65. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  66. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  67. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  68. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  69. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  70. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  71. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  72. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  73. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  74. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  75. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  76. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  77. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  78. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  79. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  80. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  81. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  82. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  83. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  84. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  85. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  86. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  87. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  88. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  89. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  90. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  91. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  92. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  93. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  94. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  95. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  96. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  97. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  98. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  99. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  100. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  101. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  102. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  103. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  104. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  105. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  106. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  107. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  108. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  109. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  110. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  111. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  112. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  113. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  114. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  115. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  116. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  117. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  118. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  119. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  120. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  121. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  122. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  123. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  124. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  125. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  126. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  127. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  128. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  129. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  130. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  131. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  132. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  133. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  134. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  135. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  136. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  137. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  138. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  139. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  140. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  141. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  142. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  143. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  144. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  145. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  146. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  147. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  148. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  149. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  150. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  151. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  152. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  153. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  154. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  155. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  156. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  157. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  158. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  159. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  160. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  161. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  162. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  163. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  164. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  165. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  166. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  167. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  168. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  169. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  170. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  171. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  172. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  173. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  174. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  175. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  176. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  177. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  178. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  179. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  180. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  181. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  182. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  183. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  184. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  185. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  186. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  187. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  188. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  189. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  190. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  191. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  192. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  193. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  194. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  195. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  196. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  197. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  198. data/{package.json → stdlib/nodejs/package.json} +0 -3
  199. data/stdlib/phantomjs.rb +1 -6
  200. data/tasks/testing.rake +1 -4
  201. metadata +191 -6
  202. data/stdlib/nodejs/runtime.rb +0 -26
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+
4
+ var common = require('./common');
5
+
6
+
7
+ function Mark(name, buffer, position, line, column) {
8
+ this.name = name;
9
+ this.buffer = buffer;
10
+ this.position = position;
11
+ this.line = line;
12
+ this.column = column;
13
+ }
14
+
15
+
16
+ Mark.prototype.getSnippet = function getSnippet(indent, maxLength) {
17
+ var head, start, tail, end, snippet;
18
+
19
+ if (!this.buffer) {
20
+ return null;
21
+ }
22
+
23
+ indent = indent || 4;
24
+ maxLength = maxLength || 75;
25
+
26
+ head = '';
27
+ start = this.position;
28
+
29
+ while (start > 0 && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1))) {
30
+ start -= 1;
31
+ if (this.position - start > (maxLength / 2 - 1)) {
32
+ head = ' ... ';
33
+ start += 5;
34
+ break;
35
+ }
36
+ }
37
+
38
+ tail = '';
39
+ end = this.position;
40
+
41
+ while (end < this.buffer.length && -1 === '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end))) {
42
+ end += 1;
43
+ if (end - this.position > (maxLength / 2 - 1)) {
44
+ tail = ' ... ';
45
+ end -= 5;
46
+ break;
47
+ }
48
+ }
49
+
50
+ snippet = this.buffer.slice(start, end);
51
+
52
+ return common.repeat(' ', indent) + head + snippet + tail + '\n' +
53
+ common.repeat(' ', indent + this.position - start + head.length) + '^';
54
+ };
55
+
56
+
57
+ Mark.prototype.toString = function toString(compact) {
58
+ var snippet, where = '';
59
+
60
+ if (this.name) {
61
+ where += 'in "' + this.name + '" ';
62
+ }
63
+
64
+ where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
65
+
66
+ if (!compact) {
67
+ snippet = this.getSnippet();
68
+
69
+ if (snippet) {
70
+ where += ':\n' + snippet;
71
+ }
72
+ }
73
+
74
+ return where;
75
+ };
76
+
77
+
78
+ module.exports = Mark;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+
4
+ var common = require('./common');
5
+ var YAMLException = require('./exception');
6
+ var Type = require('./type');
7
+
8
+
9
+ function compileList(schema, name, result) {
10
+ var exclude = [];
11
+
12
+ schema.include.forEach(function (includedSchema) {
13
+ result = compileList(includedSchema, name, result);
14
+ });
15
+
16
+ schema[name].forEach(function (currentType) {
17
+ result.forEach(function (previousType, previousIndex) {
18
+ if (previousType.tag === currentType.tag) {
19
+ exclude.push(previousIndex);
20
+ }
21
+ });
22
+
23
+ result.push(currentType);
24
+ });
25
+
26
+ return result.filter(function (type, index) {
27
+ return -1 === exclude.indexOf(index);
28
+ });
29
+ }
30
+
31
+
32
+ function compileMap(/* lists... */) {
33
+ var result = {}, index, length;
34
+
35
+ function collectType(type) {
36
+ result[type.tag] = type;
37
+ }
38
+
39
+ for (index = 0, length = arguments.length; index < length; index += 1) {
40
+ arguments[index].forEach(collectType);
41
+ }
42
+
43
+ return result;
44
+ }
45
+
46
+
47
+ function Schema(definition) {
48
+ this.include = definition.include || [];
49
+ this.implicit = definition.implicit || [];
50
+ this.explicit = definition.explicit || [];
51
+
52
+ this.implicit.forEach(function (type) {
53
+ if (type.loadKind && 'scalar' !== type.loadKind) {
54
+ throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
55
+ }
56
+ });
57
+
58
+ this.compiledImplicit = compileList(this, 'implicit', []);
59
+ this.compiledExplicit = compileList(this, 'explicit', []);
60
+ this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);
61
+ }
62
+
63
+
64
+ Schema.DEFAULT = null;
65
+
66
+
67
+ Schema.create = function createSchema() {
68
+ var schemas, types;
69
+
70
+ switch (arguments.length) {
71
+ case 1:
72
+ schemas = Schema.DEFAULT;
73
+ types = arguments[0];
74
+ break;
75
+
76
+ case 2:
77
+ schemas = arguments[0];
78
+ types = arguments[1];
79
+ break;
80
+
81
+ default:
82
+ throw new YAMLException('Wrong number of arguments for Schema.create function');
83
+ }
84
+
85
+ schemas = common.toArray(schemas);
86
+ types = common.toArray(types);
87
+
88
+ if (!schemas.every(function (schema) { return schema instanceof Schema; })) {
89
+ throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
90
+ }
91
+
92
+ if (!types.every(function (type) { return type instanceof Type; })) {
93
+ throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');
94
+ }
95
+
96
+ return new Schema({
97
+ include: schemas,
98
+ explicit: types
99
+ });
100
+ };
101
+
102
+
103
+ module.exports = Schema;
@@ -0,0 +1,18 @@
1
+ // Standard YAML's Core schema.
2
+ // http://www.yaml.org/spec/1.2/spec.html#id2804923
3
+ //
4
+ // NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
5
+ // So, Core schema has no distinctions from JSON schema is JS-YAML.
6
+
7
+
8
+ 'use strict';
9
+
10
+
11
+ var Schema = require('../schema');
12
+
13
+
14
+ module.exports = new Schema({
15
+ include: [
16
+ require('./json')
17
+ ]
18
+ });
@@ -0,0 +1,25 @@
1
+ // JS-YAML's default schema for `load` function.
2
+ // It is not described in the YAML specification.
3
+ //
4
+ // This schema is based on JS-YAML's default safe schema and includes
5
+ // JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.
6
+ //
7
+ // Also this schema is used as default base schema at `Schema.create` function.
8
+
9
+
10
+ 'use strict';
11
+
12
+
13
+ var Schema = require('../schema');
14
+
15
+
16
+ module.exports = Schema.DEFAULT = new Schema({
17
+ include: [
18
+ require('./default_safe')
19
+ ],
20
+ explicit: [
21
+ require('../type/js/undefined'),
22
+ require('../type/js/regexp'),
23
+ require('../type/js/function')
24
+ ]
25
+ });
@@ -0,0 +1,28 @@
1
+ // JS-YAML's default schema for `safeLoad` function.
2
+ // It is not described in the YAML specification.
3
+ //
4
+ // This schema is based on standard YAML's Core schema and includes most of
5
+ // extra types described at YAML tag repository. (http://yaml.org/type/)
6
+
7
+
8
+ 'use strict';
9
+
10
+
11
+ var Schema = require('../schema');
12
+
13
+
14
+ module.exports = new Schema({
15
+ include: [
16
+ require('./core')
17
+ ],
18
+ implicit: [
19
+ require('../type/timestamp'),
20
+ require('../type/merge')
21
+ ],
22
+ explicit: [
23
+ require('../type/binary'),
24
+ require('../type/omap'),
25
+ require('../type/pairs'),
26
+ require('../type/set')
27
+ ]
28
+ });
@@ -0,0 +1,17 @@
1
+ // Standard YAML's Failsafe schema.
2
+ // http://www.yaml.org/spec/1.2/spec.html#id2802346
3
+
4
+
5
+ 'use strict';
6
+
7
+
8
+ var Schema = require('../schema');
9
+
10
+
11
+ module.exports = new Schema({
12
+ explicit: [
13
+ require('../type/str'),
14
+ require('../type/seq'),
15
+ require('../type/map')
16
+ ]
17
+ });
@@ -0,0 +1,25 @@
1
+ // Standard YAML's JSON schema.
2
+ // http://www.yaml.org/spec/1.2/spec.html#id2803231
3
+ //
4
+ // NOTE: JS-YAML does not support schema-specific tag resolution restrictions.
5
+ // So, this schema is not such strict as defined in the YAML specification.
6
+ // It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.
7
+
8
+
9
+ 'use strict';
10
+
11
+
12
+ var Schema = require('../schema');
13
+
14
+
15
+ module.exports = new Schema({
16
+ include: [
17
+ require('./failsafe')
18
+ ],
19
+ implicit: [
20
+ require('../type/null'),
21
+ require('../type/bool'),
22
+ require('../type/int'),
23
+ require('../type/float')
24
+ ]
25
+ });
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ var YAMLException = require('./exception');
4
+
5
+ var TYPE_CONSTRUCTOR_OPTIONS = [
6
+ 'kind',
7
+ 'resolve',
8
+ 'construct',
9
+ 'instanceOf',
10
+ 'predicate',
11
+ 'represent',
12
+ 'defaultStyle',
13
+ 'styleAliases'
14
+ ];
15
+
16
+ var YAML_NODE_KINDS = [
17
+ 'scalar',
18
+ 'sequence',
19
+ 'mapping'
20
+ ];
21
+
22
+ function compileStyleAliases(map) {
23
+ var result = {};
24
+
25
+ if (null !== map) {
26
+ Object.keys(map).forEach(function (style) {
27
+ map[style].forEach(function (alias) {
28
+ result[String(alias)] = style;
29
+ });
30
+ });
31
+ }
32
+
33
+ return result;
34
+ }
35
+
36
+ function Type(tag, options) {
37
+ options = options || {};
38
+
39
+ Object.keys(options).forEach(function (name) {
40
+ if (-1 === TYPE_CONSTRUCTOR_OPTIONS.indexOf(name)) {
41
+ throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
42
+ }
43
+ });
44
+
45
+ // TODO: Add tag format check.
46
+ this.tag = tag;
47
+ this.kind = options['kind'] || null;
48
+ this.resolve = options['resolve'] || function () { return true; };
49
+ this.construct = options['construct'] || function (data) { return data; };
50
+ this.instanceOf = options['instanceOf'] || null;
51
+ this.predicate = options['predicate'] || null;
52
+ this.represent = options['represent'] || null;
53
+ this.defaultStyle = options['defaultStyle'] || null;
54
+ this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
55
+
56
+ if (-1 === YAML_NODE_KINDS.indexOf(this.kind)) {
57
+ throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
58
+ }
59
+ }
60
+
61
+ module.exports = Type;
@@ -0,0 +1,133 @@
1
+ 'use strict';
2
+
3
+
4
+ // A trick for browserified version.
5
+ // Since we make browserifier to ignore `buffer` module, NodeBuffer will be undefined
6
+ var NodeBuffer = require('buffer').Buffer;
7
+ var Type = require('../type');
8
+
9
+
10
+ // [ 64, 65, 66 ] -> [ padding, CR, LF ]
11
+ var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
12
+
13
+
14
+ function resolveYamlBinary(data) {
15
+ if (null === data) {
16
+ return false;
17
+ }
18
+
19
+ var code, idx, bitlen = 0, len = 0, max = data.length, map = BASE64_MAP;
20
+
21
+ // Convert one by one.
22
+ for (idx = 0; idx < max; idx ++) {
23
+ code = map.indexOf(data.charAt(idx));
24
+
25
+ // Skip CR/LF
26
+ if (code > 64) { continue; }
27
+
28
+ // Fail on illegal characters
29
+ if (code < 0) { return false; }
30
+
31
+ bitlen += 6;
32
+ }
33
+
34
+ // If there are any bits left, source was corrupted
35
+ return (bitlen % 8) === 0;
36
+ }
37
+
38
+ function constructYamlBinary(data) {
39
+ var code, idx, tailbits,
40
+ input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan
41
+ max = input.length,
42
+ map = BASE64_MAP,
43
+ bits = 0,
44
+ result = [];
45
+
46
+ // Collect by 6*4 bits (3 bytes)
47
+
48
+ for (idx = 0; idx < max; idx++) {
49
+ if ((idx % 4 === 0) && idx) {
50
+ result.push((bits >> 16) & 0xFF);
51
+ result.push((bits >> 8) & 0xFF);
52
+ result.push(bits & 0xFF);
53
+ }
54
+
55
+ bits = (bits << 6) | map.indexOf(input.charAt(idx));
56
+ }
57
+
58
+ // Dump tail
59
+
60
+ tailbits = (max % 4)*6;
61
+
62
+ if (tailbits === 0) {
63
+ result.push((bits >> 16) & 0xFF);
64
+ result.push((bits >> 8) & 0xFF);
65
+ result.push(bits & 0xFF);
66
+ } else if (tailbits === 18) {
67
+ result.push((bits >> 10) & 0xFF);
68
+ result.push((bits >> 2) & 0xFF);
69
+ } else if (tailbits === 12) {
70
+ result.push((bits >> 4) & 0xFF);
71
+ }
72
+
73
+ // Wrap into Buffer for NodeJS and leave Array for browser
74
+ if (NodeBuffer) {
75
+ return new NodeBuffer(result);
76
+ }
77
+
78
+ return result;
79
+ }
80
+
81
+ function representYamlBinary(object /*, style*/) {
82
+ var result = '', bits = 0, idx, tail,
83
+ max = object.length,
84
+ map = BASE64_MAP;
85
+
86
+ // Convert every three bytes to 4 ASCII characters.
87
+
88
+ for (idx = 0; idx < max; idx++) {
89
+ if ((idx % 3 === 0) && idx) {
90
+ result += map[(bits >> 18) & 0x3F];
91
+ result += map[(bits >> 12) & 0x3F];
92
+ result += map[(bits >> 6) & 0x3F];
93
+ result += map[bits & 0x3F];
94
+ }
95
+
96
+ bits = (bits << 8) + object[idx];
97
+ }
98
+
99
+ // Dump tail
100
+
101
+ tail = max % 3;
102
+
103
+ if (tail === 0) {
104
+ result += map[(bits >> 18) & 0x3F];
105
+ result += map[(bits >> 12) & 0x3F];
106
+ result += map[(bits >> 6) & 0x3F];
107
+ result += map[bits & 0x3F];
108
+ } else if (tail === 2) {
109
+ result += map[(bits >> 10) & 0x3F];
110
+ result += map[(bits >> 4) & 0x3F];
111
+ result += map[(bits << 2) & 0x3F];
112
+ result += map[64];
113
+ } else if (tail === 1) {
114
+ result += map[(bits >> 2) & 0x3F];
115
+ result += map[(bits << 4) & 0x3F];
116
+ result += map[64];
117
+ result += map[64];
118
+ }
119
+
120
+ return result;
121
+ }
122
+
123
+ function isBinary(object) {
124
+ return NodeBuffer && NodeBuffer.isBuffer(object);
125
+ }
126
+
127
+ module.exports = new Type('tag:yaml.org,2002:binary', {
128
+ kind: 'scalar',
129
+ resolve: resolveYamlBinary,
130
+ construct: constructYamlBinary,
131
+ predicate: isBinary,
132
+ represent: representYamlBinary
133
+ });