smock 0.1.217 → 0.1.218

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. data/Gemfile.lock +1 -1
  2. data/app/assets/javascripts/modules/category_dropdown.coffee +0 -1
  3. data/examples/pages/homepage.html +1 -0
  4. data/node_modules/exports-loader/.npmignore +1 -0
  5. data/node_modules/exports-loader/README.md +18 -0
  6. data/node_modules/exports-loader/index.js +36 -0
  7. data/node_modules/exports-loader/node_modules/loader-utils/.npmignore +1 -0
  8. data/node_modules/exports-loader/node_modules/loader-utils/README.md +129 -0
  9. data/node_modules/exports-loader/node_modules/loader-utils/index.js +229 -0
  10. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/.bin/json5 +41 -0
  11. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/.npmignore +0 -0
  12. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/LICENCE +23 -0
  13. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/README.md +214 -0
  14. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/big.js +1026 -0
  15. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/big.min.js +1 -0
  16. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/doc/bigAPI.html +1026 -0
  17. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/package.json +61 -0
  18. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/big-vs-bigdecimal.html +678 -0
  19. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/bigtime.js +324 -0
  20. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/BigDecTest.class +0 -0
  21. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/BigDecTest.java +60 -0
  22. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/LICENCE.txt +205 -0
  23. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/bigdecimal.js +592 -0
  24. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/bugs.js +53 -0
  25. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.js +5724 -0
  26. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js +61 -0
  27. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt +30 -0
  28. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/abs.js +555 -0
  29. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/big-vs-number.html +249 -0
  30. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/every-test.html +66 -0
  31. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/single-test.html +26 -0
  32. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/cmp.js +4305 -0
  33. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/div.js +9978 -0
  34. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/every-test.js +31 -0
  35. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/minus.js +1793 -0
  36. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/mod.js +1838 -0
  37. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/plus.js +1916 -0
  38. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/pow.js +1233 -0
  39. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/round.js +5173 -0
  40. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/sqrt.js +788 -0
  41. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/times.js +2159 -0
  42. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/toExponential.js +472 -0
  43. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/toFixed.js +1030 -0
  44. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/toPrecision.js +508 -0
  45. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/big.js/test/toString.js +1068 -0
  46. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/.npmignore +4 -0
  47. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/CHANGELOG.md +56 -0
  48. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/Makefile +27 -0
  49. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/README.md +173 -0
  50. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/lib/cli.js +41 -0
  51. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/lib/json5.js +462 -0
  52. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/lib/require.js +18 -0
  53. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/package.json +66 -0
  54. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/package.json5 +24 -0
  55. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/empty-array.json +1 -0
  56. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/leading-comma-array.js +3 -0
  57. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/lone-trailing-comma-array.js +3 -0
  58. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/no-comma-array.txt +4 -0
  59. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/regular-array.json +5 -0
  60. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/trailing-comma-array.json5 +3 -0
  61. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-following-array-element.json5 +6 -0
  62. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-following-top-level-value.json5 +5 -0
  63. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-in-string.json +1 -0
  64. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-preceding-top-level-value.json5 +5 -0
  65. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-with-asterisks.json5 +7 -0
  66. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-following-array-element.json5 +3 -0
  67. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-following-top-level-value.json5 +1 -0
  68. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-in-string.json +1 -0
  69. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-preceding-top-level-value.json5 +2 -0
  70. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/top-level-block-comment.txt +4 -0
  71. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/top-level-inline-comment.txt +1 -0
  72. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/unterminated-block-comment.txt +5 -0
  73. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/empty.txt +0 -0
  74. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/npm-package.json +106 -0
  75. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/npm-package.json5 +106 -0
  76. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/readme-example.json5 +23 -0
  77. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal-with-exponent.json +1 -0
  78. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal-with-negative-exponent.json +1 -0
  79. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal.json +1 -0
  80. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-lowercase-letter.json5 +1 -0
  81. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-no-digits.txt +1 -0
  82. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-uppercase-x.json5 +1 -0
  83. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal.json5 +1 -0
  84. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/leading-decimal-point.json5 +1 -0
  85. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-decimal-literal.json +1 -0
  86. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-hexadecimal-literal.json5 +1 -0
  87. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-leading-decimal-point.json5 +1 -0
  88. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/noctal-literal-with-octal-digit-after-leading-zero.js +1 -0
  89. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/noctal-literal.js +1 -0
  90. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/octal-literal.txt +1 -0
  91. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/trailing-decimal-point-with-exponent.js +1 -0
  92. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/trailing-decimal-point.js +1 -0
  93. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/zero-literal.json +1 -0
  94. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/empty-object.json +1 -0
  95. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/illegal-unquoted-key-number.txt +3 -0
  96. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/illegal-unquoted-key-symbol.txt +3 -0
  97. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/leading-comma-object.txt +3 -0
  98. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/lone-trailing-comma-object.txt +3 -0
  99. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/no-comma-object.txt +4 -0
  100. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/reserved-unquoted-key.json5 +3 -0
  101. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/single-quoted-key.json5 +3 -0
  102. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/trailing-comma-object.json5 +3 -0
  103. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/unquoted-keys.json5 +8 -0
  104. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/escaped-single-quoted-string.json5 +1 -0
  105. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/multi-line-string.json5 +2 -0
  106. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/single-quoted-string.json5 +1 -0
  107. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/todo/unicode-escaped-unquoted-key.json5 +3 -0
  108. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/todo/unicode-unquoted-key.json5 +3 -0
  109. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/parse.js +74 -0
  110. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/readme.md +23 -0
  111. data/node_modules/exports-loader/node_modules/loader-utils/node_modules/json5/test/require.js +18 -0
  112. data/node_modules/exports-loader/node_modules/loader-utils/package.json +54 -0
  113. data/node_modules/exports-loader/node_modules/loader-utils/test/index.js +62 -0
  114. data/node_modules/exports-loader/node_modules/source-map/.npmignore +2 -0
  115. data/node_modules/exports-loader/node_modules/source-map/.travis.yml +4 -0
  116. data/node_modules/exports-loader/node_modules/source-map/CHANGELOG.md +194 -0
  117. data/node_modules/exports-loader/node_modules/source-map/LICENSE +28 -0
  118. data/node_modules/exports-loader/node_modules/source-map/Makefile.dryice.js +166 -0
  119. data/node_modules/exports-loader/node_modules/source-map/README.md +475 -0
  120. data/node_modules/exports-loader/node_modules/source-map/build/assert-shim.js +56 -0
  121. data/node_modules/exports-loader/node_modules/source-map/build/mini-require.js +152 -0
  122. data/node_modules/exports-loader/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  123. data/node_modules/exports-loader/node_modules/source-map/build/prefix-utils.jsm +18 -0
  124. data/node_modules/exports-loader/node_modules/source-map/build/suffix-browser.js +8 -0
  125. data/node_modules/exports-loader/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  126. data/node_modules/exports-loader/node_modules/source-map/build/suffix-utils.jsm +21 -0
  127. data/node_modules/exports-loader/node_modules/source-map/build/test-prefix.js +8 -0
  128. data/node_modules/exports-loader/node_modules/source-map/build/test-suffix.js +3 -0
  129. data/node_modules/exports-loader/node_modules/source-map/lib/source-map.js +8 -0
  130. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/array-set.js +97 -0
  131. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/base64-vlq.js +142 -0
  132. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/base64.js +42 -0
  133. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/binary-search.js +80 -0
  134. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/mapping-list.js +86 -0
  135. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/source-map-consumer.js +575 -0
  136. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/source-map-generator.js +400 -0
  137. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/source-node.js +414 -0
  138. data/node_modules/exports-loader/node_modules/source-map/lib/source-map/util.js +319 -0
  139. data/node_modules/exports-loader/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  140. data/node_modules/exports-loader/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  141. data/node_modules/exports-loader/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  142. data/node_modules/exports-loader/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  143. data/node_modules/exports-loader/node_modules/source-map/node_modules/amdefine/package.json +37 -0
  144. data/node_modules/exports-loader/node_modules/source-map/package.json +186 -0
  145. data/node_modules/exports-loader/node_modules/source-map/test/run-tests.js +62 -0
  146. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-api.js +26 -0
  147. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  148. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-base64-vlq.js +23 -0
  149. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-base64.js +35 -0
  150. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  151. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-dog-fooding.js +84 -0
  152. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-source-map-consumer.js +702 -0
  153. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-source-map-generator.js +679 -0
  154. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-source-node.js +612 -0
  155. data/node_modules/exports-loader/node_modules/source-map/test/source-map/test-util.js +216 -0
  156. data/node_modules/exports-loader/node_modules/source-map/test/source-map/util.js +192 -0
  157. data/node_modules/exports-loader/package.json +46 -0
  158. data/node_modules/imports-loader/.npmignore +1 -0
  159. data/node_modules/imports-loader/README.md +17 -0
  160. data/node_modules/imports-loader/index.js +46 -0
  161. data/node_modules/imports-loader/node_modules/loader-utils/.npmignore +1 -0
  162. data/node_modules/imports-loader/node_modules/loader-utils/README.md +129 -0
  163. data/node_modules/imports-loader/node_modules/loader-utils/index.js +229 -0
  164. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/.bin/json5 +41 -0
  165. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/.npmignore +0 -0
  166. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/LICENCE +23 -0
  167. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/README.md +214 -0
  168. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/big.js +1026 -0
  169. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/big.min.js +1 -0
  170. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/doc/bigAPI.html +1026 -0
  171. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/package.json +61 -0
  172. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/big-vs-bigdecimal.html +678 -0
  173. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/bigtime.js +324 -0
  174. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/BigDecTest.class +0 -0
  175. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/BigDecTest.java +60 -0
  176. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/LICENCE.txt +205 -0
  177. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/bigdecimal.js +592 -0
  178. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_GWT/bugs.js +53 -0
  179. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.js +5724 -0
  180. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js +61 -0
  181. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt +30 -0
  182. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/abs.js +555 -0
  183. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/big-vs-number.html +249 -0
  184. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/every-test.html +66 -0
  185. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/browser/single-test.html +26 -0
  186. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/cmp.js +4305 -0
  187. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/div.js +9978 -0
  188. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/every-test.js +31 -0
  189. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/minus.js +1793 -0
  190. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/mod.js +1838 -0
  191. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/plus.js +1916 -0
  192. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/pow.js +1233 -0
  193. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/round.js +5173 -0
  194. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/sqrt.js +788 -0
  195. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/times.js +2159 -0
  196. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/toExponential.js +472 -0
  197. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/toFixed.js +1030 -0
  198. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/toPrecision.js +508 -0
  199. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/big.js/test/toString.js +1068 -0
  200. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/.npmignore +4 -0
  201. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/CHANGELOG.md +56 -0
  202. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/Makefile +27 -0
  203. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/README.md +173 -0
  204. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/lib/cli.js +41 -0
  205. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/lib/json5.js +462 -0
  206. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/lib/require.js +18 -0
  207. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/package.json +66 -0
  208. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/package.json5 +24 -0
  209. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/empty-array.json +1 -0
  210. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/leading-comma-array.js +3 -0
  211. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/lone-trailing-comma-array.js +3 -0
  212. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/no-comma-array.txt +4 -0
  213. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/regular-array.json +5 -0
  214. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/arrays/trailing-comma-array.json5 +3 -0
  215. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-following-array-element.json5 +6 -0
  216. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-following-top-level-value.json5 +5 -0
  217. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-in-string.json +1 -0
  218. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-preceding-top-level-value.json5 +5 -0
  219. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/block-comment-with-asterisks.json5 +7 -0
  220. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-following-array-element.json5 +3 -0
  221. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-following-top-level-value.json5 +1 -0
  222. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-in-string.json +1 -0
  223. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/inline-comment-preceding-top-level-value.json5 +2 -0
  224. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/top-level-block-comment.txt +4 -0
  225. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/top-level-inline-comment.txt +1 -0
  226. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/comments/unterminated-block-comment.txt +5 -0
  227. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/empty.txt +0 -0
  228. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/npm-package.json +106 -0
  229. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/npm-package.json5 +106 -0
  230. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/misc/readme-example.json5 +23 -0
  231. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal-with-exponent.json +1 -0
  232. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal-with-negative-exponent.json +1 -0
  233. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/decimal-literal.json +1 -0
  234. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-lowercase-letter.json5 +1 -0
  235. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-no-digits.txt +1 -0
  236. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal-with-uppercase-x.json5 +1 -0
  237. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/hexadecimal-literal.json5 +1 -0
  238. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/leading-decimal-point.json5 +1 -0
  239. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-decimal-literal.json +1 -0
  240. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-hexadecimal-literal.json5 +1 -0
  241. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/negative-leading-decimal-point.json5 +1 -0
  242. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/noctal-literal-with-octal-digit-after-leading-zero.js +1 -0
  243. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/noctal-literal.js +1 -0
  244. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/octal-literal.txt +1 -0
  245. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/trailing-decimal-point-with-exponent.js +1 -0
  246. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/trailing-decimal-point.js +1 -0
  247. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/numbers/zero-literal.json +1 -0
  248. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/empty-object.json +1 -0
  249. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/illegal-unquoted-key-number.txt +3 -0
  250. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/illegal-unquoted-key-symbol.txt +3 -0
  251. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/leading-comma-object.txt +3 -0
  252. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/lone-trailing-comma-object.txt +3 -0
  253. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/no-comma-object.txt +4 -0
  254. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/reserved-unquoted-key.json5 +3 -0
  255. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/single-quoted-key.json5 +3 -0
  256. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/trailing-comma-object.json5 +3 -0
  257. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/objects/unquoted-keys.json5 +8 -0
  258. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/escaped-single-quoted-string.json5 +1 -0
  259. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/multi-line-string.json5 +2 -0
  260. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/strings/single-quoted-string.json5 +1 -0
  261. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/todo/unicode-escaped-unquoted-key.json5 +3 -0
  262. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse-cases/todo/unicode-unquoted-key.json5 +3 -0
  263. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/parse.js +74 -0
  264. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/readme.md +23 -0
  265. data/node_modules/imports-loader/node_modules/loader-utils/node_modules/json5/test/require.js +18 -0
  266. data/node_modules/imports-loader/node_modules/loader-utils/package.json +53 -0
  267. data/node_modules/imports-loader/node_modules/loader-utils/test/index.js +62 -0
  268. data/node_modules/imports-loader/node_modules/source-map/.npmignore +2 -0
  269. data/node_modules/imports-loader/node_modules/source-map/.travis.yml +4 -0
  270. data/node_modules/imports-loader/node_modules/source-map/CHANGELOG.md +194 -0
  271. data/node_modules/imports-loader/node_modules/source-map/LICENSE +28 -0
  272. data/node_modules/imports-loader/node_modules/source-map/Makefile.dryice.js +166 -0
  273. data/node_modules/imports-loader/node_modules/source-map/README.md +475 -0
  274. data/node_modules/imports-loader/node_modules/source-map/build/assert-shim.js +56 -0
  275. data/node_modules/imports-loader/node_modules/source-map/build/mini-require.js +152 -0
  276. data/node_modules/imports-loader/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  277. data/node_modules/imports-loader/node_modules/source-map/build/prefix-utils.jsm +18 -0
  278. data/node_modules/imports-loader/node_modules/source-map/build/suffix-browser.js +8 -0
  279. data/node_modules/imports-loader/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  280. data/node_modules/imports-loader/node_modules/source-map/build/suffix-utils.jsm +21 -0
  281. data/node_modules/imports-loader/node_modules/source-map/build/test-prefix.js +8 -0
  282. data/node_modules/imports-loader/node_modules/source-map/build/test-suffix.js +3 -0
  283. data/node_modules/imports-loader/node_modules/source-map/lib/source-map.js +8 -0
  284. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/array-set.js +97 -0
  285. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/base64-vlq.js +142 -0
  286. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/base64.js +42 -0
  287. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/binary-search.js +80 -0
  288. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/mapping-list.js +86 -0
  289. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/source-map-consumer.js +575 -0
  290. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/source-map-generator.js +400 -0
  291. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/source-node.js +414 -0
  292. data/node_modules/imports-loader/node_modules/source-map/lib/source-map/util.js +319 -0
  293. data/node_modules/imports-loader/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  294. data/node_modules/imports-loader/node_modules/source-map/node_modules/amdefine/README.md +171 -0
  295. data/node_modules/imports-loader/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  296. data/node_modules/imports-loader/node_modules/source-map/node_modules/amdefine/intercept.js +36 -0
  297. data/node_modules/imports-loader/node_modules/source-map/node_modules/amdefine/package.json +37 -0
  298. data/node_modules/imports-loader/node_modules/source-map/package.json +186 -0
  299. data/node_modules/imports-loader/node_modules/source-map/test/run-tests.js +62 -0
  300. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-api.js +26 -0
  301. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-array-set.js +104 -0
  302. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-base64-vlq.js +23 -0
  303. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-base64.js +35 -0
  304. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  305. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-dog-fooding.js +84 -0
  306. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-source-map-consumer.js +702 -0
  307. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-source-map-generator.js +679 -0
  308. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-source-node.js +612 -0
  309. data/node_modules/imports-loader/node_modules/source-map/test/source-map/test-util.js +216 -0
  310. data/node_modules/imports-loader/node_modules/source-map/test/source-map/util.js +192 -0
  311. data/node_modules/imports-loader/package.json +46 -0
  312. data/package.json +4 -2
  313. data/webpack.config.js +3 -6
  314. metadata +312 -5
  315. data/app/assets/javascripts/vendor/jquery.js +0 -10346
@@ -0,0 +1,4 @@
1
+ node_modules
2
+ npm-debug.log
3
+
4
+ package.json
@@ -0,0 +1,56 @@
1
+ ### v0.1.0 [[code][c0.1.0], [diff][d0.1.0]]
2
+
3
+ [c0.1.0]: https://github.com/aseemk/json5/tree/v0.1.0
4
+ [d0.1.0]: https://github.com/aseemk/json5/compare/v0.0.1...v0.1.0
5
+
6
+ This release tightens JSON5 support and adds helpful utility features:
7
+
8
+ - Support hexadecimal numbers. (Thanks [@MaxNanasy][].)
9
+
10
+ - Reject octal numbers properly now. Previously, they were accepted but
11
+ improperly parsed as base-10 numbers. (Thanks [@MaxNanasy][].)
12
+
13
+ - **Breaking:** Reject "noctal" numbers now (base-10 numbers that begin with a
14
+ leading zero). These are disallowed by both JSON5 and JSON, as well as by
15
+ ES5's strict mode. (Thanks [@MaxNanasy][].)
16
+
17
+ - Support leading decimal points in decimal numbers. (Thanks [@MaxNanasy][].)
18
+
19
+ - **Breaking:** Reject trailing decimal points in decimal numbers now. These
20
+ are disallowed by both JSON5 and JSON. (Thanks [@MaxNanasy][].)
21
+
22
+ - **Breaking:** Reject omitted elements in arrays now. These are disallowed by
23
+ both JSON5 and JSON.
24
+
25
+ - Throw proper `SyntaxError` instances on errors now.
26
+
27
+ - Add Node.js `require()` hook. Require `json5/lib/require` to register it.
28
+
29
+ - Add Node.js executable to compile JSON5 files to JSON. Run with `json5`.
30
+
31
+ ### v0.0.1 [[code][c0.0.1], [diff][d0.0.1]]
32
+
33
+ [c0.0.1]: https://github.com/aseemk/json5/tree/v0.0.1
34
+ [d0.0.1]: https://github.com/aseemk/json5/compare/v0.0.0...v0.0.1
35
+
36
+ This was the first implementation of this JSON5 parser.
37
+
38
+ - Support unquoted object keys, including reserved words. Unicode characters
39
+ and escape sequences sequences aren't yet supported.
40
+
41
+ - Support single-quoted strings.
42
+
43
+ - Support multi-line strings.
44
+
45
+ - Support trailing commas in arrays and objects.
46
+
47
+ - Support comments, both inline and block.
48
+
49
+ ### v0.0.0 [[code](https://github.com/aseemk/json5/tree/v0.0.0)]
50
+
51
+ Let's consider this to be Douglas Crockford's original [json_parse.js][] — a
52
+ parser for the regular JSON format.
53
+
54
+ [json_parse.js]: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
55
+
56
+ [@MaxNanasy]: https://github.com/MaxNanasy
@@ -0,0 +1,27 @@
1
+ all: install
2
+
3
+ clean:
4
+ $(call clean)
5
+
6
+ install: package
7
+ @npm install
8
+ $(call clean)
9
+
10
+ link: package
11
+ @npm link
12
+ $(call clean)
13
+
14
+ package:
15
+ @./lib/cli.js -c package.json5
16
+
17
+ publish: package
18
+ @npm publish
19
+ $(call clean)
20
+
21
+ test: package
22
+ @npm test || : # don't fail on test errors; TODO still fail after clean?
23
+ $(call clean)
24
+
25
+ # Helpers:
26
+
27
+ clean = @rm -f package.json
@@ -0,0 +1,173 @@
1
+ # JSON5 – Modern JSON
2
+
3
+ JSON isn't the friendliest to write and maintain by hand. Keys need to be
4
+ quoted; objects and arrays can't have trailing commas; comments aren't
5
+ supported — even though none of these is the case with regular JavaScript
6
+ today.
7
+
8
+ Restricting JSON to such a strict subset of "JavaScript object notation" made
9
+ sense for making it a great data-exchange format, but JSON's usage has
10
+ expanded [beyond][ex1] [machine-to-machine][ex2] [communication][ex3].
11
+
12
+ [ex1]: http://plovr.com/docs.html
13
+ [ex2]: http://npmjs.org/doc/json.html
14
+ [ex3]: http://code.google.com/p/fuzztester/wiki/JSONFileFormat
15
+
16
+ **JSON5 is a proposed extension to JSON** that brings ES5 enhancements to its
17
+ syntax. It remains a **strict subset of JavaScript**, adds **no new data
18
+ types**, and is a **strict superset of existing JSON**.
19
+
20
+ JSON5 is not an official successor to JSON, and existing JSON parsers may not
21
+ understand these new features. It's thus recommended that files use a new
22
+ extension like `.json5` to be explicit. *[TODO: New MIME type too?]*
23
+
24
+ This module provides a JavaScript implementation that works on all modern JS
25
+ engines (even IE6). Its parser is based directly off of Douglas Crockford's
26
+ eval-free [json_parse.js][], making it both secure and robust. Give it a try!
27
+
28
+ ## Features
29
+
30
+ These are the new features of JSON5's syntax. All of these are optional, and
31
+ all of these are part of ES5 JavaScript.
32
+
33
+ - Object keys don't need to be quoted if they're valid [identifiers](
34
+ https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables). Yes, even reserved keywords are valid unquoted keys in ES5 [[§11.1.5](http://es5.github.com/#x11.1.5), [§7.6](http://es5.github.com/#x7.6)].
35
+ *[TODO: Unicode characters and escape sequences aren't yet supported in this implementation.]*
36
+
37
+ - Strings can be single-quoted.
38
+
39
+ - Strings can be split across multiple lines; just prefix each newline with a
40
+ backslash. [ES5 [§7.8.4](http://es5.github.com/#x7.8.4)]
41
+
42
+ - Objects and arrays can have trailing commas.
43
+
44
+ - Both inline (single-line) and block (multi-line) comments are allowed.
45
+
46
+ - Numbers can be hexadecimal (base 16), and they can also begin with a leading
47
+ decimal (e.g. `.5`).
48
+
49
+ ## Example
50
+
51
+ ```js
52
+ {
53
+ foo: 'bar',
54
+ while: true,
55
+
56
+ this: 'is a\
57
+ multi-line string',
58
+
59
+ // this is an inline comment
60
+ here: 'is another', // inline comment
61
+
62
+ /* this is a block comment
63
+ that continues on another line */
64
+
65
+ hex: 0xDEADbeef,
66
+ half: .5,
67
+
68
+ finally: 'a trailing comma',
69
+ oh: [
70
+ "we shouldn't forget",
71
+ 'arrays can have',
72
+ 'trailing commas too',
73
+ ],
74
+ }
75
+ ```
76
+
77
+ ## Installation
78
+
79
+ Via npm on Node:
80
+
81
+ ```
82
+ npm install json5
83
+ ```
84
+
85
+ ```js
86
+ var JSON5 = require('json5');
87
+ ```
88
+
89
+ Or in the browser (adds the `JSON5` object to the global namespace):
90
+
91
+ ```html
92
+ <script src="json5.js"></script>
93
+ ```
94
+
95
+ ## Usage
96
+
97
+ ```js
98
+ var obj = JSON5.parse('{unquoted:"key",trailing:"comma",}');
99
+ var str = JSON5.stringify(obj);
100
+ console.log(obj);
101
+ console.log(str);
102
+ ```
103
+
104
+ `JSON5.stringify()` is currently aliased to the native `JSON.stringify()` in
105
+ order for the output to be fully compatible with all JSON parsers today.
106
+
107
+ If you're running Node, you can also register a JSON5 `require()` hook to let
108
+ you `require()` `.json5` files just like you can `.json` files:
109
+
110
+ ```js
111
+ require('json5/lib/require');
112
+ require('./path/to/foo'); // tries foo.json5 after foo.js, foo.json, etc.
113
+ require('./path/to/bar.json5');
114
+ ```
115
+
116
+ This module also provides a `json5` executable (requires Node) for converting
117
+ JSON5 files to sibling JSON files:
118
+
119
+ ```
120
+ $ json5 -c path/to/foo.json5 # generates path/to/foo.json
121
+ ```
122
+
123
+ ## Development
124
+
125
+ ```
126
+ git clone git://github.com/aseemk/json5.git
127
+ cd json5
128
+ make
129
+ make test
130
+ ```
131
+
132
+ If your system doesn't have Make, this should work in place of `make [test]`:
133
+
134
+ ```
135
+ ./lib/cli.js -c package.json5
136
+ npm install
137
+ npm test
138
+ ```
139
+
140
+ Make is used to auto-generate the package.json file that npm requires from our
141
+ package.json5 file. Just re-run `make` (or `./lib/cli.js -c package.json5`) on
142
+ changes to package.json5.
143
+
144
+ Feel free to [file issues](https://github.com/aseemk/json5/issues) and submit
145
+ [pull requests](https://github.com/aseemk/json5/pulls) — contributions are
146
+ welcome.
147
+
148
+ If you submit a pull request, please be sure to add or update corresponding
149
+ test cases, and ensure that `make test` (or `npm test`) continues to pass.
150
+
151
+ ## License
152
+
153
+ MIT License. © 2012 Aseem Kishore, and [others](
154
+ https://github.com/aseemk/json5/contributors).
155
+
156
+ ## Credits
157
+
158
+ [Michael Bolin](http://bolinfest.com/) independently arrived at and published
159
+ some of these same ideas with awesome explanations and detail.
160
+ Recommended reading:
161
+ [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
162
+
163
+ [Douglas Crockford](http://www.crockford.com/) of course designed and built
164
+ JSON, but his state machine diagrams on the [JSON website](http://json.org/),
165
+ as cheesy as it may sound, gave me motivation and confidence that building a
166
+ new parser to implement these ideas this was within my reach!
167
+ This code is also modeled directly off of Doug's open-source [json_parse.js][]
168
+ parser. I'm super grateful for that clean and well-documented code.
169
+
170
+ [json_parse.js]: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
171
+
172
+ [Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
173
+ supporter, contributing multiple patches and ideas. Thanks Max!
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+
3
+ // cli.js
4
+ // JSON5 command-line interface.
5
+ //
6
+ // This is pretty minimal for now; just supports compiling files via `-c`.
7
+ // TODO More useful functionality, like output path, watch, etc.?
8
+
9
+ var FS = require('fs');
10
+ var JSON5 = require('./json5');
11
+ var Path = require('path');
12
+
13
+ var USAGE = [
14
+ 'Usage: json5 -c path/to/file.json5 ...',
15
+ 'Compiles JSON5 files into sibling JSON files with the same basenames.',
16
+ ].join('\n');
17
+
18
+ // if valid, args look like [node, json5, -c, file1, file2, ...]
19
+ var args = process.argv;
20
+
21
+ if (args.length < 4 || args[2] !== '-c') {
22
+ console.error(USAGE);
23
+ process.exit(1);
24
+ }
25
+
26
+ var cwd = process.cwd();
27
+ var files = args.slice(3);
28
+
29
+ // iterate over each file and convert JSON5 files to JSON:
30
+ files.forEach(function (file) {
31
+ var path = Path.resolve(cwd, file);
32
+ var basename = Path.basename(path, '.json5');
33
+ var dirname = Path.dirname(path);
34
+
35
+ var json5 = FS.readFileSync(path, 'utf8');
36
+ var obj = JSON5.parse(json5);
37
+ var json = JSON.stringify(obj, null, 4); // 4 spaces; TODO configurable?
38
+
39
+ path = Path.join(dirname, basename + '.json');
40
+ FS.writeFileSync(path, json, 'utf8');
41
+ });
@@ -0,0 +1,462 @@
1
+ // json5.js
2
+ // Modern JSON. See README.md for details.
3
+ //
4
+ // This file is based directly off of Douglas Crockford's json_parse.js:
5
+ // https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
6
+
7
+ var JSON5 = (typeof exports === 'object' ? exports : {});
8
+
9
+ JSON5.parse = (function () {
10
+ "use strict";
11
+
12
+ // This is a function that can parse a JSON5 text, producing a JavaScript
13
+ // data structure. It is a simple, recursive descent parser. It does not use
14
+ // eval or regular expressions, so it can be used as a model for implementing
15
+ // a JSON5 parser in other languages.
16
+
17
+ // We are defining the function inside of another function to avoid creating
18
+ // global variables.
19
+
20
+ var at, // The index of the current character
21
+ ch, // The current character
22
+ escapee = {
23
+ "'": "'",
24
+ '"': '"',
25
+ '\\': '\\',
26
+ '/': '/',
27
+ '\n': '', // Replace escaped newlines in strings w/ empty string
28
+ b: '\b',
29
+ f: '\f',
30
+ n: '\n',
31
+ r: '\r',
32
+ t: '\t'
33
+ },
34
+ text,
35
+
36
+ error = function (m) {
37
+
38
+ // Call error when something is wrong.
39
+
40
+ var error = new SyntaxError();
41
+ error.message = m;
42
+ error.at = at;
43
+ error.text = text;
44
+ throw error;
45
+ },
46
+
47
+ next = function (c) {
48
+
49
+ // If a c parameter is provided, verify that it matches the current character.
50
+
51
+ if (c && c !== ch) {
52
+ error("Expected '" + c + "' instead of '" + ch + "'");
53
+ }
54
+
55
+ // Get the next character. When there are no more characters,
56
+ // return the empty string.
57
+
58
+ ch = text.charAt(at);
59
+ at += 1;
60
+ return ch;
61
+ },
62
+
63
+ identifier = function () {
64
+
65
+ // Parse an identifier. Normally, reserved words are disallowed here, but we
66
+ // only use this for unquoted object keys, where reserved words are allowed,
67
+ // so we don't check for those here. References:
68
+ // - http://es5.github.com/#x7.6
69
+ // - https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Core_Language_Features#Variables
70
+ // - http://docstore.mik.ua/orelly/webprog/jscript/ch02_07.htm
71
+ // TODO Identifiers can have Unicode "letters" in them; add support for those.
72
+
73
+ var key = ch;
74
+
75
+ // Identifiers must start with a letter, _ or $.
76
+ if ((ch !== '_' && ch !== '$') &&
77
+ (ch < 'a' || ch > 'z') &&
78
+ (ch < 'A' || ch > 'Z')) {
79
+ error("Bad identifier");
80
+ }
81
+
82
+ // Subsequent characters can contain digits.
83
+ while (next() && (
84
+ ch === '_' || ch === '$' ||
85
+ (ch >= 'a' && ch <= 'z') ||
86
+ (ch >= 'A' && ch <= 'Z') ||
87
+ (ch >= '0' && ch <= '9'))) {
88
+ key += ch;
89
+ }
90
+
91
+ return key;
92
+ },
93
+
94
+ number = function () {
95
+
96
+ // Parse a number value.
97
+
98
+ var number,
99
+ string = '',
100
+ base = 10;
101
+
102
+ if (ch === '-') {
103
+ string = '-';
104
+ next('-');
105
+ }
106
+ if (ch === '0') {
107
+ string += ch;
108
+ next();
109
+ if (ch === 'x' || ch === 'X') {
110
+ string += ch;
111
+ next();
112
+ base = 16;
113
+ } else if (ch >= '0' && ch <= '9') {
114
+ error('Octal literal');
115
+ }
116
+ }
117
+ switch (base) {
118
+ case 10:
119
+ while (ch >= '0' && ch <= '9' ) {
120
+ string += ch;
121
+ next();
122
+ }
123
+ if (ch === '.') {
124
+ string += '.';
125
+ next('.');
126
+ if (ch < '0' || ch > '9') {
127
+ error('Trailing decimal point');
128
+ }
129
+ do {
130
+ string += ch;
131
+ next();
132
+ } while (ch && ch >= '0' && ch <= '9');
133
+ }
134
+ if (ch === 'e' || ch === 'E') {
135
+ string += ch;
136
+ next();
137
+ if (ch === '-' || ch === '+') {
138
+ string += ch;
139
+ next();
140
+ }
141
+ while (ch >= '0' && ch <= '9') {
142
+ string += ch;
143
+ next();
144
+ }
145
+ }
146
+ break;
147
+ case 16:
148
+ while (ch >= '0' && ch <= '9' || ch >= 'A' && ch <= 'F' || ch >= 'a' && ch <= 'f') {
149
+ string += ch;
150
+ next();
151
+ }
152
+ break;
153
+ }
154
+ number = +string;
155
+ if (!isFinite(number)) {
156
+ error("Bad number");
157
+ } else {
158
+ return number;
159
+ }
160
+ },
161
+
162
+ string = function () {
163
+
164
+ // Parse a string value.
165
+
166
+ var hex,
167
+ i,
168
+ string = '',
169
+ delim, // double quote or single quote
170
+ uffff;
171
+
172
+ // When parsing for string values, we must look for ' or " and \ characters.
173
+
174
+ if (ch === '"' || ch === "'") {
175
+ delim = ch;
176
+ while (next()) {
177
+ if (ch === delim) {
178
+ next();
179
+ return string;
180
+ } else if (ch === '\\') {
181
+ next();
182
+ if (ch === 'u') {
183
+ uffff = 0;
184
+ for (i = 0; i < 4; i += 1) {
185
+ hex = parseInt(next(), 16);
186
+ if (!isFinite(hex)) {
187
+ break;
188
+ }
189
+ uffff = uffff * 16 + hex;
190
+ }
191
+ string += String.fromCharCode(uffff);
192
+ } else if (typeof escapee[ch] === 'string') {
193
+ string += escapee[ch];
194
+ } else {
195
+ break;
196
+ }
197
+ } else {
198
+ string += ch;
199
+ }
200
+ }
201
+ }
202
+ error("Bad string");
203
+ },
204
+
205
+ inlineComment = function () {
206
+
207
+ // Skip an inline comment, assuming this is one. The current character should
208
+ // be the second / character in the // pair that begins this inline comment.
209
+ // To finish the inline comment, we look for a newline or the end of the text.
210
+
211
+ if (ch !== '/') {
212
+ error("Not an inline comment");
213
+ }
214
+
215
+ do {
216
+ next();
217
+ if (ch === '\n') {
218
+ next('\n');
219
+ return;
220
+ }
221
+ } while (ch);
222
+ },
223
+
224
+ blockComment = function () {
225
+
226
+ // Skip a block comment, assuming this is one. The current character should be
227
+ // the * character in the /* pair that begins this block comment.
228
+ // To finish the block comment, we look for an ending */ pair of characters,
229
+ // but we also watch for the end of text before the comment is terminated.
230
+
231
+ if (ch !== '*') {
232
+ error("Not a block comment");
233
+ }
234
+
235
+ do {
236
+ next();
237
+ while (ch === '*') {
238
+ next('*');
239
+ if (ch === '/') {
240
+ next('/');
241
+ return;
242
+ }
243
+ }
244
+ } while (ch);
245
+
246
+ error("Unterminated block comment");
247
+ },
248
+
249
+ comment = function () {
250
+
251
+ // Skip a comment, whether inline or block-level, assuming this is one.
252
+ // Comments always begin with a / character.
253
+
254
+ if (ch !== '/') {
255
+ error("Not a comment");
256
+ }
257
+
258
+ next('/');
259
+
260
+ if (ch === '/') {
261
+ inlineComment();
262
+ } else if (ch === '*') {
263
+ blockComment();
264
+ } else {
265
+ error("Unrecognized comment");
266
+ }
267
+ },
268
+
269
+ white = function () {
270
+
271
+ // Skip whitespace and comments.
272
+ // Note that we're detecting comments by only a single / character.
273
+ // This works since regular expressions are not valid JSON(5), but this will
274
+ // break if there are other valid values that begin with a / character!
275
+
276
+ while (ch) {
277
+ if (ch === '/') {
278
+ comment();
279
+ } else if (ch <= ' ') {
280
+ next();
281
+ } else {
282
+ return;
283
+ }
284
+ }
285
+ },
286
+
287
+ word = function () {
288
+
289
+ // true, false, or null.
290
+
291
+ switch (ch) {
292
+ case 't':
293
+ next('t');
294
+ next('r');
295
+ next('u');
296
+ next('e');
297
+ return true;
298
+ case 'f':
299
+ next('f');
300
+ next('a');
301
+ next('l');
302
+ next('s');
303
+ next('e');
304
+ return false;
305
+ case 'n':
306
+ next('n');
307
+ next('u');
308
+ next('l');
309
+ next('l');
310
+ return null;
311
+ }
312
+ error("Unexpected '" + ch + "'");
313
+ },
314
+
315
+ value, // Place holder for the value function.
316
+
317
+ array = function () {
318
+
319
+ // Parse an array value.
320
+
321
+ var array = [];
322
+
323
+ if (ch === '[') {
324
+ next('[');
325
+ white();
326
+ while (ch) {
327
+ if (ch === ']') {
328
+ next(']');
329
+ return array; // Potentially empty array
330
+ }
331
+ // ES5 allows omitting elements in arrays, e.g. [,] and
332
+ // [,null]. We don't allow this in JSON5.
333
+ if (ch === ',') {
334
+ error("Missing array element");
335
+ } else {
336
+ array.push(value());
337
+ }
338
+ white();
339
+ // If there's no comma after this value, this needs to
340
+ // be the end of the array.
341
+ if (ch !== ',') {
342
+ next(']');
343
+ return array;
344
+ }
345
+ next(',');
346
+ white();
347
+ }
348
+ }
349
+ error("Bad array");
350
+ },
351
+
352
+ object = function () {
353
+
354
+ // Parse an object value.
355
+
356
+ var key,
357
+ object = {};
358
+
359
+ if (ch === '{') {
360
+ next('{');
361
+ white();
362
+ while (ch) {
363
+ if (ch === '}') {
364
+ next('}');
365
+ return object; // Potentially empty object
366
+ }
367
+
368
+ // Keys can be unquoted. If they are, they need to be
369
+ // valid JS identifiers.
370
+ if (ch === '"' || ch === "'") {
371
+ key = string();
372
+ } else {
373
+ key = identifier();
374
+ }
375
+
376
+ white();
377
+ next(':');
378
+ if (Object.hasOwnProperty.call(object, key)) {
379
+ error('Duplicate key "' + key + '"');
380
+ }
381
+ object[key] = value();
382
+ white();
383
+ // If there's no comma after this pair, this needs to be
384
+ // the end of the object.
385
+ if (ch !== ',') {
386
+ next('}');
387
+ return object;
388
+ }
389
+ next(',');
390
+ white();
391
+ }
392
+ }
393
+ error("Bad object");
394
+ };
395
+
396
+ value = function () {
397
+
398
+ // Parse a JSON value. It could be an object, an array, a string, a number,
399
+ // or a word.
400
+
401
+ white();
402
+ switch (ch) {
403
+ case '{':
404
+ return object();
405
+ case '[':
406
+ return array();
407
+ case '"':
408
+ case "'":
409
+ return string();
410
+ case '-':
411
+ case '.':
412
+ return number();
413
+ default:
414
+ return ch >= '0' && ch <= '9' ? number() : word();
415
+ }
416
+ };
417
+
418
+ // Return the json_parse function. It will have access to all of the above
419
+ // functions and variables.
420
+
421
+ return function (source, reviver) {
422
+ var result;
423
+
424
+ text = source;
425
+ at = 0;
426
+ ch = ' ';
427
+ result = value();
428
+ white();
429
+ if (ch) {
430
+ error("Syntax error");
431
+ }
432
+
433
+ // If there is a reviver function, we recursively walk the new structure,
434
+ // passing each name/value pair to the reviver function for possible
435
+ // transformation, starting with a temporary root object that holds the result
436
+ // in an empty key. If there is not a reviver function, we simply return the
437
+ // result.
438
+
439
+ return typeof reviver === 'function' ? (function walk(holder, key) {
440
+ var k, v, value = holder[key];
441
+ if (value && typeof value === 'object') {
442
+ for (k in value) {
443
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
444
+ v = walk(value, k);
445
+ if (v !== undefined) {
446
+ value[k] = v;
447
+ } else {
448
+ delete value[k];
449
+ }
450
+ }
451
+ }
452
+ }
453
+ return reviver.call(holder, key, value);
454
+ }({'': result}, '')) : result;
455
+ };
456
+ }());
457
+
458
+ JSON5.stringify = function (obj, replacer, space) {
459
+ // Since regular JSON is a strict subset of JSON5, we'll always output
460
+ // regular JSON to foster better interoperability. TODO Should we not?
461
+ return JSON.stringify.apply(JSON, arguments);
462
+ };