classiccms 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. data/lib/classiccms/application.rb +2 -3
  2. data/lib/classiccms/cli.rb +6 -0
  3. data/lib/classiccms/scaffold/Gemfile +4 -0
  4. data/lib/classiccms/{mongoid.yml → scaffold/config/mongoid.yml} +3 -4
  5. data/lib/classiccms/scaffold/spec/models/article_spec.rb +8 -0
  6. data/lib/classiccms/scaffold/spec/spec_helper.rb +24 -0
  7. data/lib/classiccms/version.rb +1 -1
  8. data/spec/cli_spec.rb +8 -0
  9. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/build/v8/libv8.a +0 -0
  10. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/build/v8/libv8preparser.a +0 -0
  11. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8-debug.h +395 -0
  12. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8-preparser.h +117 -0
  13. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8-profiler.h +505 -0
  14. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8-testing.h +104 -0
  15. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8.h +4124 -0
  16. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/v8/include/v8stdint.h +53 -0
  17. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8/version.rb +6 -0
  18. data/vendor/bundle/gems/libv8-3.3.10.4-x86_64-darwin-11/lib/libv8.rb +15 -0
  19. data/vendor/bundle/gems/sass-3.1.19/.yardopts +11 -0
  20. data/vendor/bundle/gems/sass-3.1.19/CONTRIBUTING +3 -0
  21. data/vendor/bundle/gems/sass-3.1.19/MIT-LICENSE +20 -0
  22. data/vendor/bundle/gems/sass-3.1.19/README.md +200 -0
  23. data/vendor/bundle/gems/sass-3.1.19/REVISION +1 -0
  24. data/vendor/bundle/gems/sass-3.1.19/Rakefile +339 -0
  25. data/vendor/bundle/gems/sass-3.1.19/VERSION +1 -0
  26. data/vendor/bundle/gems/sass-3.1.19/VERSION_NAME +1 -0
  27. data/vendor/bundle/gems/sass-3.1.19/bin/sass +8 -0
  28. data/vendor/bundle/gems/sass-3.1.19/bin/sass-convert +7 -0
  29. data/vendor/bundle/gems/sass-3.1.19/bin/scss +8 -0
  30. data/vendor/bundle/gems/sass-3.1.19/extra/update_watch.rb +13 -0
  31. data/vendor/bundle/gems/sass-3.1.19/init.rb +18 -0
  32. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/base.rb +86 -0
  33. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/chain.rb +33 -0
  34. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/filesystem.rb +61 -0
  35. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/memory.rb +47 -0
  36. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores/null.rb +25 -0
  37. data/vendor/bundle/gems/sass-3.1.19/lib/sass/cache_stores.rb +15 -0
  38. data/vendor/bundle/gems/sass-3.1.19/lib/sass/callbacks.rb +66 -0
  39. data/vendor/bundle/gems/sass-3.1.19/lib/sass/css.rb +390 -0
  40. data/vendor/bundle/gems/sass-3.1.19/lib/sass/engine.rb +880 -0
  41. data/vendor/bundle/gems/sass-3.1.19/lib/sass/environment.rb +180 -0
  42. data/vendor/bundle/gems/sass-3.1.19/lib/sass/error.rb +201 -0
  43. data/vendor/bundle/gems/sass-3.1.19/lib/sass/exec.rb +682 -0
  44. data/vendor/bundle/gems/sass-3.1.19/lib/sass/importers/base.rb +139 -0
  45. data/vendor/bundle/gems/sass-3.1.19/lib/sass/importers/filesystem.rb +149 -0
  46. data/vendor/bundle/gems/sass-3.1.19/lib/sass/importers.rb +22 -0
  47. data/vendor/bundle/gems/sass-3.1.19/lib/sass/less.rb +382 -0
  48. data/vendor/bundle/gems/sass-3.1.19/lib/sass/logger/base.rb +32 -0
  49. data/vendor/bundle/gems/sass-3.1.19/lib/sass/logger/log_level.rb +49 -0
  50. data/vendor/bundle/gems/sass-3.1.19/lib/sass/logger.rb +15 -0
  51. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/compiler.rb +384 -0
  52. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/configuration.rb +123 -0
  53. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/generic.rb +15 -0
  54. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/merb.rb +48 -0
  55. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/rack.rb +60 -0
  56. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/rails.rb +47 -0
  57. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin/staleness_checker.rb +183 -0
  58. data/vendor/bundle/gems/sass-3.1.19/lib/sass/plugin.rb +132 -0
  59. data/vendor/bundle/gems/sass-3.1.19/lib/sass/railtie.rb +9 -0
  60. data/vendor/bundle/gems/sass-3.1.19/lib/sass/repl.rb +57 -0
  61. data/vendor/bundle/gems/sass-3.1.19/lib/sass/root.rb +7 -0
  62. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/bool.rb +18 -0
  63. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/color.rb +475 -0
  64. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/css_lexer.rb +29 -0
  65. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/css_parser.rb +31 -0
  66. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/funcall.rb +175 -0
  67. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/functions.rb +1381 -0
  68. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/interpolation.rb +79 -0
  69. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/lexer.rb +337 -0
  70. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/list.rb +84 -0
  71. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/literal.rb +230 -0
  72. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/node.rb +99 -0
  73. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/number.rb +452 -0
  74. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/operation.rb +107 -0
  75. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/parser.rb +474 -0
  76. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/string.rb +51 -0
  77. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/string_interpolation.rb +103 -0
  78. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/unary_operation.rb +64 -0
  79. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script/variable.rb +58 -0
  80. data/vendor/bundle/gems/sass-3.1.19/lib/sass/script.rb +39 -0
  81. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/css_parser.rb +46 -0
  82. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/parser.rb +1055 -0
  83. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/rx.rb +137 -0
  84. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/sass_parser.rb +11 -0
  85. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/script_lexer.rb +15 -0
  86. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/script_parser.rb +25 -0
  87. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss/static_parser.rb +40 -0
  88. data/vendor/bundle/gems/sass-3.1.19/lib/sass/scss.rb +17 -0
  89. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector/abstract_sequence.rb +71 -0
  90. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector/comma_sequence.rb +86 -0
  91. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector/sequence.rb +296 -0
  92. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector/simple.rb +119 -0
  93. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector/simple_sequence.rb +154 -0
  94. data/vendor/bundle/gems/sass-3.1.19/lib/sass/selector.rb +373 -0
  95. data/vendor/bundle/gems/sass-3.1.19/lib/sass/shared.rb +76 -0
  96. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/charset_node.rb +22 -0
  97. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/comment_node.rb +90 -0
  98. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/debug_node.rb +18 -0
  99. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/directive_node.rb +28 -0
  100. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/each_node.rb +24 -0
  101. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/extend_node.rb +29 -0
  102. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/for_node.rb +36 -0
  103. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/function_node.rb +27 -0
  104. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/if_node.rb +52 -0
  105. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/import_node.rb +68 -0
  106. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/media_node.rb +32 -0
  107. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/mixin_def_node.rb +27 -0
  108. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/mixin_node.rb +32 -0
  109. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/node.rb +188 -0
  110. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/prop_node.rb +148 -0
  111. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/return_node.rb +18 -0
  112. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/root_node.rb +28 -0
  113. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/rule_node.rb +127 -0
  114. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/variable_node.rb +30 -0
  115. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/base.rb +75 -0
  116. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/check_nesting.rb +127 -0
  117. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/convert.rb +262 -0
  118. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/cssize.rb +206 -0
  119. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/deep_copy.rb +87 -0
  120. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/extend.rb +42 -0
  121. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/perform.rb +357 -0
  122. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/set_options.rb +97 -0
  123. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/visitors/to_css.rb +219 -0
  124. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/warn_node.rb +18 -0
  125. data/vendor/bundle/gems/sass-3.1.19/lib/sass/tree/while_node.rb +18 -0
  126. data/vendor/bundle/gems/sass-3.1.19/lib/sass/util/multibyte_string_scanner.rb +134 -0
  127. data/vendor/bundle/gems/sass-3.1.19/lib/sass/util/subset_map.rb +101 -0
  128. data/vendor/bundle/gems/sass-3.1.19/lib/sass/util.rb +800 -0
  129. data/vendor/bundle/gems/sass-3.1.19/lib/sass/version.rb +112 -0
  130. data/vendor/bundle/gems/sass-3.1.19/lib/sass.rb +73 -0
  131. data/vendor/bundle/gems/sass-3.1.19/rails/init.rb +1 -0
  132. data/vendor/bundle/gems/sass-3.1.19/test/Gemfile +4 -0
  133. data/vendor/bundle/gems/sass-3.1.19/test/sass/cache_test.rb +89 -0
  134. data/vendor/bundle/gems/sass-3.1.19/test/sass/callbacks_test.rb +61 -0
  135. data/vendor/bundle/gems/sass-3.1.19/test/sass/conversion_test.rb +1245 -0
  136. data/vendor/bundle/gems/sass-3.1.19/test/sass/css2sass_test.rb +397 -0
  137. data/vendor/bundle/gems/sass-3.1.19/test/sass/data/hsl-rgb.txt +319 -0
  138. data/vendor/bundle/gems/sass-3.1.19/test/sass/engine_test.rb +2730 -0
  139. data/vendor/bundle/gems/sass-3.1.19/test/sass/extend_test.rb +1663 -0
  140. data/vendor/bundle/gems/sass-3.1.19/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
  141. data/vendor/bundle/gems/sass-3.1.19/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
  142. data/vendor/bundle/gems/sass-3.1.19/test/sass/functions_test.rb +1047 -0
  143. data/vendor/bundle/gems/sass-3.1.19/test/sass/importer_test.rb +192 -0
  144. data/vendor/bundle/gems/sass-3.1.19/test/sass/less_conversion_test.rb +653 -0
  145. data/vendor/bundle/gems/sass-3.1.19/test/sass/logger_test.rb +58 -0
  146. data/vendor/bundle/gems/sass-3.1.19/test/sass/mock_importer.rb +49 -0
  147. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_results/more1.css +9 -0
  148. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_results/more1_with_line_comments.css +26 -0
  149. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_results/more_import.css +29 -0
  150. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_templates/_more_partial.sass +2 -0
  151. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_templates/more1.sass +23 -0
  152. data/vendor/bundle/gems/sass-3.1.19/test/sass/more_templates/more_import.sass +11 -0
  153. data/vendor/bundle/gems/sass-3.1.19/test/sass/plugin_test.rb +496 -0
  154. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/alt.css +4 -0
  155. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/basic.css +9 -0
  156. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/compact.css +5 -0
  157. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/complex.css +86 -0
  158. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/compressed.css +1 -0
  159. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/expanded.css +19 -0
  160. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/if.css +3 -0
  161. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/import.css +31 -0
  162. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/import_charset.css +5 -0
  163. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/import_charset_1_8.css +5 -0
  164. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/import_charset_ibm866.css +5 -0
  165. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/line_numbers.css +49 -0
  166. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/mixins.css +95 -0
  167. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/multiline.css +24 -0
  168. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/nested.css +22 -0
  169. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/options.css +1 -0
  170. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/parent_ref.css +13 -0
  171. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/script.css +16 -0
  172. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/scss_import.css +31 -0
  173. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/scss_importee.css +2 -0
  174. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  175. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/subdir/subdir.css +3 -0
  176. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/units.css +11 -0
  177. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/warn.css +0 -0
  178. data/vendor/bundle/gems/sass-3.1.19/test/sass/results/warn_imported.css +0 -0
  179. data/vendor/bundle/gems/sass-3.1.19/test/sass/script_conversion_test.rb +285 -0
  180. data/vendor/bundle/gems/sass-3.1.19/test/sass/script_test.rb +519 -0
  181. data/vendor/bundle/gems/sass-3.1.19/test/sass/scss/css_test.rb +975 -0
  182. data/vendor/bundle/gems/sass-3.1.19/test/sass/scss/rx_test.rb +156 -0
  183. data/vendor/bundle/gems/sass-3.1.19/test/sass/scss/scss_test.rb +1308 -0
  184. data/vendor/bundle/gems/sass-3.1.19/test/sass/scss/test_helper.rb +37 -0
  185. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/_double_import_loop2.sass +1 -0
  186. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/_imported_charset_ibm866.sass +4 -0
  187. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/_imported_charset_utf8.sass +4 -0
  188. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/_partial.sass +2 -0
  189. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/alt.sass +16 -0
  190. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/basic.sass +23 -0
  191. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/bork1.sass +2 -0
  192. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/bork2.sass +2 -0
  193. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/bork3.sass +2 -0
  194. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/bork4.sass +2 -0
  195. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/bork5.sass +3 -0
  196. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/compact.sass +17 -0
  197. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/complex.sass +305 -0
  198. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/compressed.sass +15 -0
  199. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/double_import_loop1.sass +1 -0
  200. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/expanded.sass +17 -0
  201. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/if.sass +11 -0
  202. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/import.sass +12 -0
  203. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/import_charset.sass +9 -0
  204. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/import_charset_1_8.sass +6 -0
  205. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/import_charset_ibm866.sass +11 -0
  206. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/importee.less +2 -0
  207. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/importee.sass +19 -0
  208. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/line_numbers.sass +13 -0
  209. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/mixin_bork.sass +5 -0
  210. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/mixins.sass +76 -0
  211. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/multiline.sass +20 -0
  212. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested.sass +25 -0
  213. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_bork1.sass +2 -0
  214. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_bork2.sass +2 -0
  215. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_bork3.sass +2 -0
  216. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_bork4.sass +2 -0
  217. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_bork5.sass +2 -0
  218. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_import.sass +2 -0
  219. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/nested_mixin_bork.sass +6 -0
  220. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/options.sass +2 -0
  221. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/parent_ref.sass +25 -0
  222. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/script.sass +101 -0
  223. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/scss_import.scss +11 -0
  224. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/scss_importee.scss +1 -0
  225. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/single_import_loop.sass +1 -0
  226. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  227. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  228. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/subdir/subdir.sass +6 -0
  229. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/units.sass +11 -0
  230. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/warn.sass +3 -0
  231. data/vendor/bundle/gems/sass-3.1.19/test/sass/templates/warn_imported.sass +4 -0
  232. data/vendor/bundle/gems/sass-3.1.19/test/sass/test_helper.rb +8 -0
  233. data/vendor/bundle/gems/sass-3.1.19/test/sass/util/multibyte_string_scanner_test.rb +147 -0
  234. data/vendor/bundle/gems/sass-3.1.19/test/sass/util/subset_map_test.rb +91 -0
  235. data/vendor/bundle/gems/sass-3.1.19/test/sass/util_test.rb +282 -0
  236. data/vendor/bundle/gems/sass-3.1.19/test/test_helper.rb +70 -0
  237. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/CHANGELOG.md +90 -0
  238. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/Gemfile +35 -0
  239. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/Guardfile +8 -0
  240. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/LICENSE +20 -0
  241. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/README.md +312 -0
  242. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/Rakefile +47 -0
  243. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/Vagrantfile +96 -0
  244. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/adapter.rb +167 -0
  245. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/adapters/darwin.rb +84 -0
  246. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/adapters/linux.rb +110 -0
  247. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/adapters/polling.rb +66 -0
  248. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/adapters/windows.rb +81 -0
  249. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/directory_record.rb +317 -0
  250. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/listener.rb +203 -0
  251. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/multi_listener.rb +121 -0
  252. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/turnstile.rb +28 -0
  253. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen/version.rb +3 -0
  254. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/lib/listen.rb +38 -0
  255. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/listen.gemspec +26 -0
  256. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/adapter_spec.rb +142 -0
  257. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/adapters/darwin_spec.rb +31 -0
  258. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/adapters/linux_spec.rb +41 -0
  259. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/adapters/polling_spec.rb +68 -0
  260. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/adapters/windows_spec.rb +24 -0
  261. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/directory_record_spec.rb +1034 -0
  262. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/listener_spec.rb +155 -0
  263. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/multi_listener_spec.rb +156 -0
  264. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen/turnstile_spec.rb +56 -0
  265. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/listen_spec.rb +73 -0
  266. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/spec_helper.rb +16 -0
  267. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/support/adapter_helper.rb +716 -0
  268. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/support/directory_record_helper.rb +55 -0
  269. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/support/fixtures_helper.rb +29 -0
  270. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/support/listeners_helper.rb +144 -0
  271. data/vendor/bundle/gems/sass-3.1.19/vendor/listen/spec/support/platform_helper.rb +11 -0
  272. data/vendor/bundle/gems/therubyracer-0.10.1/.gitignore +13 -0
  273. data/vendor/bundle/gems/therubyracer-0.10.1/.gitmodules +3 -0
  274. data/vendor/bundle/gems/therubyracer-0.10.1/.travis.yml +9 -0
  275. data/vendor/bundle/gems/therubyracer-0.10.1/.yardopts +1 -0
  276. data/vendor/bundle/gems/therubyracer-0.10.1/Changelog.md +196 -0
  277. data/vendor/bundle/gems/therubyracer-0.10.1/Gemfile +1 -0
  278. data/vendor/bundle/gems/therubyracer-0.10.1/README.md +167 -0
  279. data/vendor/bundle/gems/therubyracer-0.10.1/Rakefile +23 -0
  280. data/vendor/bundle/gems/therubyracer-0.10.1/bin/therubyracer +11 -0
  281. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/Makefile +213 -0
  282. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/extconf.rb +26 -0
  283. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/gem_make.out +156 -0
  284. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/rr.cpp +189 -0
  285. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/rr.h +41 -0
  286. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8.cpp +48 -0
  287. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_array.cpp +48 -0
  288. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_array.h +8 -0
  289. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_callbacks.cpp +81 -0
  290. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_callbacks.h +8 -0
  291. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_context.cpp +92 -0
  292. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_context.h +6 -0
  293. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_date.cpp +34 -0
  294. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_date.h +6 -0
  295. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_debug.cpp +17 -0
  296. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_debug.h +6 -0
  297. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_exception.cpp +133 -0
  298. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_exception.h +11 -0
  299. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_external.cpp +70 -0
  300. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_external.h +8 -0
  301. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_function.cpp +69 -0
  302. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_function.h +11 -0
  303. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_handle.cpp +186 -0
  304. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_handle.h +48 -0
  305. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_locker.cpp +139 -0
  306. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_locker.h +6 -0
  307. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_message.cpp +67 -0
  308. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_message.h +10 -0
  309. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_object.cpp +122 -0
  310. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_object.h +10 -0
  311. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_script.cpp +36 -0
  312. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_script.h +8 -0
  313. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_string.cpp +52 -0
  314. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_string.h +9 -0
  315. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_template.cpp +344 -0
  316. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_template.h +8 -0
  317. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_try_catch.cpp +70 -0
  318. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_try_catch.h +5 -0
  319. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_v8.cpp +35 -0
  320. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_v8.h +6 -0
  321. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_value.cpp +175 -0
  322. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_value.h +10 -0
  323. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_weakref.cpp +61 -0
  324. data/vendor/bundle/gems/therubyracer-0.10.1/ext/v8/v8_weakref.h +29 -0
  325. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/access.rb +87 -0
  326. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/array.rb +17 -0
  327. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/c/locker.rb +18 -0
  328. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/cli.rb +133 -0
  329. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/context.rb +111 -0
  330. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/error.rb +130 -0
  331. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/function.rb +44 -0
  332. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/object.rb +69 -0
  333. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/caller.rb +37 -0
  334. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/constructor.rb +98 -0
  335. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/function.rb +63 -0
  336. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/interceptors.rb +152 -0
  337. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/proxies.rb +151 -0
  338. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal/templates.rb +73 -0
  339. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/portal.rb +86 -0
  340. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/stack.rb +66 -0
  341. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/tap.rb +9 -0
  342. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8/version.rb +3 -0
  343. data/vendor/bundle/gems/therubyracer-0.10.1/lib/v8.rb +23 -0
  344. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/array_spec.rb +15 -0
  345. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/cxt_spec.rb +57 -0
  346. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/ext_spec_helper.rb +27 -0
  347. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/func_spec.rb +64 -0
  348. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/object_spec.rb +10 -0
  349. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/string_spec.rb +11 -0
  350. data/vendor/bundle/gems/therubyracer-0.10.1/spec/ext/try_catch_spec.rb +60 -0
  351. data/vendor/bundle/gems/therubyracer-0.10.1/spec/redjs/.gitignore +1 -0
  352. data/vendor/bundle/gems/therubyracer-0.10.1/spec/redjs/README.txt +8 -0
  353. data/vendor/bundle/gems/therubyracer-0.10.1/spec/redjs/jsapi_spec.rb +922 -0
  354. data/vendor/bundle/gems/therubyracer-0.10.1/spec/redjs/loadme.js +1 -0
  355. data/vendor/bundle/gems/therubyracer-0.10.1/spec/redjs_helper.rb +3 -0
  356. data/vendor/bundle/gems/therubyracer-0.10.1/spec/spec_helper.rb +9 -0
  357. data/vendor/bundle/gems/therubyracer-0.10.1/spec/v8/error_spec.rb +131 -0
  358. data/vendor/bundle/gems/therubyracer-0.10.1/spec/v8/portal/proxies_spec.rb +106 -0
  359. data/vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb +41 -0
  360. data/vendor/bundle/gems/therubyracer-0.10.1/specmem/object_memspec.rb +14 -0
  361. data/vendor/bundle/gems/therubyracer-0.10.1/specmem/proxies_memspec.rb +49 -0
  362. data/vendor/bundle/gems/therubyracer-0.10.1/specmem/spec_helper.rb +24 -0
  363. data/vendor/bundle/gems/therubyracer-0.10.1/specthread/spec_helper.rb +2 -0
  364. data/vendor/bundle/gems/therubyracer-0.10.1/specthread/threading_spec.rb +13 -0
  365. data/vendor/bundle/gems/therubyracer-0.10.1/thefrontside.png +0 -0
  366. data/vendor/bundle/gems/therubyracer-0.10.1/therubyracer.gemspec +29 -0
  367. data/vendor/bundle/specifications/libv8-3.3.10.4-x86_64-darwin-11.gemspec +33 -0
  368. data/vendor/bundle/specifications/sass-3.1.19.gemspec +35 -0
  369. metadata +365 -3
@@ -0,0 +1,61 @@
1
+ #include "v8.h"
2
+ #include "v8_weakref.h"
3
+
4
+ using namespace v8;
5
+
6
+ v8_weakref::v8_weakref(VALUE object) {
7
+ this->v8_active = true;
8
+ this->rb_active = true;
9
+ this->external = Persistent<External>::New(External::New((void *)this));
10
+ this->external.MakeWeak(this, v8_weakref_dispose);
11
+ this->set(object);
12
+ }
13
+
14
+ void v8_weakref::set(VALUE value) {
15
+ this->object_id = rb_obj_id(value);
16
+ this->rb_active = true;
17
+ VALUE data = Data_Wrap_Struct(rb_cObject, 0, 0, this);
18
+ rr_define_finalizer(value,(void*)v8_weakref_finalize, data);
19
+ }
20
+
21
+ VALUE v8_weakref::get() {
22
+ if (this->object_id) {
23
+ return rb_rescue((VALUE (*)(...))v8_weakref_id2ref, this->object_id, (VALUE (*)(...))v8_weakref_nil, Qnil);
24
+ } else {
25
+ return Qnil;
26
+ }
27
+ }
28
+
29
+ VALUE v8_weakref_finalize(VALUE object_id, VALUE data) {
30
+ v8_weakref* weakref = 0;
31
+ Data_Get_Struct(data, struct v8_weakref, weakref);
32
+ weakref->object_id = Qnil;
33
+ weakref->rb_active = false;
34
+ if (!weakref->v8_active) {
35
+ delete weakref;
36
+ }
37
+ return Qnil;
38
+ }
39
+
40
+ void v8_weakref_dispose(Persistent<Value> value, void* data) {
41
+ value.Dispose();
42
+ value.Clear();
43
+ v8_weakref* weakref = (v8_weakref*)data;
44
+ weakref->v8_active = false;
45
+ if (!weakref->rb_active) {
46
+ delete weakref;
47
+ }
48
+ }
49
+
50
+ VALUE v8_weakref_nil(VALUE nil, VALUE exception) {
51
+ return nil;
52
+ }
53
+
54
+ VALUE v8_weakref_objectspace() {
55
+ return rb_const_get(rb_cObject, rb_intern("ObjectSpace"));
56
+ }
57
+
58
+ VALUE v8_weakref_id2ref(VALUE id) {
59
+ return rb_funcall(v8_weakref_objectspace(), rb_intern("_id2ref"), 1, id);
60
+ }
61
+
@@ -0,0 +1,29 @@
1
+ #ifndef _RR_V8_WEAKREF_
2
+ #define _RR_V8_WEAKREF_
3
+
4
+ #include <v8.h>
5
+ #include "ruby.h"
6
+ #include "rr.h"
7
+
8
+ struct v8_weakref {
9
+ v8_weakref(VALUE object);
10
+ VALUE get();
11
+ void set(VALUE object);
12
+ void retain();
13
+ void release();
14
+
15
+ VALUE object_id;
16
+ bool v8_active;
17
+ bool rb_active;
18
+ v8::Persistent<v8::External> external;
19
+ };
20
+
21
+ void v8_weakref_dispose(v8::Persistent<v8::Value> value, void* weakref);
22
+ VALUE v8_weakref_finalize(VALUE self, VALUE object_id);
23
+ VALUE v8_weakref_objectspace();
24
+ VALUE v8_weakref_nil(VALUE nil, VALUE exception);
25
+ VALUE v8_weakref_id2ref(VALUE id);
26
+
27
+ // extern "C" VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE);
28
+
29
+ #endif
@@ -0,0 +1,87 @@
1
+ require 'set'
2
+ module V8
3
+ class Access
4
+ def get(obj, name, &dontintercept)
5
+ methods = accessible_methods(obj)
6
+ if methods.include?(name)
7
+ method = obj.method(name)
8
+ method.arity == 0 ? method.call : method.unbind
9
+ elsif obj.respond_to?(:[])
10
+ obj.send(:[], name, &dontintercept)
11
+ else
12
+ yield
13
+ end
14
+ end
15
+
16
+ def iget(obj, index, &dontintercept)
17
+ if obj.respond_to?(:[])
18
+ obj.send(:[], index, &dontintercept)
19
+ else
20
+ yield
21
+ end
22
+ end
23
+
24
+ def set(obj, name, value, &dontintercept)
25
+ setter = name + "="
26
+ methods = accessible_methods(obj, true)
27
+ if methods.include?(setter)
28
+ obj.send(setter, value)
29
+ elsif obj.respond_to?(:[]=)
30
+ obj.send(:[]=, name, value, &dontintercept)
31
+ else
32
+ yield
33
+ end
34
+ end
35
+
36
+ def iset(obj, index, value, &dontintercept)
37
+ if obj.respond_to?(:[]=)
38
+ obj.send(:[]=, index, value, &dontintercept)
39
+ else
40
+ yield
41
+ end
42
+ end
43
+
44
+ def query(obj, name, attributes)
45
+ if obj.respond_to?(name)
46
+ attributes.dont_delete
47
+ unless obj.respond_to?(name + "=")
48
+ attributes.read_only
49
+ end
50
+ else
51
+ yield
52
+ end
53
+ end
54
+
55
+ def iquery(obj, index, attributes)
56
+ if obj.respond_to?(:[])
57
+ attributes.dont_delete
58
+ unless obj.respond_to?(:[]=)
59
+ attributes.read_only
60
+ end
61
+ else
62
+ yield
63
+ end
64
+ end
65
+
66
+ def names(obj)
67
+ accessible_methods(obj)
68
+ end
69
+
70
+ def indices(obj)
71
+ obj.respond_to?(:length) ? (0..obj.length).to_a : yield
72
+ end
73
+
74
+ private
75
+
76
+ def accessible_methods(obj, special_methods = false)
77
+ obj.public_methods(false).map {|m| m.to_s}.to_set.tap do |methods|
78
+ ancestors = obj.class.ancestors.dup
79
+ while ancestor = ancestors.shift
80
+ break if ancestor == ::Object
81
+ methods.merge(ancestor.public_instance_methods(false).map {|m| m.to_s})
82
+ end
83
+ methods.reject! {|m| m == "[]" || m == "[]=" || m =~ /=$/} unless special_methods
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,17 @@
1
+
2
+ module V8
3
+ class Array < V8::Object
4
+
5
+ def each
6
+ @portal.open do |to|
7
+ for i in 0..(@native.Length() - 1)
8
+ yield to.rb(@native.Get(i))
9
+ end
10
+ end
11
+ end
12
+
13
+ def length
14
+ @native.Length()
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module V8
2
+ module C
3
+ # Shim to support the old style locking syntax. We don't currently
4
+ # deprecate this because it might make a comeback at some point.
5
+ #
6
+ # to synchronize access to V8, and to associate V8 with this thread:
7
+ #
8
+ # Locker() do
9
+ # #... interact with v8
10
+ # end
11
+ def self.Locker
12
+ lock = Locker.new
13
+ yield
14
+ ensure
15
+ lock.delete
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,133 @@
1
+ require 'optparse'
2
+ require 'ostruct'
3
+
4
+ module V8
5
+ module CLI
6
+ def self.run(exename = 'v8', args = [])
7
+ options = OpenStruct.new
8
+ options.libs = []
9
+ options.libdirs = []
10
+ parser = OptionParser.new
11
+ parser.banner = "Usage: #{exename} [options]"
12
+ parser.on("-r", "--require FILE", "load and execute FILE as JavaScript source") {|r| options.libs << r}
13
+ parser.on("-i", "--interactive", "interactive mode") {options.interactive = true}
14
+ parser.on("-e", "--execute JAVASCRIPT", String, "evaluate JAVASCRIPT and exit") {|src| options.execute = src}
15
+ parser.on("--selftest", "check that therubyracer is functioning properly") {options.selftest = true}
16
+ parser.on_tail("-v", "--version", "Show version and exit") {options.version_info = true}
17
+ parser.on_tail("-h", "--help", "Show this message") do
18
+ puts parser
19
+ exit
20
+ end
21
+ begin
22
+ parser.parse!(args.dup)
23
+ rescue OptionParser::InvalidOption => e
24
+ puts "#{exename}: #{e.message}"
25
+ exit(1)
26
+ end
27
+ if options.version_info
28
+ require 'libv8'
29
+ puts "The Ruby Racer #{V8::VERSION}"
30
+ puts "V8 Version #{Libv8::V8_VERSION}"
31
+ exit
32
+ elsif options.selftest
33
+ self.test
34
+ end
35
+ Context.new(:with => Shell.new) do |cxt|
36
+ for libfile in options.libs do
37
+ load(cxt,libfile)
38
+ end
39
+ if options.interactive
40
+ repl(cxt, exename)
41
+ elsif options.execute
42
+ cxt.eval(options.execute, '<execute>')
43
+ else
44
+ begin
45
+ cxt.eval($stdin, '<stdin>')
46
+ rescue Interrupt => e
47
+ puts; exit
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ def self.load(cxt, libfile)
54
+ begin
55
+ cxt.load(libfile)
56
+ rescue V8::JSError => e
57
+ puts e.message
58
+ puts e.backtrace(:javascript)
59
+ rescue StandardError => e
60
+ puts e
61
+ end
62
+ end
63
+
64
+ def self.test
65
+ begin
66
+ require 'rspec'
67
+ specs = File.expand_path('../../../spec', __FILE__)
68
+ $:.unshift specs
69
+ ARGV.clear
70
+ ARGV << specs
71
+ ::RSpec::Core::Runner.autorun
72
+ exit(0)
73
+ rescue LoadError => e
74
+ puts "selftest requires rspec to be installed (gem install rspec)"
75
+ exit(1)
76
+ end
77
+
78
+ end
79
+
80
+ def self.repl(cxt, exename)
81
+ require 'readline'
82
+ puts "help() for help. quit() to quit."
83
+ puts "The Ruby Racer #{V8::VERSION}"
84
+ puts "Vroom Vroom!"
85
+ trap("SIGINT") do
86
+ puts "^C"
87
+ end
88
+ loop do
89
+ line = Readline.readline("#{exename}> ", true)
90
+ begin
91
+ result = cxt.eval(line, '<shell>')
92
+ puts(result) unless result.nil?
93
+ rescue V8::JSError => e
94
+ puts e.message
95
+ puts e.backtrace(:javascript)
96
+ rescue StandardError => e
97
+ puts e
98
+ puts e.backtrace.join("\n")
99
+ end
100
+ end
101
+ end
102
+
103
+ class Shell
104
+ def to_s
105
+ "[object Shell]"
106
+ end
107
+
108
+ def print(string)
109
+ puts string
110
+ end
111
+
112
+ def exit(status = 0)
113
+ Kernel.exit(status)
114
+ end
115
+
116
+ alias_method :quit, :exit
117
+
118
+ def help(*args)
119
+ <<-HELP
120
+ print(msg)
121
+ print msg to STDOUT
122
+
123
+ exit(status = 0)
124
+ exit the shell
125
+ also: quit()
126
+
127
+ evalrb(source)
128
+ evaluate some ruby source
129
+ HELP
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,111 @@
1
+ require 'stringio'
2
+
3
+ module V8
4
+ class Context
5
+ attr_reader :native, :scope, :access
6
+
7
+ def initialize(opts = {})
8
+ @access = Access.new
9
+ @to = Portal.new(self, @access)
10
+ @to.lock do
11
+ with = opts[:with]
12
+ constructor = nil
13
+ template = if with
14
+ constructor = @to.templates.to_constructor(with.class)
15
+ constructor.disable()
16
+ constructor.template.InstanceTemplate()
17
+ else
18
+ C::ObjectTemplate::New()
19
+ end
20
+ @native = opts[:with] ? C::Context::New(template) : C::Context::New()
21
+ @native.enter do
22
+ @global = @native.Global()
23
+ @to.proxies.register_javascript_proxy @global, :for => with if with
24
+ constructor.enable() if constructor
25
+ @scope = @to.rb(@global)
26
+ @global.SetHiddenValue(C::String::NewSymbol("TheRubyRacer::RubyContext"), C::External::New(self))
27
+ end
28
+ yield(self) if block_given?
29
+ end
30
+ end
31
+
32
+ def eval(javascript, filename = "<eval>", line = 1)
33
+ if IO === javascript || StringIO === javascript
34
+ javascript = javascript.read()
35
+ end
36
+ err = nil
37
+ value = nil
38
+ @to.lock do
39
+ C::TryCatch.try do |try|
40
+ @native.enter do
41
+ script = C::Script::Compile(@to.v8(javascript.to_s), @to.v8(filename.to_s))
42
+ if try.HasCaught()
43
+ err = JSError.new(try, @to)
44
+ else
45
+ result = script.Run()
46
+ if try.HasCaught()
47
+ err = JSError.new(try, @to)
48
+ else
49
+ value = @to.rb(result)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ raise err if err
56
+ return value
57
+ end
58
+
59
+ def load(filename)
60
+ File.open(filename) do |file|
61
+ self.eval file, filename, 1
62
+ end
63
+ end
64
+
65
+ def [](key)
66
+ @to.open do
67
+ @to.rb @global.Get(@to.v8(key))
68
+ end
69
+ end
70
+
71
+ def []=(key, value)
72
+ @to.open do
73
+ @global.Set(@to.v8(key), @to.v8(value))
74
+ end
75
+ return value
76
+ end
77
+
78
+ def self.stack(limit = 99)
79
+ if native = C::Context::GetEntered()
80
+ global = native.Global()
81
+ cxt = global.GetHiddenValue(C::String::NewSymbol("TheRubyRacer::RubyContext")).Value()
82
+ cxt.instance_eval {@to.rb(C::StackTrace::CurrentStackTrace(limit))}
83
+ else
84
+ []
85
+ end
86
+ end
87
+
88
+ def self.passes_this_argument?
89
+ true
90
+ end
91
+ end
92
+
93
+ module C
94
+ class Context
95
+ def enter
96
+ if block_given?
97
+ if IsEntered()
98
+ yield(self)
99
+ else
100
+ Enter()
101
+ begin
102
+ yield(self)
103
+ ensure
104
+ Exit()
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,130 @@
1
+
2
+ module V8
3
+ class JSError < StandardError
4
+ attr_reader :value, :boundaries
5
+
6
+ def initialize(try, to)
7
+ @to = to
8
+ super(initialize_unsafe(try))
9
+ rescue Exception => e
10
+ @boundaries = [Boundary.new(:rbframes => e.backtrace)]
11
+ @value = e
12
+ super(<<-EOMSG)
13
+ You have uncovered what is probably a BUG in therubyracer exception code. An error report would be very helpful.
14
+ JSError#initialize failed!: #{e.message}"
15
+ EOMSG
16
+ end
17
+
18
+ def initialize_unsafe(try)
19
+ message = nil
20
+ ex = @to.rb(try.Exception())
21
+ @boundaries = [Boundary.new(:rbframes => caller(3), :jsframes => parse_js_frames(try))]
22
+ if V8::Object === ex
23
+ if msg = ex['message']
24
+ message = msg
25
+ else
26
+ message = ex.to_s
27
+ end
28
+ if cause = ex.instance_variable_get(:@native).GetHiddenValue("TheRubyRacer::Cause")
29
+ if !cause.IsEmpty()
30
+ prev = cause.Value()
31
+ if prev.kind_of?(JSError)
32
+ @boundaries.concat prev.boundaries
33
+ @value = prev.value
34
+ else
35
+ @value = prev
36
+ @boundaries.concat [Boundary.new(:rbframes => prev.backtrace)]
37
+ end
38
+ else
39
+ @value = ex
40
+ end
41
+ end
42
+ else
43
+ @value = ex
44
+ message = ex.to_s
45
+ end
46
+ return message
47
+ end
48
+
49
+ def in_ruby?
50
+ @value.kind_of?(Exception)
51
+ end
52
+
53
+ def in_javascript?
54
+ !in_ruby?
55
+ end
56
+
57
+ def backtrace(*modifiers)
58
+ trace_framework = modifiers.include?(:framework)
59
+ trace_ruby = modifiers.length == 0 || modifiers.include?(:ruby)
60
+ trace_javascript = modifiers.length == 0 || modifiers.include?(:javascript)
61
+ mixed = []
62
+ rbcontext = []
63
+ jscontext = []
64
+ @boundaries.each do |b|
65
+ rbframes = b.rbframes.dup
66
+ rbcontext.reverse_each do |frame|
67
+ if frame == rbframes.last
68
+ rbframes.pop
69
+ else
70
+ break
71
+ end
72
+ end if trace_ruby
73
+ jsframes = b.jsframes.dup
74
+ jscontext.reverse_each do |frame|
75
+ if frame == jsframes.last
76
+ jsframes.pop
77
+ else
78
+ break
79
+ end
80
+ end if trace_javascript
81
+ rbcontext = b.rbframes
82
+ jscontext = b.jsframes
83
+ rbframes.reject! {|f| f =~ /lib\/v8\/.*\.rb/} unless trace_framework
84
+ mixed.unshift(*rbframes) if trace_ruby
85
+ mixed.unshift(*jsframes) if trace_javascript
86
+ end
87
+ return mixed
88
+ end
89
+
90
+ def parse_js_frames(try)
91
+ #I can't figure out why V8 is not capturing the stacktrace here
92
+ #in terms of StackTrace and StackFrame objects, so we have to
93
+ #parse the string.
94
+ raw = @to.rb(try.StackTrace())
95
+ if raw && !raw.empty? && !syntax_error?(try)
96
+ raw.split("\n")[1..-1].tap do |frames|
97
+ frames.each {|frame| frame.strip!; frame.chomp!(",")}
98
+ end.reject(&:empty?)
99
+ else
100
+ msg = try.Message()
101
+ ["at #{@to.rb(msg.GetScriptResourceName())}:#{msg.GetLineNumber()}:#{msg.GetStartColumn() + 1}"]
102
+ end
103
+ end
104
+
105
+ #Syntax errors are weird in that they have a non-empty stack trace
106
+ #but it does not contain any source location information, so
107
+ #in these instances, we have to pull it out of the Message object
108
+ #in the TryCatch. Is there a better way to detect a syntax error
109
+ def syntax_error?(try)
110
+ ex = @to.rb(try.Exception())
111
+ if ex && ex.kind_of?(V8::Object)
112
+ type = ex["constructor"]
113
+ type && type.kind_of?(V8::Function) && type.name == "SyntaxError"
114
+ else
115
+ false
116
+ end
117
+ end
118
+
119
+ class Boundary
120
+ attr_reader :rbframes, :jsframes
121
+
122
+ def initialize(frames = {})
123
+ @rbframes = frames[:rbframes] || []
124
+ @jsframes = frames[:jsframes] || []
125
+ end
126
+ end
127
+ end
128
+ #deprecated -- use JSError
129
+ JavasriptError = JSError
130
+ end
@@ -0,0 +1,44 @@
1
+ module V8
2
+ class Function < V8::Object
3
+
4
+ def methodcall(thisObject, *args)
5
+ err = nil
6
+ return_value = nil
7
+ @portal.open do |to|
8
+ C::TryCatch.try do |try|
9
+ this = to.v8(thisObject)
10
+ return_value = to.rb(@native.Call(this, to.v8(args)))
11
+ err = JSError.new(try, to) if try.HasCaught()
12
+ end
13
+ end
14
+ raise err if err
15
+ return return_value
16
+ end
17
+
18
+ def call(*args)
19
+ @portal.open do
20
+ self.methodcall(@portal.context.native.Global(), *args)
21
+ end
22
+ end
23
+
24
+ def new(*args)
25
+ @portal.open do |to|
26
+ to.rb(@native.NewInstance(to.v8(args)))
27
+ end
28
+ end
29
+
30
+ def name
31
+ @portal.open do |to|
32
+ to.rb(@native.GetName())
33
+ end
34
+ end
35
+
36
+ def name=(name)
37
+ name.tap do
38
+ @portal.open do |to|
39
+ @native.SetName(to.v8(name))
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,69 @@
1
+
2
+ module V8
3
+ class Object
4
+ include Enumerable
5
+
6
+ def initialize(native, portal)
7
+ @native, @portal = native, portal
8
+ end
9
+
10
+ def [](key)
11
+ @portal.open do |to|
12
+ to.rb(@native.Get(to.v8(key)))
13
+ end
14
+ end
15
+
16
+ def []=(key, value)
17
+ value.tap do
18
+ @portal.open do |to|
19
+ @native.Set(to.v8(key), to.v8(value))
20
+ end
21
+ end
22
+ end
23
+
24
+ def to_s
25
+ @portal.open do |to|
26
+ to.rb(@native.ToString())
27
+ end
28
+ end
29
+
30
+ def each
31
+ @portal.open do |to|
32
+ for prop in to.rb(@native.GetPropertyNames())
33
+ yield prop, self[prop]
34
+ end
35
+ end
36
+ end
37
+
38
+ def respond_to?(method)
39
+ super or self[method] != nil
40
+ end
41
+
42
+ def method_missing(name, *args, &block)
43
+ if name.to_s =~ /(.*)=$/
44
+ if args.length > 1
45
+ self[$1] = args
46
+ return args
47
+ else
48
+ self[$1] = args.first
49
+ return args
50
+ end
51
+ end
52
+ return super(name, *args, &block) unless self.respond_to?(name)
53
+ property = self[name]
54
+ if property.kind_of?(V8::Function)
55
+ property.methodcall(self, *args)
56
+ elsif args.empty?
57
+ property
58
+ else
59
+ raise ArgumentError, "wrong number of arguments (#{args.length} for 0)" unless args.empty?
60
+ end
61
+ end
62
+ end
63
+ end
64
+
65
+ class Object
66
+ def eval_js(javascript)
67
+ V8::Context.new(:with => self).eval(javascript)
68
+ end
69
+ end