spade-packager 0.1.0

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 (316) hide show
  1. data/.gitignore +2 -0
  2. data/.gitmodules +6 -0
  3. data/bin/spadepkg +8 -0
  4. data/lib/libgems_ext.rb +8 -0
  5. data/lib/libgems_ext/config_file.rb +33 -0
  6. data/lib/libgems_ext/dependency_installer.rb +150 -0
  7. data/lib/libgems_ext/installer.rb +39 -0
  8. data/lib/libgems_ext/libgems.rb +39 -0
  9. data/lib/libgems_ext/spec_fetcher.rb +11 -0
  10. data/lib/spade-packager.rb +1 -0
  11. data/lib/spade/packager.rb +18 -0
  12. data/lib/spade/packager/cli.rb +9 -0
  13. data/lib/spade/packager/cli/base.rb +196 -0
  14. data/lib/spade/packager/cli/owner.rb +46 -0
  15. data/lib/spade/packager/cli/project_generator.rb +117 -0
  16. data/lib/spade/packager/credentials.rb +38 -0
  17. data/lib/spade/packager/local.rb +50 -0
  18. data/lib/spade/packager/package.rb +160 -0
  19. data/lib/spade/packager/remote.rb +98 -0
  20. data/lib/spade/packager/repository.rb +18 -0
  21. data/lib/spade/packager/version.rb +5 -0
  22. data/packages/coffee-script/.gitignore +8 -0
  23. data/packages/coffee-script/.npmignore +11 -0
  24. data/packages/coffee-script/Cakefile +229 -0
  25. data/packages/coffee-script/LICENSE +22 -0
  26. data/packages/coffee-script/README +47 -0
  27. data/packages/coffee-script/Rakefile +78 -0
  28. data/packages/coffee-script/bin/cake +7 -0
  29. data/packages/coffee-script/bin/coffee +7 -0
  30. data/packages/coffee-script/documentation/coffee/aliases.coffee +11 -0
  31. data/packages/coffee-script/documentation/coffee/array_comprehensions.coffee +2 -0
  32. data/packages/coffee-script/documentation/coffee/block_comment.coffee +6 -0
  33. data/packages/coffee-script/documentation/coffee/cake_tasks.coffee +9 -0
  34. data/packages/coffee-script/documentation/coffee/classes.coffee +25 -0
  35. data/packages/coffee-script/documentation/coffee/comparisons.coffee +5 -0
  36. data/packages/coffee-script/documentation/coffee/conditionals.coffee +13 -0
  37. data/packages/coffee-script/documentation/coffee/default_args.coffee +8 -0
  38. data/packages/coffee-script/documentation/coffee/do.coffee +4 -0
  39. data/packages/coffee-script/documentation/coffee/embedded.coffee +5 -0
  40. data/packages/coffee-script/documentation/coffee/existence.coffee +10 -0
  41. data/packages/coffee-script/documentation/coffee/expressions.coffee +9 -0
  42. data/packages/coffee-script/documentation/coffee/expressions_assignment.coffee +3 -0
  43. data/packages/coffee-script/documentation/coffee/expressions_comprehension.coffee +3 -0
  44. data/packages/coffee-script/documentation/coffee/expressions_try.coffee +7 -0
  45. data/packages/coffee-script/documentation/coffee/fat_arrow.coffee +6 -0
  46. data/packages/coffee-script/documentation/coffee/functions.coffee +2 -0
  47. data/packages/coffee-script/documentation/coffee/heredocs.coffee +7 -0
  48. data/packages/coffee-script/documentation/coffee/heregexes.coffee +11 -0
  49. data/packages/coffee-script/documentation/coffee/interpolation.coffee +6 -0
  50. data/packages/coffee-script/documentation/coffee/multiple_return_values.coffee +7 -0
  51. data/packages/coffee-script/documentation/coffee/object_comprehensions.coffee +4 -0
  52. data/packages/coffee-script/documentation/coffee/object_extraction.coffee +13 -0
  53. data/packages/coffee-script/documentation/coffee/objects_and_arrays.coffee +19 -0
  54. data/packages/coffee-script/documentation/coffee/objects_reserved.coffee +5 -0
  55. data/packages/coffee-script/documentation/coffee/overview.coffee +28 -0
  56. data/packages/coffee-script/documentation/coffee/parallel_assignment.coffee +6 -0
  57. data/packages/coffee-script/documentation/coffee/patterns_and_splats.coffee +7 -0
  58. data/packages/coffee-script/documentation/coffee/prototypes.coffee +3 -0
  59. data/packages/coffee-script/documentation/coffee/range_comprehensions.coffee +2 -0
  60. data/packages/coffee-script/documentation/coffee/scope.coffee +5 -0
  61. data/packages/coffee-script/documentation/coffee/slices.coffee +7 -0
  62. data/packages/coffee-script/documentation/coffee/soaks.coffee +1 -0
  63. data/packages/coffee-script/documentation/coffee/splats.coffee +27 -0
  64. data/packages/coffee-script/documentation/coffee/splices.coffee +5 -0
  65. data/packages/coffee-script/documentation/coffee/strings.coffee +8 -0
  66. data/packages/coffee-script/documentation/coffee/switch.coffee +10 -0
  67. data/packages/coffee-script/documentation/coffee/try.coffee +8 -0
  68. data/packages/coffee-script/documentation/coffee/while.coffee +10 -0
  69. data/packages/coffee-script/documentation/css/docs.css +374 -0
  70. data/packages/coffee-script/documentation/css/idle.css +64 -0
  71. data/packages/coffee-script/documentation/docs/browser.html +25 -0
  72. data/packages/coffee-script/documentation/docs/cake.html +43 -0
  73. data/packages/coffee-script/documentation/docs/coffee-script.html +51 -0
  74. data/packages/coffee-script/documentation/docs/command.html +161 -0
  75. data/packages/coffee-script/documentation/docs/docco.css +186 -0
  76. data/packages/coffee-script/documentation/docs/grammar.html +399 -0
  77. data/packages/coffee-script/documentation/docs/helpers.html +31 -0
  78. data/packages/coffee-script/documentation/docs/index.html +3 -0
  79. data/packages/coffee-script/documentation/docs/lexer.html +490 -0
  80. data/packages/coffee-script/documentation/docs/nodes.html +1338 -0
  81. data/packages/coffee-script/documentation/docs/optparse.html +78 -0
  82. data/packages/coffee-script/documentation/docs/repl.html +24 -0
  83. data/packages/coffee-script/documentation/docs/rewriter.html +251 -0
  84. data/packages/coffee-script/documentation/docs/scope.html +54 -0
  85. data/packages/coffee-script/documentation/docs/underscore.html +295 -0
  86. data/packages/coffee-script/documentation/images/background.png +0 -0
  87. data/packages/coffee-script/documentation/images/banding.png +0 -0
  88. data/packages/coffee-script/documentation/images/button_bg.png +0 -0
  89. data/packages/coffee-script/documentation/images/button_bg_dark.gif +0 -0
  90. data/packages/coffee-script/documentation/images/button_bg_green.gif +0 -0
  91. data/packages/coffee-script/documentation/images/favicon.ico +0 -0
  92. data/packages/coffee-script/documentation/images/logo.png +0 -0
  93. data/packages/coffee-script/documentation/images/screenshadow.png +0 -0
  94. data/packages/coffee-script/documentation/index.html.erb +1607 -0
  95. data/packages/coffee-script/documentation/js/aliases.js +17 -0
  96. data/packages/coffee-script/documentation/js/array_comprehensions.js +6 -0
  97. data/packages/coffee-script/documentation/js/block_comment.js +4 -0
  98. data/packages/coffee-script/documentation/js/cake_tasks.js +10 -0
  99. data/packages/coffee-script/documentation/js/classes.js +44 -0
  100. data/packages/coffee-script/documentation/js/comparisons.js +3 -0
  101. data/packages/coffee-script/documentation/js/conditionals.js +12 -0
  102. data/packages/coffee-script/documentation/js/default_args.js +7 -0
  103. data/packages/coffee-script/documentation/js/do.js +10 -0
  104. data/packages/coffee-script/documentation/js/embedded.js +4 -0
  105. data/packages/coffee-script/documentation/js/existence.js +6 -0
  106. data/packages/coffee-script/documentation/js/expressions.js +15 -0
  107. data/packages/coffee-script/documentation/js/expressions_assignment.js +2 -0
  108. data/packages/coffee-script/documentation/js/expressions_comprehension.js +9 -0
  109. data/packages/coffee-script/documentation/js/expressions_try.js +7 -0
  110. data/packages/coffee-script/documentation/js/fat_arrow.js +9 -0
  111. data/packages/coffee-script/documentation/js/functions.js +7 -0
  112. data/packages/coffee-script/documentation/js/heredocs.js +2 -0
  113. data/packages/coffee-script/documentation/js/heregexes.js +2 -0
  114. data/packages/coffee-script/documentation/js/interpolation.js +4 -0
  115. data/packages/coffee-script/documentation/js/multiple_return_values.js +5 -0
  116. data/packages/coffee-script/documentation/js/object_comprehensions.js +15 -0
  117. data/packages/coffee-script/documentation/js/object_extraction.js +10 -0
  118. data/packages/coffee-script/documentation/js/objects_and_arrays.js +17 -0
  119. data/packages/coffee-script/documentation/js/objects_reserved.js +4 -0
  120. data/packages/coffee-script/documentation/js/overview.js +35 -0
  121. data/packages/coffee-script/documentation/js/parallel_assignment.js +4 -0
  122. data/packages/coffee-script/documentation/js/patterns_and_splats.js +4 -0
  123. data/packages/coffee-script/documentation/js/prototypes.js +3 -0
  124. data/packages/coffee-script/documentation/js/range_comprehensions.js +9 -0
  125. data/packages/coffee-script/documentation/js/scope.js +8 -0
  126. data/packages/coffee-script/documentation/js/slices.js +4 -0
  127. data/packages/coffee-script/documentation/js/soaks.js +2 -0
  128. data/packages/coffee-script/documentation/js/splats.js +15 -0
  129. data/packages/coffee-script/documentation/js/splices.js +3 -0
  130. data/packages/coffee-script/documentation/js/strings.js +2 -0
  131. data/packages/coffee-script/documentation/js/switch.js +23 -0
  132. data/packages/coffee-script/documentation/js/try.js +8 -0
  133. data/packages/coffee-script/documentation/js/while.js +18 -0
  134. data/packages/coffee-script/documentation/vendor/jquery-1.4.2.js +6240 -0
  135. data/packages/coffee-script/examples/beautiful_code/binary_search.coffee +16 -0
  136. data/packages/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +13 -0
  137. data/packages/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +34 -0
  138. data/packages/coffee-script/examples/blocks.coffee +54 -0
  139. data/packages/coffee-script/examples/code.coffee +167 -0
  140. data/packages/coffee-script/examples/computer_science/README +4 -0
  141. data/packages/coffee-script/examples/computer_science/binary_search.coffee +25 -0
  142. data/packages/coffee-script/examples/computer_science/bubble_sort.coffee +11 -0
  143. data/packages/coffee-script/examples/computer_science/linked_list.coffee +108 -0
  144. data/packages/coffee-script/examples/computer_science/luhn_algorithm.coffee +36 -0
  145. data/packages/coffee-script/examples/computer_science/merge_sort.coffee +19 -0
  146. data/packages/coffee-script/examples/computer_science/selection_sort.coffee +23 -0
  147. data/packages/coffee-script/examples/poignant.coffee +181 -0
  148. data/packages/coffee-script/examples/potion.coffee +206 -0
  149. data/packages/coffee-script/examples/underscore.coffee +682 -0
  150. data/packages/coffee-script/examples/web_server.coffee +12 -0
  151. data/packages/coffee-script/extras/EXTRAS +7 -0
  152. data/packages/coffee-script/extras/coffee-script.js +8 -0
  153. data/packages/coffee-script/extras/jsl.conf +44 -0
  154. data/packages/coffee-script/index.html +2515 -0
  155. data/packages/coffee-script/lib/browser.js +52 -0
  156. data/packages/coffee-script/lib/cake.js +76 -0
  157. data/packages/coffee-script/lib/coffee-script.js +82 -0
  158. data/packages/coffee-script/lib/command.js +263 -0
  159. data/packages/coffee-script/lib/grammar.js +581 -0
  160. data/packages/coffee-script/lib/helpers.js +66 -0
  161. data/packages/coffee-script/lib/index.js +8 -0
  162. data/packages/coffee-script/lib/lexer.js +633 -0
  163. data/packages/coffee-script/lib/nodes.js +2165 -0
  164. data/packages/coffee-script/lib/optparse.js +111 -0
  165. data/packages/coffee-script/lib/parser.js +649 -0
  166. data/packages/coffee-script/lib/repl.js +42 -0
  167. data/packages/coffee-script/lib/rewriter.js +353 -0
  168. data/packages/coffee-script/lib/scope.js +120 -0
  169. data/packages/coffee-script/lib/spade-format.js +45 -0
  170. data/packages/coffee-script/package.json +26 -0
  171. data/packages/coffee-script/src/browser.coffee +43 -0
  172. data/packages/coffee-script/src/cake.coffee +69 -0
  173. data/packages/coffee-script/src/coffee-script.coffee +92 -0
  174. data/packages/coffee-script/src/command.coffee +214 -0
  175. data/packages/coffee-script/src/grammar.coffee +590 -0
  176. data/packages/coffee-script/src/helpers.coffee +56 -0
  177. data/packages/coffee-script/src/index.coffee +2 -0
  178. data/packages/coffee-script/src/lexer.coffee +653 -0
  179. data/packages/coffee-script/src/nodes.coffee +1754 -0
  180. data/packages/coffee-script/src/optparse.coffee +99 -0
  181. data/packages/coffee-script/src/repl.coffee +42 -0
  182. data/packages/coffee-script/src/rewriter.coffee +326 -0
  183. data/packages/coffee-script/src/scope.coffee +94 -0
  184. data/packages/coffee-script/test/arguments.coffee +127 -0
  185. data/packages/coffee-script/test/assignment.coffee +98 -0
  186. data/packages/coffee-script/test/break.coffee +18 -0
  187. data/packages/coffee-script/test/comments.coffee +201 -0
  188. data/packages/coffee-script/test/conditionals.coffee +181 -0
  189. data/packages/coffee-script/test/exception_handling.coffee +90 -0
  190. data/packages/coffee-script/test/helpers.coffee +96 -0
  191. data/packages/coffee-script/test/importing.coffee +18 -0
  192. data/packages/coffee-script/test/operators.coffee +225 -0
  193. data/packages/coffee-script/test/ranges_slices_and_splices.coffee +186 -0
  194. data/packages/coffee-script/test/regular_expressions.coffee +56 -0
  195. data/packages/coffee-script/test/test.html +123 -0
  196. data/packages/coffee-script/test/test_chaining.coffee +77 -0
  197. data/packages/coffee-script/test/test_classes.coffee +372 -0
  198. data/packages/coffee-script/test/test_compilation.coffee +26 -0
  199. data/packages/coffee-script/test/test_comprehensions.coffee +318 -0
  200. data/packages/coffee-script/test/test_existence.coffee +165 -0
  201. data/packages/coffee-script/test/test_functions.coffee +379 -0
  202. data/packages/coffee-script/test/test_heredocs.coffee +111 -0
  203. data/packages/coffee-script/test/test_literals.coffee +270 -0
  204. data/packages/coffee-script/test/test_option_parser.coffee +27 -0
  205. data/packages/coffee-script/test/test_pattern_matching.coffee +162 -0
  206. data/packages/coffee-script/test/test_returns.coffee +63 -0
  207. data/packages/coffee-script/test/test_splats.coffee +102 -0
  208. data/packages/coffee-script/test/test_strings.coffee +118 -0
  209. data/packages/coffee-script/test/test_switch.coffee +103 -0
  210. data/packages/coffee-script/test/test_while.coffee +71 -0
  211. data/packages/ivory/LICENSE.txt +1 -0
  212. data/packages/ivory/README.md +19 -0
  213. data/packages/ivory/lib/buffer.js +111 -0
  214. data/packages/ivory/lib/events.js +137 -0
  215. data/packages/ivory/lib/fs.js +266 -0
  216. data/packages/ivory/lib/main.js +13 -0
  217. data/packages/ivory/lib/path.js +158 -0
  218. data/packages/ivory/lib/ruby/buffer.rb +145 -0
  219. data/packages/ivory/lib/ruby/constants.rb +585 -0
  220. data/packages/ivory/lib/ruby/events.rb +32 -0
  221. data/packages/ivory/lib/ruby/fs.rb +245 -0
  222. data/packages/ivory/lib/ruby/process.rb +28 -0
  223. data/packages/ivory/lib/stream.js +115 -0
  224. data/packages/ivory/lib/util.js +414 -0
  225. data/packages/ivory/package.json +11 -0
  226. data/packages/ivory/spade-boot.js +78 -0
  227. data/packages/jquery/main.js +7179 -0
  228. data/packages/jquery/package.json +10 -0
  229. data/packages/json/lib/main.js +14 -0
  230. data/packages/json/package.json +8 -0
  231. data/packages/lproj/README.md +77 -0
  232. data/packages/lproj/examples/demo-app/en.lproj/localized.strings +2 -0
  233. data/packages/lproj/examples/demo-app/fr.lproj/localized.strings +3 -0
  234. data/packages/lproj/examples/demo-app/index.html +8 -0
  235. data/packages/lproj/examples/demo-app/lib/main.js +7 -0
  236. data/packages/lproj/examples/demo-app/package.json +9 -0
  237. data/packages/lproj/lib/main.js +78 -0
  238. data/packages/lproj/lib/strings-format.js +6 -0
  239. data/packages/lproj/package.json +9 -0
  240. data/packages/optparse/README.md +161 -0
  241. data/packages/optparse/TODO +1 -0
  242. data/packages/optparse/examples/browser-test.html +75 -0
  243. data/packages/optparse/examples/nodejs-test.js +90 -0
  244. data/packages/optparse/lib/optparse.js +309 -0
  245. data/packages/optparse/package.json +13 -0
  246. data/packages/optparse/seed.yml +5 -0
  247. data/packages/text/lib/main.js +8 -0
  248. data/packages/text/package.json +9 -0
  249. data/packages/web-file/README.md +7 -0
  250. data/packages/web-file/lib/errors.js +32 -0
  251. data/packages/web-file/lib/file-reader.js +10 -0
  252. data/packages/web-file/lib/file-system.js +234 -0
  253. data/packages/web-file/lib/file-writer.js +10 -0
  254. data/packages/web-file/lib/file.js +9 -0
  255. data/packages/web-file/lib/main.js +34 -0
  256. data/packages/web-file/lib/platform.js +25 -0
  257. data/packages/web-file/lib/ruby/file.rb +252 -0
  258. data/packages/web-file/lib/ruby/file_reader.rb +69 -0
  259. data/packages/web-file/lib/ruby/file_system.rb +134 -0
  260. data/packages/web-file/lib/ruby/file_writer.rb +78 -0
  261. data/packages/web-file/package.json +12 -0
  262. data/packages/web-typed-array/README.md +7 -0
  263. data/packages/web-typed-array/lib/array-buffer-view.js +9 -0
  264. data/packages/web-typed-array/lib/array-buffer.js +7 -0
  265. data/packages/web-typed-array/lib/main.js +33 -0
  266. data/packages/web-typed-array/lib/platform.js +20 -0
  267. data/packages/web-typed-array/lib/ruby/array_buffer.rb +31 -0
  268. data/packages/web-typed-array/lib/ruby/array_buffer_view.rb +130 -0
  269. data/packages/web-typed-array/lib/ruby/typed_array.rb +133 -0
  270. data/packages/web-typed-array/lib/typed-array.js +26 -0
  271. data/packages/web-typed-array/package.json +9 -0
  272. data/spade-packager.gemspec +39 -0
  273. data/spec/cli/build_spec.rb +57 -0
  274. data/spec/cli/install_spec.rb +119 -0
  275. data/spec/cli/installed_spec.rb +55 -0
  276. data/spec/cli/list_spec.rb +74 -0
  277. data/spec/cli/login_spec.rb +75 -0
  278. data/spec/cli/new_spec.rb +5 -0
  279. data/spec/cli/owner_spec.rb +114 -0
  280. data/spec/cli/push_spec.rb +73 -0
  281. data/spec/cli/uninstall_spec.rb +58 -0
  282. data/spec/cli/unpack_spec.rb +72 -0
  283. data/spec/cli/unyank_spec.rb +73 -0
  284. data/spec/cli/yank_spec.rb +73 -0
  285. data/spec/credentials_spec.rb +23 -0
  286. data/spec/fixtures/badrake-0.8.7.spd +0 -0
  287. data/spec/fixtures/builder-3.0.0.spd +0 -0
  288. data/spec/fixtures/bundler-1.1.pre.spd +0 -0
  289. data/spec/fixtures/coffee-1.0.1.pre.spd +0 -0
  290. data/spec/fixtures/core-test-0.4.3.spd +0 -0
  291. data/spec/fixtures/core-test/bin/cot +3 -0
  292. data/spec/fixtures/core-test/lib/main.js +1 -0
  293. data/spec/fixtures/core-test/resources/runner.css +0 -0
  294. data/spec/fixtures/core-test/tests/test.js +1 -0
  295. data/spec/fixtures/highline-1.6.1.spd +0 -0
  296. data/spec/fixtures/ivory-0.0.1.spd +0 -0
  297. data/spec/fixtures/jquery-1.4.3.spd +0 -0
  298. data/spec/fixtures/optparse-1.0.1.spd +0 -0
  299. data/spec/fixtures/package.json +30 -0
  300. data/spec/fixtures/rake-0.8.6.spd +0 -0
  301. data/spec/fixtures/rake-0.8.7.spd +0 -0
  302. data/spec/gauntlet_spec.rb +27 -0
  303. data/spec/package_spec.rb +267 -0
  304. data/spec/spec_helper.rb +32 -0
  305. data/spec/support/cli.rb +103 -0
  306. data/spec/support/fake.rb +48 -0
  307. data/spec/support/fake_gem_server.rb +67 -0
  308. data/spec/support/fake_gemcutter.rb +50 -0
  309. data/spec/support/matchers.rb +32 -0
  310. data/spec/support/path.rb +61 -0
  311. data/templates/project/LICENSE +19 -0
  312. data/templates/project/README.md +21 -0
  313. data/templates/project/lib/main.js +9 -0
  314. data/templates/project/project.json +31 -0
  315. data/templates/project/tests/main-test.js +8 -0
  316. metadata +484 -0
@@ -0,0 +1,69 @@
1
+ # ==========================================================================
2
+ # Project: File
3
+ # Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ # License: Licened under MIT license (see LICENSE)
5
+ # ==========================================================================
6
+
7
+ module WebFile
8
+ class FileReaderExports < Spade::Runtime::Exports
9
+
10
+ def initialize(ctx)
11
+ super(ctx)
12
+ context.require('web-file/ruby/file')
13
+ end
14
+
15
+ class FileReader
16
+
17
+ attr_reader :readyState, :result
18
+
19
+ attr_accessor :onloadstart, :onprogress, :onload, :onerror, :onloadend
20
+
21
+ def readAsArrayBuffer(blob)
22
+ throw "FileReader.readAsArrayBuffer() not yet implemented"
23
+ end
24
+
25
+ def readAsBinaryString(blob)
26
+ throw "FileReader.readAsBinaryString() not yet implemented"
27
+ end
28
+
29
+ def readAsText(blob, encoding=nil)
30
+ throw "FileReader.readAsText() not yet implemented"
31
+ end
32
+
33
+ def readAsDataURL(blob)
34
+ throw "FileReader.readAsDataURL() not yet implemented"
35
+ end
36
+
37
+ def abort(*args)
38
+ throw "FileReader.abort not yet implemented"
39
+ end
40
+ end
41
+
42
+ class FileReaderSync
43
+
44
+ def readAsArrayBuffer(blob)
45
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
46
+ blob.send(:read_sync, :buffer)
47
+ end
48
+
49
+ def readAsBinaryString(blob)
50
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
51
+ blob.send(:read_sync, :binary)
52
+ end
53
+
54
+ def readAsText(blob, encoding=nil)
55
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
56
+ blob.send(:read_sync, :text, encoding)
57
+ end
58
+
59
+ def readAsDataURL(blob)
60
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
61
+ blob.send(:read_sync, :data_url)
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
68
+
69
+ Spade.exports WebFile::FileReaderExports
@@ -0,0 +1,134 @@
1
+ # ==========================================================================
2
+ # Project: File
3
+ # Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ # License: Licened under MIT license (see LICENSE)
5
+ # ==========================================================================
6
+
7
+ require 'fileutils'
8
+
9
+ module WebFile
10
+ class FileSystemExports < Spade::Runtime::Exports
11
+
12
+ def initialize(ctx)
13
+ super(ctx)
14
+ self.context.require 'web-file/ruby/file'
15
+ end
16
+
17
+ SEPARATOR = File::SEPARATOR
18
+
19
+ def cwd
20
+ Dir.pwd
21
+ end
22
+
23
+ def open(path, perms=nil, offset=nil, length=nil)
24
+ RealFile.new path, self.context, perms, offset, length
25
+ end
26
+
27
+ def exists(path)
28
+ File.exists? path
29
+ end
30
+
31
+ def stat(path)
32
+ File.stat path
33
+ end
34
+
35
+ def glob(path)
36
+ Dir.glob path
37
+ end
38
+
39
+ #############################################'
40
+ ## FS ACTIONS
41
+ ##
42
+
43
+ DEF_OPTS = {} # { :verbose => true, :noop => true }
44
+
45
+ def mkdir(path, mode=nil)
46
+ opts = DEF_OPTS.dup
47
+ opts[:mode] = mode unless mode.nil?
48
+ FileUtils.mkdir clean_args(path), opts
49
+ end
50
+
51
+ def mkdir_p(path, mode=nil)
52
+ opts = DEF_OPTS.dup
53
+ opts[:mode] = mode unless mode.nil?
54
+ FileUtils.mkdir_p clean_args(path), opts
55
+ end
56
+
57
+ def mv(src, dst)
58
+ FileUtils.mv clean_args(src), clean_args(dst), DEF_OPTS
59
+ end
60
+
61
+ def cp(src, dst)
62
+ FileUtils.cp clean_args(src), clean_args(dst), DEF_OPTS
63
+ end
64
+
65
+ def cp_r(src, dst)
66
+ FileUtils.cp_r clean_args(src), clean_args(dst), DEF_OPTS
67
+ end
68
+
69
+ def rm(src)
70
+ FileUtils.rm clean_args(src), DEF_OPTS
71
+ end
72
+
73
+ def rm_r(src)
74
+ FileUtils.rm_r clean_args(src), DEF_OPTS
75
+ end
76
+
77
+ def rm_rf(src)
78
+ FileUtils.rm_rf clean_args(src), DEF_OPTS
79
+ end
80
+
81
+ def ln(src, dst)
82
+ FileUtils.ln clean_args(src), clean_args(dst), DEF_OPTS
83
+ end
84
+
85
+ def ln_s(src, dst)
86
+ FileUtils.ln_s clean_args(src), clean_args(dst), DEF_OPTS
87
+ end
88
+
89
+ #############################################'
90
+ ## PATH
91
+ ##
92
+
93
+ def expand_path(path, root=nil)
94
+ File.expand_path path, root
95
+ end
96
+
97
+ def join_path(*args)
98
+ File.join(*clean_args(args))
99
+ end
100
+
101
+ def split_path(path)
102
+ File.split(path)
103
+ end
104
+
105
+ def dirname(path)
106
+ File.dirname(path)
107
+ end
108
+
109
+ def basename(path, root=nil)
110
+ File.basename(path, root)
111
+ end
112
+
113
+ def extname(path)
114
+ File.extname(path)
115
+ end
116
+
117
+ protected
118
+
119
+ def clean_args(args)
120
+ case args
121
+ when V8::Array
122
+ args.to_a.map { |a| clean_args(a) }
123
+
124
+ when Array
125
+ args.to_a.map { |a| clean_args(a) }
126
+ else
127
+ args
128
+ end
129
+ end
130
+
131
+ end
132
+ end
133
+
134
+ Spade.exports WebFile::FileSystemExports
@@ -0,0 +1,78 @@
1
+ # ==========================================================================
2
+ # Project: File
3
+ # Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ # License: Licened under MIT license (see LICENSE)
5
+ # ==========================================================================
6
+
7
+ module WebFile
8
+ class FileWriterExports < Spade::Runtime::Exports
9
+
10
+ def initialize(ctx)
11
+ super(ctx)
12
+ context.require('web-file/ruby/file')
13
+ end
14
+
15
+ class FileWriter
16
+
17
+ attr_reader :readyState, :result
18
+
19
+ attr_accessor :onloadstart, :onprogress, :onload, :onerror, :onloadend
20
+
21
+ def writeArrayBuffer(blob, buffer)
22
+ throw "FileReader.writeArrayBuffer() not yet implemented"
23
+ end
24
+
25
+ def writeBinaryString(blob, string)
26
+ throw "FileReader.writeBinaryString() not yet implemented"
27
+ end
28
+
29
+ def writeText(blob, string, encoding=nil)
30
+ throw "FileReader.writeText() not yet implemented"
31
+ end
32
+
33
+ def writeDataURL(blob, url)
34
+ throw "FileReader.writeDataURL() not yet implemented"
35
+ end
36
+
37
+ def abort(*args)
38
+ throw "FileReader.abort not yet implemented"
39
+ end
40
+ end
41
+
42
+ class FileWriterSync
43
+
44
+ # This will reset the contents of the file referenced by the blob.
45
+ def truncate(blob)
46
+ blob.send(:truncate)
47
+ end
48
+
49
+ def writeArrayBuffer(blob, buffer)
50
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
51
+ blob.send(:write_sync, :buffer, buffer)
52
+ nil
53
+ end
54
+
55
+ def writeBinaryString(blob, string)
56
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
57
+ blob.send(:write_sync, :binary, string)
58
+ nil
59
+ end
60
+
61
+ def writeText(blob, string, encoding=nil)
62
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
63
+ blob.send(:write_sync, :text, string, encoding)
64
+ nil
65
+ end
66
+
67
+ def writeDataURL(blob, url)
68
+ throw "Blob is not a real file" unless blob.instance_of? RealFile
69
+ blob.send(:write_sync, :data_url, url)
70
+ nil
71
+ end
72
+
73
+ end
74
+
75
+ end
76
+ end
77
+
78
+ Spade.exports WebFile::FileWriterExports
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "web-file",
3
+ "version": "0.0.1",
4
+ "summary": "HTML5 File API for Spade",
5
+ "description": "Implements the HTML5 [File](http://www.w3.org/TR/FileAPI/) specification in the spade CLI",
6
+ "author": "Charles Jolley",
7
+ "homepage": "http://github.com/charlesjolley",
8
+ "dependencies": {
9
+ "web-typed-array": "0.0.1"
10
+ },
11
+ "directories": { "lib": "lib" }
12
+ }
@@ -0,0 +1,7 @@
1
+ # Web Typed Array
2
+
3
+ Implements the HTML5 [Typed Array](https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html) specification in the spade CLI. Also returns feature detection info if available in browser.
4
+
5
+
6
+
7
+
@@ -0,0 +1,9 @@
1
+ // ==========================================================================
2
+ // Project: Web Typed Array
3
+ // Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ // License: Licened under MIT license (see __preamble__.js)
5
+ // ==========================================================================
6
+
7
+ var nat = require('./ruby/array_buffer_view');
8
+ exports.ArrayBufferView = nat.ArrayBufferView;
9
+ exports.DataView = nat.DataView;
@@ -0,0 +1,7 @@
1
+ // ==========================================================================
2
+ // Project: Web Typed Array
3
+ // Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ // License: Licened under MIT license (see __preamble__.js)
5
+ // ==========================================================================
6
+
7
+ exports.ArrayBuffer = require('./ruby/array_buffer').ArrayBuffer;
@@ -0,0 +1,33 @@
1
+ // ==========================================================================
2
+ // Project: Web Typed Array
3
+ // Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ // License: Licened under MIT license (see __preamble__.js)
5
+ // ==========================================================================
6
+ /*globals ENV ArrayBuffer ArrayBufferView DataView TypedArray Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array */
7
+
8
+ if (!require('./platform').isSupported) {
9
+ throw new Error('Typed arrays are not supported on this platform');
10
+ }
11
+
12
+ var exp;
13
+
14
+ // browser either supports it or doesn't.
15
+ if (ENV.SPADE_PLATFORM.ENGINE !== 'browser') {
16
+ ArrayBuffer = require('./array-buffer').ArrayBuffer;
17
+
18
+ exp = require('./array-buffer-view');
19
+ ArrayBufferView = exp.ArrayBufferView;
20
+ DataView = exp.DataView;
21
+
22
+ exp = require('./typed-array');
23
+ TypedArray = exp.TypedArray;
24
+ Int8Array = exp.Int8Array;
25
+ Uint8Array = exp.Uint8Array;
26
+ Int16Array = exp.Int16Array;
27
+ Uint16Array = exp.Uint16Array;
28
+ Int32Array = exp.Int32Array;
29
+ Uint32Array = exp.Uint32Array;
30
+ Float32Array = exp.Float32Array;
31
+ Float64Array = exp.Float64Array;
32
+ }
33
+
@@ -0,0 +1,20 @@
1
+ // ==========================================================================
2
+ // Project: Web Typed Array
3
+ // Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ // License: Licened under MIT license (see __preamble__.js)
5
+ // ==========================================================================
6
+ /*globals ENV ArrayBuffer */
7
+
8
+ var supported = false;
9
+ switch(ENV.SPADE_PLATFORM.ENGINE) {
10
+ case 'browser':
11
+ supported = 'undefined' !== typeof ArrayBuffer;
12
+ break;
13
+
14
+ case 'spade':
15
+ supported = true;
16
+ }
17
+
18
+ exports.isSupported = supported;
19
+
20
+
@@ -0,0 +1,31 @@
1
+ # ==========================================================================
2
+ # Project: Web Typed Array
3
+ # Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ # License: Licened under MIT license (see LICENSE)
5
+ # ==========================================================================
6
+
7
+ module WebTypedArray
8
+
9
+ class ArrayBufferExports < Spade::Runtime::Exports
10
+
11
+ # TODO: Use a string to keep the buffer packed instead of the much more
12
+ # expensive Array
13
+ class ArrayBuffer
14
+
15
+ attr_reader :buf
16
+
17
+ def initialize(size)
18
+ @buf = "\0"*size
19
+ end
20
+
21
+ def byteLength
22
+ @buf.size
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ Spade.exports WebTypedArray::ArrayBufferExports
@@ -0,0 +1,130 @@
1
+ # ==========================================================================
2
+ # Project: Web Typed Array
3
+ # Copyright: ©2010 Strobe Inc. All rights reserved.
4
+ # License: Licened under MIT license (see LICENSE)
5
+ # ==========================================================================
6
+
7
+ module WebTypedArray
8
+
9
+ class ArrayBufferViewExports < Spade::Runtime::Exports
10
+
11
+ class ArrayBufferView
12
+
13
+ attr_reader :buffer
14
+
15
+ def byteOffset
16
+ @byte_offset
17
+ end
18
+
19
+ def byteLength
20
+ @byte_length
21
+ end
22
+
23
+
24
+ end
25
+
26
+ class DataView < ArrayBufferView
27
+
28
+ def initialize(buffer, byte_offset=nil, byte_length=nil)
29
+ @buffer = buffer
30
+ @byte_offset = byte_offset || 0
31
+ if byte_length.nil? || (byte_length+@byte_offset > buffer.byteLength)
32
+ @byte_length = buffer.byteLength - @byte_offset
33
+ else
34
+ @byte_length = byte_length
35
+ end
36
+ end
37
+
38
+ ############################################
39
+ ## Getters
40
+ ##
41
+
42
+ def getInt8(byteOffset)
43
+ unpack byteOffset, 'c'
44
+ end
45
+
46
+ def getUint8(byteOffset)
47
+ unpack byteOffset, 'C'
48
+ end
49
+
50
+ def getInt16(byteOffset)
51
+ unpack byteOffset, 's'
52
+ end
53
+
54
+ def getUint16(byteOffset)
55
+ unpack byteOffset, 'S'
56
+ end
57
+
58
+ def getInt32(byteOffset)
59
+ unpack byteOffset, 'l'
60
+ end
61
+
62
+ def getUint32(byteOffset)
63
+ unpack byteOffset, 'L'
64
+ end
65
+
66
+ def getFloat32(byteOffset)
67
+ unpack byteOffset, 'g'
68
+ end
69
+
70
+ def getFloat64(byteOffset)
71
+ unpack byteOffset, 'G'
72
+ end
73
+
74
+ ############################################
75
+ ## Setters
76
+ ##
77
+
78
+ def setInt8(byteOffset, value)
79
+ pack byteOffset, value, 'c'
80
+ end
81
+
82
+ def setUint8(byteOffset, value)
83
+ pack byteOffset, value, 'C'
84
+ end
85
+
86
+ def setInt16(byteOffset, value)
87
+ pack byteOffset, value, 's'
88
+ end
89
+
90
+ def setUint16(byteOffset, value)
91
+ pack byteOffset, value, 'S'
92
+ end
93
+
94
+ def setInt32(byteOffset, value)
95
+ pack byteOffset, value, 'l'
96
+ end
97
+
98
+ def setUint32(byteOffset, value)
99
+ pack byteOffset, value, 'L'
100
+ end
101
+
102
+ def setFloat32(byteOffset, value)
103
+ pack byteOffset, value, 'g'
104
+ end
105
+
106
+ def setFloat64(byteOffset, value)
107
+ pack byteOffset, value, 'G'
108
+ end
109
+
110
+
111
+ private
112
+
113
+ def pack(offset, value, code)
114
+ value = [value].pack(code)
115
+ @buffer.buf[offset, value.size] = value
116
+ nil
117
+ end
118
+
119
+ def unpack(offset, code)
120
+ @buffer.buf.unpack("@#{offset}#{code}")[0]
121
+ end
122
+
123
+ end
124
+
125
+
126
+ end
127
+
128
+ end
129
+
130
+ Spade.exports = WebTypedArray::ArrayBufferViewExports