jax 0.0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (446) hide show
  1. data/.gitignore +12 -0
  2. data/.gitmodules +3 -0
  3. data/.rvmrc +7 -0
  4. data/Gemfile +4 -0
  5. data/README.rdoc +32 -0
  6. data/Rakefile +144 -0
  7. data/bin/jax +11 -0
  8. data/builtin/shaders/basic/common.ejs +11 -0
  9. data/builtin/shaders/basic/fragment.ejs +5 -0
  10. data/builtin/shaders/basic/vertex.ejs +13 -0
  11. data/builtin/shaders/depthmap/common.ejs +1 -0
  12. data/builtin/shaders/depthmap/fragment.ejs +5 -0
  13. data/builtin/shaders/depthmap/vertex.ejs +7 -0
  14. data/builtin/shaders/fog/common.ejs +7 -0
  15. data/builtin/shaders/fog/fragment.ejs +23 -0
  16. data/builtin/shaders/fog/manifest.yml +12 -0
  17. data/builtin/shaders/fog/material.js +34 -0
  18. data/builtin/shaders/fog/vertex.ejs +10 -0
  19. data/builtin/shaders/functions/depth_map.ejs +24 -0
  20. data/builtin/shaders/functions/lights.ejs +155 -0
  21. data/builtin/shaders/lighting/common.ejs +5 -0
  22. data/builtin/shaders/lighting/fragment.ejs +34 -0
  23. data/builtin/shaders/lighting/manifest.yml +4 -0
  24. data/builtin/shaders/lighting/material.js +26 -0
  25. data/builtin/shaders/lighting/vertex.ejs +7 -0
  26. data/builtin/shaders/normal_map/common.ejs +12 -0
  27. data/builtin/shaders/normal_map/fragment.ejs +26 -0
  28. data/builtin/shaders/normal_map/manifest.yml +17 -0
  29. data/builtin/shaders/normal_map/material.js +16 -0
  30. data/builtin/shaders/normal_map/vertex.ejs +57 -0
  31. data/builtin/shaders/paraboloid-depthmap/common.ejs +6 -0
  32. data/builtin/shaders/paraboloid-depthmap/fragment.ejs +8 -0
  33. data/builtin/shaders/paraboloid-depthmap/material.js +15 -0
  34. data/builtin/shaders/paraboloid-depthmap/vertex.ejs +26 -0
  35. data/builtin/shaders/shadow_map/common.ejs +14 -0
  36. data/builtin/shaders/shadow_map/fragment.ejs +66 -0
  37. data/builtin/shaders/shadow_map/manifest.yml +1 -0
  38. data/builtin/shaders/shadow_map/material.js +26 -0
  39. data/builtin/shaders/shadow_map/vertex.ejs +46 -0
  40. data/builtin/shaders/texture/common.ejs +4 -0
  41. data/builtin/shaders/texture/fragment.ejs +11 -0
  42. data/builtin/shaders/texture/manifest.yml +17 -0
  43. data/builtin/shaders/texture/material.js +18 -0
  44. data/builtin/shaders/texture/vertex.ejs +9 -0
  45. data/guides/assets/images/book_icon.gif +0 -0
  46. data/guides/assets/images/bullet.gif +0 -0
  47. data/guides/assets/images/chapters_icon.gif +0 -0
  48. data/guides/assets/images/check_bullet.gif +0 -0
  49. data/guides/assets/images/credits_pic_blank.gif +0 -0
  50. data/guides/assets/images/edge_badge.png +0 -0
  51. data/guides/assets/images/feature_tile.gif +0 -0
  52. data/guides/assets/images/footer_tile.gif +0 -0
  53. data/guides/assets/images/getting_started/clean_passing_jasmine_suite.png +0 -0
  54. data/guides/assets/images/getting_started/rock.png +0 -0
  55. data/guides/assets/images/getting_started/rock_normal.png +0 -0
  56. data/guides/assets/images/grey_bullet.gif +0 -0
  57. data/guides/assets/images/header_backdrop.png +0 -0
  58. data/guides/assets/images/header_tile.gif +0 -0
  59. data/guides/assets/images/icons/README +5 -0
  60. data/guides/assets/images/icons/callouts/1.png +0 -0
  61. data/guides/assets/images/icons/callouts/10.png +0 -0
  62. data/guides/assets/images/icons/callouts/11.png +0 -0
  63. data/guides/assets/images/icons/callouts/12.png +0 -0
  64. data/guides/assets/images/icons/callouts/13.png +0 -0
  65. data/guides/assets/images/icons/callouts/14.png +0 -0
  66. data/guides/assets/images/icons/callouts/15.png +0 -0
  67. data/guides/assets/images/icons/callouts/2.png +0 -0
  68. data/guides/assets/images/icons/callouts/3.png +0 -0
  69. data/guides/assets/images/icons/callouts/4.png +0 -0
  70. data/guides/assets/images/icons/callouts/5.png +0 -0
  71. data/guides/assets/images/icons/callouts/6.png +0 -0
  72. data/guides/assets/images/icons/callouts/7.png +0 -0
  73. data/guides/assets/images/icons/callouts/8.png +0 -0
  74. data/guides/assets/images/icons/callouts/9.png +0 -0
  75. data/guides/assets/images/icons/caution.png +0 -0
  76. data/guides/assets/images/icons/example.png +0 -0
  77. data/guides/assets/images/icons/home.png +0 -0
  78. data/guides/assets/images/icons/important.png +0 -0
  79. data/guides/assets/images/icons/next.png +0 -0
  80. data/guides/assets/images/icons/note.png +0 -0
  81. data/guides/assets/images/icons/prev.png +0 -0
  82. data/guides/assets/images/icons/tip.png +0 -0
  83. data/guides/assets/images/icons/up.png +0 -0
  84. data/guides/assets/images/icons/warning.png +0 -0
  85. data/guides/assets/images/nav_arrow.gif +0 -0
  86. data/guides/assets/images/tab_grey.gif +0 -0
  87. data/guides/assets/images/tab_info.gif +0 -0
  88. data/guides/assets/images/tab_note.gif +0 -0
  89. data/guides/assets/images/tab_red.gif +0 -0
  90. data/guides/assets/images/tab_yellow.gif +0 -0
  91. data/guides/assets/images/tab_yellow.png +0 -0
  92. data/guides/assets/javascripts/guides.js +7 -0
  93. data/guides/assets/javascripts/syntaxhighlighter/shBrushAS3.js +59 -0
  94. data/guides/assets/javascripts/syntaxhighlighter/shBrushAppleScript.js +75 -0
  95. data/guides/assets/javascripts/syntaxhighlighter/shBrushBash.js +59 -0
  96. data/guides/assets/javascripts/syntaxhighlighter/shBrushCSharp.js +65 -0
  97. data/guides/assets/javascripts/syntaxhighlighter/shBrushColdFusion.js +100 -0
  98. data/guides/assets/javascripts/syntaxhighlighter/shBrushCpp.js +97 -0
  99. data/guides/assets/javascripts/syntaxhighlighter/shBrushCss.js +91 -0
  100. data/guides/assets/javascripts/syntaxhighlighter/shBrushDelphi.js +55 -0
  101. data/guides/assets/javascripts/syntaxhighlighter/shBrushDiff.js +41 -0
  102. data/guides/assets/javascripts/syntaxhighlighter/shBrushErlang.js +52 -0
  103. data/guides/assets/javascripts/syntaxhighlighter/shBrushGroovy.js +67 -0
  104. data/guides/assets/javascripts/syntaxhighlighter/shBrushJScript.js +52 -0
  105. data/guides/assets/javascripts/syntaxhighlighter/shBrushJava.js +57 -0
  106. data/guides/assets/javascripts/syntaxhighlighter/shBrushJavaFX.js +58 -0
  107. data/guides/assets/javascripts/syntaxhighlighter/shBrushPerl.js +72 -0
  108. data/guides/assets/javascripts/syntaxhighlighter/shBrushPhp.js +88 -0
  109. data/guides/assets/javascripts/syntaxhighlighter/shBrushPlain.js +33 -0
  110. data/guides/assets/javascripts/syntaxhighlighter/shBrushPowerShell.js +74 -0
  111. data/guides/assets/javascripts/syntaxhighlighter/shBrushPython.js +64 -0
  112. data/guides/assets/javascripts/syntaxhighlighter/shBrushRuby.js +55 -0
  113. data/guides/assets/javascripts/syntaxhighlighter/shBrushSass.js +94 -0
  114. data/guides/assets/javascripts/syntaxhighlighter/shBrushScala.js +51 -0
  115. data/guides/assets/javascripts/syntaxhighlighter/shBrushSql.js +66 -0
  116. data/guides/assets/javascripts/syntaxhighlighter/shBrushVb.js +56 -0
  117. data/guides/assets/javascripts/syntaxhighlighter/shBrushXml.js +69 -0
  118. data/guides/assets/javascripts/syntaxhighlighter/shCore.js +17 -0
  119. data/guides/assets/stylesheets/fixes.css +16 -0
  120. data/guides/assets/stylesheets/main.css +445 -0
  121. data/guides/assets/stylesheets/print.css +52 -0
  122. data/guides/assets/stylesheets/reset.css +43 -0
  123. data/guides/assets/stylesheets/style.css +13 -0
  124. data/guides/assets/stylesheets/syntaxhighlighter/shCore.css +226 -0
  125. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDefault.css +328 -0
  126. data/guides/assets/stylesheets/syntaxhighlighter/shCoreDjango.css +331 -0
  127. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEclipse.css +339 -0
  128. data/guides/assets/stylesheets/syntaxhighlighter/shCoreEmacs.css +324 -0
  129. data/guides/assets/stylesheets/syntaxhighlighter/shCoreFadeToGrey.css +328 -0
  130. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMDUltra.css +324 -0
  131. data/guides/assets/stylesheets/syntaxhighlighter/shCoreMidnight.css +324 -0
  132. data/guides/assets/stylesheets/syntaxhighlighter/shCoreRDark.css +324 -0
  133. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDefault.css +117 -0
  134. data/guides/assets/stylesheets/syntaxhighlighter/shThemeDjango.css +120 -0
  135. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEclipse.css +128 -0
  136. data/guides/assets/stylesheets/syntaxhighlighter/shThemeEmacs.css +113 -0
  137. data/guides/assets/stylesheets/syntaxhighlighter/shThemeFadeToGrey.css +117 -0
  138. data/guides/assets/stylesheets/syntaxhighlighter/shThemeJaxGuides.css +116 -0
  139. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMDUltra.css +113 -0
  140. data/guides/assets/stylesheets/syntaxhighlighter/shThemeMidnight.css +113 -0
  141. data/guides/assets/stylesheets/syntaxhighlighter/shThemeRDark.css +113 -0
  142. data/guides/jax_guides.rb +41 -0
  143. data/guides/jax_guides/common.rb +7 -0
  144. data/guides/jax_guides/generator.rb +287 -0
  145. data/guides/jax_guides/helpers.rb +29 -0
  146. data/guides/jax_guides/indexer.rb +69 -0
  147. data/guides/jax_guides/levenshtein.rb +31 -0
  148. data/guides/jax_guides/textile_extensions.rb +61 -0
  149. data/guides/source/getting_started.textile +1171 -0
  150. data/guides/source/index.html.erb +50 -0
  151. data/guides/source/layout.html.erb +158 -0
  152. data/guides/source/lighting.textile +5 -0
  153. data/guides/source/materials.textile +5 -0
  154. data/guides/source/shaders.textile +5 -0
  155. data/guides/source/testing.textile +5 -0
  156. data/guides/w3c_validator.rb +91 -0
  157. data/jax.gems +1 -0
  158. data/jax.gemspec +40 -0
  159. data/lib/jax.rb +28 -0
  160. data/lib/jax/application.rb +92 -0
  161. data/lib/jax/application/configuration.rb +27 -0
  162. data/lib/jax/generators/app.rb +17 -0
  163. data/lib/jax/generators/app/app_generator.rb +78 -0
  164. data/lib/jax/generators/app/templates/Gemfile.tt +3 -0
  165. data/lib/jax/generators/app/templates/Rakefile +6 -0
  166. data/lib/jax/generators/app/templates/app/controllers/application_controller.js.tt +5 -0
  167. data/lib/jax/generators/app/templates/app/helpers/application_helper.js.tt +3 -0
  168. data/lib/jax/generators/app/templates/app/models/.empty_directory +0 -0
  169. data/lib/jax/generators/app/templates/app/resources/.empty_directory +0 -0
  170. data/lib/jax/generators/app/templates/app/views/.empty_directory +0 -0
  171. data/lib/jax/generators/app/templates/config/application.rb.tt +6 -0
  172. data/lib/jax/generators/app/templates/config/boot.rb +13 -0
  173. data/lib/jax/generators/app/templates/config/routes.rb.tt +5 -0
  174. data/lib/jax/generators/app/templates/public/javascripts/jax.js +7561 -0
  175. data/lib/jax/generators/app/templates/public/webgl_not_supported.html +26 -0
  176. data/lib/jax/generators/app/templates/script/jax +7 -0
  177. data/lib/jax/generators/app/templates/spec/javascripts/controllers/application_controller_spec.js +11 -0
  178. data/lib/jax/generators/app/templates/spec/javascripts/helpers/application_helper_spec.js +12 -0
  179. data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine.yml +90 -0
  180. data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine_config.rb +23 -0
  181. data/lib/jax/generators/app/templates/spec/javascripts/support/jasmine_runner.rb +32 -0
  182. data/lib/jax/generators/app/templates/spec/javascripts/support/spec_helpers/jax_spec_helper.js +216 -0
  183. data/lib/jax/generators/app/templates/spec/javascripts/support/spec_layout.html.erb +63 -0
  184. data/lib/jax/generators/commands.rb +81 -0
  185. data/lib/jax/generators/controller/USAGE +9 -0
  186. data/lib/jax/generators/controller/controller_generator.rb +59 -0
  187. data/lib/jax/generators/controller/templates/controller_source.js.tt +16 -0
  188. data/lib/jax/generators/controller/templates/controller_test.js.tt +11 -0
  189. data/lib/jax/generators/controller/templates/helper.js.tt +3 -0
  190. data/lib/jax/generators/controller/templates/helper_test.js.tt +12 -0
  191. data/lib/jax/generators/controller/templates/view.js.tt +4 -0
  192. data/lib/jax/generators/light_source/USAGE +14 -0
  193. data/lib/jax/generators/light_source/light_source_generator.rb +47 -0
  194. data/lib/jax/generators/light_source/templates/light.yml.tt +39 -0
  195. data/lib/jax/generators/material/USAGE +29 -0
  196. data/lib/jax/generators/material/material_generator.rb +81 -0
  197. data/lib/jax/generators/material/templates/append.yml.tt +7 -0
  198. data/lib/jax/generators/material/templates/material.yml.tt +33 -0
  199. data/lib/jax/generators/model/USAGE +5 -0
  200. data/lib/jax/generators/model/model_generator.rb +42 -0
  201. data/lib/jax/generators/model/templates/model.js.tt +11 -0
  202. data/lib/jax/generators/model/templates/test.js.tt +11 -0
  203. data/lib/jax/generators/script_jax_loader.rb +32 -0
  204. data/lib/jax/monkeypatch/jasmine.rb +3 -0
  205. data/lib/jax/monkeypatch/jasmine/config.rb +21 -0
  206. data/lib/jax/monkeypatch/jasmine/server.rb +50 -0
  207. data/lib/jax/packager.rb +58 -0
  208. data/lib/jax/packager/sprockets_template.rb +49 -0
  209. data/lib/jax/resource_compiler.rb +50 -0
  210. data/lib/jax/routes.rb +61 -0
  211. data/lib/jax/shader.rb +158 -0
  212. data/lib/jax/tasks/rake.rb +34 -0
  213. data/lib/jax/version.rb +12 -0
  214. data/public/images/brickwall.jpg +0 -0
  215. data/public/images/jacks.jpg +0 -0
  216. data/public/images/normal_map.jpg +0 -0
  217. data/public/images/rock.png +0 -0
  218. data/public/images/rockNormal.png +0 -0
  219. data/public/images/rss.png +0 -0
  220. data/public/webgl_not_supported.html +26 -0
  221. data/spec/example_app/Gemfile +1 -0
  222. data/spec/example_app/Rakefile +15 -0
  223. data/spec/example_app/app/controllers/application_controller.js +5 -0
  224. data/spec/example_app/app/controllers/courthouse_controller.js +24 -0
  225. data/spec/example_app/app/controllers/lighting_controller.js +69 -0
  226. data/spec/example_app/app/controllers/shadows_controller.js +130 -0
  227. data/spec/example_app/app/controllers/textures_controller.js +52 -0
  228. data/spec/example_app/app/helpers/application_helper.js +3 -0
  229. data/spec/example_app/app/helpers/textures_helper.js +3 -0
  230. data/spec/example_app/app/models/character.js +23 -0
  231. data/spec/example_app/app/models/door.js +10 -0
  232. data/spec/example_app/app/models/scene.js +19 -0
  233. data/spec/example_app/app/resources/characters/judge.yml +3 -0
  234. data/spec/example_app/app/resources/doors/courthouse_door.yml +5 -0
  235. data/spec/example_app/app/resources/light_sources/directional_light.yml +13 -0
  236. data/spec/example_app/app/resources/light_sources/point_light.yml +31 -0
  237. data/spec/example_app/app/resources/light_sources/spot_light.yml +15 -0
  238. data/spec/example_app/app/resources/light_sources/sun.yml +7 -0
  239. data/spec/example_app/app/resources/light_sources/textures_point.yml +34 -0
  240. data/spec/example_app/app/resources/materials/bricks.yml +36 -0
  241. data/spec/example_app/app/resources/materials/lighting_with_shadows.yml +27 -0
  242. data/spec/example_app/app/resources/scenes/courthouse.yml +4 -0
  243. data/spec/example_app/app/views/courthouse/index.js +4 -0
  244. data/spec/example_app/app/views/lighting/index.js +4 -0
  245. data/spec/example_app/app/views/shadows/index.js +6 -0
  246. data/spec/example_app/app/views/textures/index.js +4 -0
  247. data/spec/example_app/config/application.rb +6 -0
  248. data/spec/example_app/config/boot.rb +13 -0
  249. data/spec/example_app/config/routes.rb +6 -0
  250. data/spec/example_app/public/images/185__normalmap.png +0 -0
  251. data/spec/example_app/public/images/face_norm.jpg +0 -0
  252. data/spec/example_app/public/images/rock.png +0 -0
  253. data/spec/example_app/public/images/rockNormal.png +0 -0
  254. data/spec/example_app/public/images/rss.png +0 -0
  255. data/spec/example_app/public/webgl_not_supported.html +26 -0
  256. data/spec/example_app/script/jax +7 -0
  257. data/spec/example_app/spec/javascripts/controllers/textures_controller_spec.js +11 -0
  258. data/spec/example_app/spec/javascripts/helpers/application_helper_spec.js +12 -0
  259. data/spec/example_app/spec/javascripts/resources/directional_light_spec.js +16 -0
  260. data/spec/example_app/spec/javascripts/resources/point_light_spec.js +17 -0
  261. data/spec/example_app/spec/javascripts/resources/spot_light_spec.js +18 -0
  262. data/spec/example_app/spec/javascripts/support/jasmine.yml +89 -0
  263. data/spec/example_app/spec/javascripts/support/jasmine_runner.rb +32 -0
  264. data/spec/example_app/spec/javascripts/support/spec_helpers/jax_spec_helper.js +93 -0
  265. data/spec/example_app/spec/javascripts/support/spec_layout.html.erb +84 -0
  266. data/spec/generators/app_generator_spec.rb +46 -0
  267. data/spec/generators/controller_generator_spec.rb +68 -0
  268. data/spec/generators/light_generator_spec.rb +51 -0
  269. data/spec/generators/material_generator_spec.rb +35 -0
  270. data/spec/generators/model_generator_spec.rb +43 -0
  271. data/spec/javascripts/Player.js +58 -0
  272. data/spec/javascripts/helpers/SpecHelper.js +216 -0
  273. data/spec/javascripts/jax/builtin/materials/core_materials_spec.js +41 -0
  274. data/spec/javascripts/jax/builtin/materials/dual_paraboloid_spec.js +37 -0
  275. data/spec/javascripts/jax/builtin/materials/fog_spec.js +19 -0
  276. data/spec/javascripts/jax/builtin/materials/lighting_spec.js +19 -0
  277. data/spec/javascripts/jax/builtin/materials/normal_map_spec.js +19 -0
  278. data/spec/javascripts/jax/builtin/materials/shadow_map_spec.js +19 -0
  279. data/spec/javascripts/jax/builtin/materials/texture_spec.js +19 -0
  280. data/spec/javascripts/jax/builtin/meshes/cube_spec.js +10 -0
  281. data/spec/javascripts/jax/builtin/meshes/plane_spec.js +8 -0
  282. data/spec/javascripts/jax/builtin/meshes/quad_spec.js +8 -0
  283. data/spec/javascripts/jax/builtin/meshes/sphere_spec.js +8 -0
  284. data/spec/javascripts/jax/builtin/meshes/teapot_spec.js +8 -0
  285. data/spec/javascripts/jax/builtin/meshes/torus_spec.js +8 -0
  286. data/spec/javascripts/jax/compatibility_spec.js +50 -0
  287. data/spec/javascripts/jax/context_spec.js +82 -0
  288. data/spec/javascripts/jax/controller_spec.js +145 -0
  289. data/spec/javascripts/jax/core/delegation_spec.js +48 -0
  290. data/spec/javascripts/jax/core/events_spec.js +17 -0
  291. data/spec/javascripts/jax/core/matrix_stack_spec.js +28 -0
  292. data/spec/javascripts/jax/core/utils_spec.js +256 -0
  293. data/spec/javascripts/jax/helper_spec.js +33 -0
  294. data/spec/javascripts/jax/model_spec.js +87 -0
  295. data/spec/javascripts/jax/optimizations/material_limitations_spec.js +87 -0
  296. data/spec/javascripts/jax/optimizations/shaders/basic_spec.js +68 -0
  297. data/spec/javascripts/jax/prototype/extensions_spec.js +34 -0
  298. data/spec/javascripts/jax/route_set_spec.js +67 -0
  299. data/spec/javascripts/jax/view_manager_spec.js +17 -0
  300. data/spec/javascripts/jax/webgl/camera_spec.js +159 -0
  301. data/spec/javascripts/jax/webgl/framebuffer_spec.js +46 -0
  302. data/spec/javascripts/jax/webgl/lighting_spec.js +61 -0
  303. data/spec/javascripts/jax/webgl/material_spec.js +118 -0
  304. data/spec/javascripts/jax/webgl/mesh_spec.js +86 -0
  305. data/spec/javascripts/jax/webgl/shader/manifest_spec.js +60 -0
  306. data/spec/javascripts/jax/webgl/shader_chain_spec.js +192 -0
  307. data/spec/javascripts/jax/webgl/shader_spec.js +276 -0
  308. data/spec/javascripts/jax/webgl/tangent_space_spec.js +142 -0
  309. data/spec/javascripts/jax/webgl/texture_spec.js +162 -0
  310. data/spec/javascripts/jax/webgl_spec.js +5 -0
  311. data/spec/javascripts/jax/world_spec.js +88 -0
  312. data/spec/javascripts/jax_spec.js +27 -0
  313. data/spec/javascripts/support/jasmine.yml +85 -0
  314. data/spec/javascripts/support/jasmine_runner.rb +32 -0
  315. data/spec/lib/jax/routes_spec.rb +24 -0
  316. data/spec/lib/jax/shader_spec.rb +57 -0
  317. data/spec/lib/jax/tasks/jax_rake_spec.rb +79 -0
  318. data/spec/spec_helper.rb +11 -0
  319. data/spec/support/file_exist_matcher.rb +23 -0
  320. data/spec/support/spec_shell.rb +97 -0
  321. data/src/jax.js +84 -0
  322. data/src/jax/anim_frame.js +47 -0
  323. data/src/jax/builtin/all.js +7 -0
  324. data/src/jax/builtin/meshes/cube.js +62 -0
  325. data/src/jax/builtin/meshes/plane.js +36 -0
  326. data/src/jax/builtin/meshes/quad.js +80 -0
  327. data/src/jax/builtin/meshes/sphere.js +46 -0
  328. data/src/jax/builtin/meshes/teapot.js +38 -0
  329. data/src/jax/builtin/meshes/torus.js +46 -0
  330. data/src/jax/compatibility.js +140 -0
  331. data/src/jax/context.js +253 -0
  332. data/src/jax/controller.js +157 -0
  333. data/src/jax/core.js +39 -0
  334. data/src/jax/core/math.js +40 -0
  335. data/src/jax/core/matrix_stack.js +306 -0
  336. data/src/jax/core/util.js +226 -0
  337. data/src/jax/events.js +179 -0
  338. data/src/jax/geometry.js +3 -0
  339. data/src/jax/geometry/plane.js +59 -0
  340. data/src/jax/helper.js +8 -0
  341. data/src/jax/model.js +163 -0
  342. data/src/jax/prototype/class.js +78 -0
  343. data/src/jax/prototype/core.js +112 -0
  344. data/src/jax/prototype/extensions.js +124 -0
  345. data/src/jax/route_set.js +125 -0
  346. data/src/jax/vendor/ejs.js +4 -0
  347. data/src/jax/vendor/glMatrix.js +3 -0
  348. data/src/jax/view.js +37 -0
  349. data/src/jax/view_manager.js +46 -0
  350. data/src/jax/webgl.js +98 -0
  351. data/src/jax/webgl/camera.js +526 -0
  352. data/src/jax/webgl/core.js +6 -0
  353. data/src/jax/webgl/core/buffer.js +161 -0
  354. data/src/jax/webgl/core/edge.js +6 -0
  355. data/src/jax/webgl/core/events.js +25 -0
  356. data/src/jax/webgl/core/face.js +8 -0
  357. data/src/jax/webgl/core/framebuffer.js +206 -0
  358. data/src/jax/webgl/material.js +375 -0
  359. data/src/jax/webgl/mesh.js +412 -0
  360. data/src/jax/webgl/scene.js +11 -0
  361. data/src/jax/webgl/scene/frustum.js +260 -0
  362. data/src/jax/webgl/scene/light_manager.js +112 -0
  363. data/src/jax/webgl/scene/light_source.js +248 -0
  364. data/src/jax/webgl/shader.js +282 -0
  365. data/src/jax/webgl/shader/delegator.js +13 -0
  366. data/src/jax/webgl/shader/delegator/attribute.js +53 -0
  367. data/src/jax/webgl/shader/delegator/uniform.js +71 -0
  368. data/src/jax/webgl/shader/manifest.js +64 -0
  369. data/src/jax/webgl/shader/program.js +140 -0
  370. data/src/jax/webgl/shader_chain.js +256 -0
  371. data/src/jax/webgl/texture.js +312 -0
  372. data/src/jax/webgl/world.js +119 -0
  373. data/vendor/ejs/.svn/all-wcprops +17 -0
  374. data/vendor/ejs/.svn/entries +114 -0
  375. data/vendor/ejs/.svn/text-base/Eratta.txt.svn-base +3 -0
  376. data/vendor/ejs/.svn/text-base/license.txt.svn-base +21 -0
  377. data/vendor/ejs/Eratta.txt +3 -0
  378. data/vendor/ejs/example/.svn/all-wcprops +29 -0
  379. data/vendor/ejs/example/.svn/entries +164 -0
  380. data/vendor/ejs/example/.svn/prop-base/ejs.gif.svn-base +5 -0
  381. data/vendor/ejs/example/.svn/text-base/demo.html.svn-base +54 -0
  382. data/vendor/ejs/example/.svn/text-base/ejs.gif.svn-base +0 -0
  383. data/vendor/ejs/example/.svn/text-base/example.css.svn-base +31 -0
  384. data/vendor/ejs/example/.svn/text-base/example.js.svn-base +88 -0
  385. data/vendor/ejs/example/demo.html +54 -0
  386. data/vendor/ejs/example/ejs.gif +0 -0
  387. data/vendor/ejs/example/example.css +31 -0
  388. data/vendor/ejs/example/example.js +88 -0
  389. data/vendor/ejs/lib/.svn/all-wcprops +11 -0
  390. data/vendor/ejs/lib/.svn/entries +62 -0
  391. data/vendor/ejs/lib/.svn/text-base/ejs_fulljslint.js.svn-base +3774 -0
  392. data/vendor/ejs/lib/ejs_fulljslint.js +3774 -0
  393. data/vendor/ejs/license.txt +21 -0
  394. data/vendor/ejs/script/.svn/all-wcprops +17 -0
  395. data/vendor/ejs/script/.svn/entries +96 -0
  396. data/vendor/ejs/script/.svn/prop-base/yuicompressor-2.2.4.jar.svn-base +5 -0
  397. data/vendor/ejs/script/.svn/text-base/production.bat.svn-base +4 -0
  398. data/vendor/ejs/script/.svn/text-base/yuicompressor-2.2.4.jar.svn-base +0 -0
  399. data/vendor/ejs/script/production.bat +4 -0
  400. data/vendor/ejs/script/yuicompressor-2.2.4.jar +0 -0
  401. data/vendor/ejs/src/.svn/all-wcprops +17 -0
  402. data/vendor/ejs/src/.svn/entries +96 -0
  403. data/vendor/ejs/src/.svn/text-base/ejs.js.svn-base +505 -0
  404. data/vendor/ejs/src/.svn/text-base/view.js.svn-base +200 -0
  405. data/vendor/ejs/src/ejs.js +505 -0
  406. data/vendor/ejs/src/view.js +200 -0
  407. data/vendor/ejs/test/.svn/all-wcprops +23 -0
  408. data/vendor/ejs/test/.svn/entries +139 -0
  409. data/vendor/ejs/test/.svn/text-base/index.html.svn-base +18 -0
  410. data/vendor/ejs/test/.svn/text-base/setup_test.html.svn-base +44 -0
  411. data/vendor/ejs/test/.svn/text-base/sidebar.html.svn-base +28 -0
  412. data/vendor/ejs/test/included/.svn/all-wcprops +23 -0
  413. data/vendor/ejs/test/included/.svn/entries +130 -0
  414. data/vendor/ejs/test/included/.svn/text-base/prototype.js.svn-base +4184 -0
  415. data/vendor/ejs/test/included/.svn/text-base/test.css.svn-base +44 -0
  416. data/vendor/ejs/test/included/.svn/text-base/unittest.js.svn-base +564 -0
  417. data/vendor/ejs/test/included/prototype.js +4184 -0
  418. data/vendor/ejs/test/included/test.css +44 -0
  419. data/vendor/ejs/test/included/unittest.js +564 -0
  420. data/vendor/ejs/test/index.html +18 -0
  421. data/vendor/ejs/test/setup_test.html +44 -0
  422. data/vendor/ejs/test/sidebar.html +28 -0
  423. data/vendor/ejs/test/templates/.svn/all-wcprops +11 -0
  424. data/vendor/ejs/test/templates/.svn/entries +62 -0
  425. data/vendor/ejs/test/templates/.svn/text-base/test.ejs.svn-base +3 -0
  426. data/vendor/ejs/test/templates/test.ejs +3 -0
  427. data/vendor/ejs/test/tests/.svn/all-wcprops +23 -0
  428. data/vendor/ejs/test/tests/.svn/entries +130 -0
  429. data/vendor/ejs/test/tests/.svn/text-base/rendering.js.svn-base +94 -0
  430. data/vendor/ejs/test/tests/.svn/text-base/templating.js.svn-base +43 -0
  431. data/vendor/ejs/test/tests/.svn/text-base/views.js.svn-base +100 -0
  432. data/vendor/ejs/test/tests/rendering.js +94 -0
  433. data/vendor/ejs/test/tests/templating.js +43 -0
  434. data/vendor/ejs/test/tests/views.js +100 -0
  435. data/vendor/glmatrix/benchmark/js/CanvasMatrix.js +722 -0
  436. data/vendor/glmatrix/benchmark/js/EWGL_math.js +742 -0
  437. data/vendor/glmatrix/benchmark/js/mjs.js +1230 -0
  438. data/vendor/glmatrix/benchmark/matrix_benchmark.html +419 -0
  439. data/vendor/glmatrix/glMatrix-min.js +32 -0
  440. data/vendor/glmatrix/glMatrix.js +1815 -0
  441. data/vendor/glmatrix/unit tests/glMatrix-test.js +74 -0
  442. data/vendor/glmatrix/unit tests/qunit.css +119 -0
  443. data/vendor/glmatrix/unit tests/qunit.js +1069 -0
  444. data/vendor/glmatrix/unit tests/test_glMatrix.html +21 -0
  445. data/vendor/yuicompressor-2.4.2.jar +0 -0
  446. metadata +748 -0
@@ -0,0 +1,50 @@
1
+ <% content_for :page_title do %>
2
+ Jax Guides
3
+ <% end %>
4
+
5
+ <% content_for :header_section do %>
6
+ <h2>Jax Guides</h2>
7
+
8
+ <p>
9
+ These guides are designed to make you immediately productive with Jax,
10
+ and to help you understand how all of the pieces fit together.
11
+ </p>
12
+ <% end %>
13
+
14
+ <% content_for :index_section do %>
15
+ <div id="subCol">
16
+ <dl>
17
+ <dd class="work-in-progress">Guides marked with this icon are currently being worked on. While they might still be useful to you, they may contain incomplete information and even errors. You can help by reviewing them and posting your comments and corrections to the author.</dd>
18
+ </dl>
19
+ </div>
20
+ <% end %>
21
+
22
+ <h3>Start Here</h3>
23
+
24
+ <dl>
25
+ <%= guide('Getting Started with Jax', 'getting_started.html', :work_in_progress => true) do %>
26
+ <p>Everything you need to know to install Jax and create your first application.</p>
27
+ <% end %>
28
+ </dl>
29
+
30
+ <h3>Digging Deeper</h3>
31
+
32
+ <dl>
33
+
34
+ <%= guide("Materials", 'materials.html', :work_in_progress => true) do %>
35
+ <p>This guide demonstrates how to create, use and dynamically alter Materials in Jax.</p>
36
+ <% end %>
37
+
38
+ <%= guide("Lighting", 'lighting.html', :work_in_progress => true) do %>
39
+ <p>This guide shows how to make the most of lighting support in Jax, and outlines potential caveats.</p>
40
+ <% end %>
41
+
42
+ <%= guide("Custom Shaders", 'shaders.html', :work_in_progress => true) do %>
43
+ <p>This guide shows how to add and use your own shaders to add advanced custom visual effects.</p>
44
+ <% end %>
45
+
46
+ <%= guide("Testing Jax Applications", 'testing.html', :work_in_progress => true) do %>
47
+ <p>This is a comprehensive guide to testing a Jax application. It covers everything from &quot;What is a test?&quot; to the testing APIs.</p>
48
+ <% end %>
49
+
50
+ </dl>
@@ -0,0 +1,158 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
+
8
+ <title><%= yield(:page_title) || 'Jax guides' %></title>
9
+
10
+ <link rel="stylesheet" type="text/css" href="stylesheets/style.css" />
11
+ <link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
12
+
13
+ <link rel="stylesheet" type="text/css" href="stylesheets/syntaxhighlighter/shCore.css" />
14
+ <link rel="stylesheet" type="text/css" href="stylesheets/syntaxhighlighter/shThemeJaxGuides.css" />
15
+
16
+ <link rel="stylesheet" type="text/css" href="stylesheets/fixes.css" />
17
+ </head>
18
+ <body class="guide">
19
+ <% if @edge %>
20
+ <div>
21
+ <img src="images/edge_badge.png" alt="edge-badge" id="edge-badge" />
22
+ </div>
23
+ <% end %>
24
+ <div id="topNav">
25
+ <div class="wrapper">
26
+ <strong>More at <a href="http://jaxgl.com">jaxgl.com:</a> </strong>
27
+ <a href="http://blog.jaxgl.com/what-is-jax">Overview</a> |
28
+ <!-- <a href="http://jaxgl.com/download">Download</a> | -->
29
+ <!-- <a href="http://jaxgl.com/deploy">Deploy</a> | -->
30
+ <a href="http://github.com/sinisterchipmunk/jax">Code</a> |
31
+ <!-- <a href="http://jaxgl.com/documentation">Documentation</a> | -->
32
+ <a href="http://blog.jaxgl.com/forum">Forums</a> |
33
+ <a href="http://blog.jaxgl.com/">Blog</a>
34
+ </div>
35
+ </div>
36
+ <!--
37
+ I want to use a similar index to below, once the Jax guides start to take shape:
38
+
39
+ <div id="header">
40
+ <div class="wrapper clearfix">
41
+ <h1><a href="index.html" title="Return to home page">Guides.jaxgl.com</a></h1>
42
+ <p class="hide"><a href="#mainCol">Skip navigation</a>.</p>
43
+ <ul class="nav">
44
+ <li><a href="index.html">Home</a></li>
45
+ <li class="index"><a href="index.html" onclick="guideMenu(); return false;" id="guidesMenu">Guides Index</a>
46
+ <div id="guides" class="clearfix" style="display: none;">
47
+ <hr />
48
+ <dl class="L">
49
+ <dt>Start Here</dt>
50
+ <dd><a href="getting_started.html">Getting Started with Rails</a></dd>
51
+ <dt>Models</dt>
52
+ <dd><a href="migrations.html">Rails Database Migrations</a></dd>
53
+ <dd><a href="active_record_validations_callbacks.html">Active Record Validations and Callbacks</a></dd>
54
+ <dd><a href="association_basics.html">Active Record Associations</a></dd>
55
+ <dd><a href="active_record_querying.html">Active Record Query Interface</a></dd>
56
+ <dt>Views</dt>
57
+ <dd><a href="layouts_and_rendering.html">Layouts and Rendering in Rails</a></dd>
58
+ <dd><a href="form_helpers.html">Action View Form Helpers</a></dd>
59
+ <dt>Controllers</dt>
60
+ <dd><a href="action_controller_overview.html">Action Controller Overview</a></dd>
61
+ <dd><a href="routing.html">Rails Routing from the Outside In</a></dd>
62
+ </dl>
63
+ <dl class="R">
64
+ <dt>Digging Deeper</dt>
65
+ <dd><a href="active_support_core_extensions.html">Active Support Core Extensions</a></dd>
66
+ <dd><a href="i18n.html">Rails Internationalization API</a></dd>
67
+ <dd><a href="action_mailer_basics.html">Action Mailer Basics</a></dd>
68
+ <dd><a href="testing.html">Testing Rails Applications</a></dd>
69
+ <dd><a href="security.html">Securing Rails Applications</a></dd>
70
+ <dd><a href="debugging_rails_applications.html">Debugging Rails Applications</a></dd>
71
+ <dd><a href="performance_testing.html">Performance Testing Rails Applications</a></dd>
72
+ <dd><a href="configuring.html">Configuring Rails Applications</a></dd>
73
+ <dd><a href="command_line.html">Rails Command Line Tools and Rake Tasks</a></dd>
74
+ <dd><a href="caching_with_rails.html">Caching with Rails</a></dd>
75
+
76
+ <dt>Extending Rails</dt>
77
+ <dd><a href="plugins.html">The Basics of Creating Rails Plugins</a></dd>
78
+ <dd><a href="rails_on_rack.html">Rails on Rack</a></dd>
79
+ <dd><a href="generators.html">Creating and Customizing Rails Generators</a></dd>
80
+
81
+ <dt>Contributing to Ruby on Rails</dt>
82
+ <dd><a href="contributing_to_ruby_on_rails.html">Contributing to Ruby on Rails</a></dd>
83
+ <dd><a href="api_documentation_guidelines.html">API Documentation Guidelines</a></dd>
84
+ <dd><a href="ruby_on_rails_guides_guidelines.html">Ruby on Rails Guides Guidelines</a></dd>
85
+
86
+ <dt>Release Notes</dt>
87
+ <dd><a href="3_0_release_notes.html">Ruby on Rails 3.0 Release Notes</a></dd>
88
+ <dd><a href="2_3_release_notes.html">Ruby on Rails 2.3 Release Notes</a></dd>
89
+ <dd><a href="2_2_release_notes.html">Ruby on Rails 2.2 Release Notes</a></dd>
90
+ </dl>
91
+ </div>
92
+ </li>
93
+ <li><a href="contribute.html">Contribute</a></li>
94
+ </ul>
95
+ </div>
96
+ </div>
97
+ -->
98
+ <hr class="hide" />
99
+
100
+ <div id="feature">
101
+ <div class="wrapper">
102
+ <%= yield :header_section %>
103
+
104
+ <%= yield :index_section %>
105
+ </div>
106
+ </div>
107
+
108
+ <div id="container">
109
+ <div class="wrapper">
110
+ <div id="mainCol">
111
+ <%= yield.html_safe %>
112
+
113
+ <h3>Feedback</h3>
114
+ <p>
115
+ You're encouraged to help improve the quality of this guide.
116
+ </p>
117
+ <p>
118
+ If you see any typos or factual errors you are confident to
119
+ patch, please clone <%= link_to 'Jax', 'https://github.com/sinisterchipmunk/jax' %>,
120
+ correct the issue and send a pull request.
121
+ Your commits will be reviewed, and then merged into master.
122
+ </p>
123
+ <!--
124
+ <p>
125
+ You may also find incomplete content, or stuff that is not up to date.
126
+ Please do add any missing documentation for master. Check the
127
+ <%= link_to 'Jax Guides Guidelines', 'jax_guides_guidelines.html' %>
128
+ for style and conventions.
129
+ </p>
130
+ -->
131
+ <p>
132
+ Also, any kind of discussion regarding Jax documentation is
133
+ very welcome in the <%= link_to 'forums', 'http://blog.jaxgl.com/forum' %>.
134
+ </p>
135
+ </div>
136
+ </div>
137
+ </div>
138
+
139
+ <hr class="hide" />
140
+ <div id="footer">
141
+ <div class="wrapper">
142
+ <p>This work is licensed under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-Share Alike 3.0</a> License</p>
143
+ </div>
144
+ </div>
145
+
146
+ <script type="text/javascript" src="javascripts/guides.js"></script>
147
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shCore.js"></script>
148
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushRuby.js"></script>
149
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushXml.js"></script>
150
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushCss.js"></script>
151
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushCpp.js"></script>
152
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushJScript.js"></script>
153
+ <script type="text/javascript" src="javascripts/syntaxhighlighter/shBrushPlain.js"></script>
154
+ <script type="text/javascript">
155
+ SyntaxHighlighter.all()
156
+ </script>
157
+ </body>
158
+ </html>
@@ -0,0 +1,5 @@
1
+ h2. This Guide Not Yet Started
2
+
3
+ Please come back after I've had time to work on this guide a bit.
4
+
5
+ endprologue.
@@ -0,0 +1,5 @@
1
+ h2. This Guide Not Yet Started
2
+
3
+ Please come back after I've had time to work on this guide a bit.
4
+
5
+ endprologue.
@@ -0,0 +1,5 @@
1
+ h2. This Guide Not Yet Started
2
+
3
+ Please come back after I've had time to work on this guide a bit.
4
+
5
+ endprologue.
@@ -0,0 +1,5 @@
1
+ h2. This Guide Not Yet Started
2
+
3
+ Please come back after I've had time to work on this guide a bit.
4
+
5
+ endprologue.
@@ -0,0 +1,91 @@
1
+ # ---------------------------------------------------------------------------
2
+ #
3
+ # This script validates the generated guides against the W3C Validator.
4
+ #
5
+ # Guides are taken from the output directory, from where all .html files are
6
+ # submitted to the validator.
7
+ #
8
+ # This script is prepared to be launched from the railties directory as a rake task:
9
+ #
10
+ # rake validate_guides
11
+ #
12
+ # If nothing is specified, all files will be validated, but you can check just
13
+ # some of them using this environment variable:
14
+ #
15
+ # ONLY
16
+ # Use ONLY if you want to validate only one or a set of guides. Prefixes are
17
+ # enough:
18
+ #
19
+ # # validates only association_basics.html
20
+ # ONLY=assoc rake validate_guides
21
+ #
22
+ # Separate many using commas:
23
+ #
24
+ # # validates only association_basics.html and migrations.html
25
+ # ONLY=assoc,migrations rake validate_guides
26
+ #
27
+ # ---------------------------------------------------------------------------
28
+
29
+ require 'rubygems'
30
+ require 'w3c_validators'
31
+ include W3CValidators
32
+
33
+ module JaxGuides
34
+ class Validator
35
+
36
+ def validate
37
+ validator = MarkupValidator.new
38
+ STDOUT.sync = true
39
+ errors_on_guides = {}
40
+
41
+ guides_to_validate.each do |f|
42
+ results = validator.validate_file(f)
43
+
44
+ if results.validity
45
+ print "."
46
+ else
47
+ print "E"
48
+ errors_on_guides[f] = results.errors
49
+ end
50
+ end
51
+
52
+ show_results(errors_on_guides)
53
+ end
54
+
55
+ private
56
+ def guides_to_validate
57
+ guides = Dir["./guides/output/*.html"]
58
+ guides.delete("./guides/output/layout.html")
59
+ ENV.key?('ONLY') ? select_only(guides) : guides
60
+ end
61
+
62
+ def select_only(guides)
63
+ prefixes = ENV['ONLY'].split(",").map(&:strip)
64
+ guides.select do |guide|
65
+ prefixes.any? {|p| guide.start_with?("./guides/output/#{p}")}
66
+ end
67
+ end
68
+
69
+ def show_results(error_list)
70
+ if error_list.size == 0
71
+ puts "\n\nAll checked guides validate OK!"
72
+ else
73
+ error_summary = error_detail = ""
74
+
75
+ error_list.each_pair do |name, errors|
76
+ error_summary += "\n #{name}"
77
+ error_detail += "\n\n #{name} has #{errors.size} validation error(s):\n"
78
+ errors.each do |error|
79
+ error_detail += "\n "+error.to_s.gsub("\n", "")
80
+ end
81
+ end
82
+
83
+ puts "\n\nThere are #{error_list.size} guides with validation errors:\n" + error_summary
84
+ puts "\nHere are the detailed errors for each guide:" + error_detail
85
+ end
86
+ end
87
+
88
+ end
89
+ end
90
+
91
+ JaxGuides::Validator.new.validate
@@ -0,0 +1 @@
1
+ bundler -v1.0.10
@@ -0,0 +1,40 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "jax/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "jax"
7
+ s.version = Jax::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Colin MacKenzie IV"]
10
+ s.email = ["sinisterchipmunk@gmail.com"]
11
+ s.homepage = "http://jaxgl.com"
12
+ s.summary = %q{Framework for creating rich WebGL-enabled applications using JavaScript and Ruby}
13
+ s.description = %q{Framework for creating rich WebGL-enabled applications using JavaScript and Ruby}
14
+
15
+ s.add_dependency 'bundler', '~> 1.0.10'
16
+ s.add_dependency "thor", '~> 0.14.6'
17
+ s.add_dependency 'jasmine', '~> 1.0.2.0'
18
+ s.add_dependency 'activesupport', '~> 3.0'
19
+ s.add_dependency "i18n", '~> 0.5.0' # FIXME Jax doesn't really require this but ActiveSupport won't load without it!
20
+ s.add_dependency 'sprockets', '~> 1.0.2'
21
+
22
+ s.add_development_dependency 'rspec', '~> 2.0'
23
+ s.add_development_dependency 'coderay', '~> 0.9.7'
24
+
25
+ # required by guides
26
+ s.add_development_dependency 'actionpack', '~> 3.0'
27
+ s.add_development_dependency 'RedCloth', '~> 4.2'
28
+ s.add_development_dependency 'w3c_validators', '~> 1.1.1'
29
+
30
+ # required by pdoc
31
+ s.add_development_dependency 'treetop', '~> 1.4.9'
32
+ s.add_development_dependency 'bluecloth', '~> 2.0.11'
33
+
34
+ s.rubyforge_project = "jax"
35
+
36
+ s.files = `git ls-files`.split("\n")
37
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
38
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
39
+ s.require_paths = ["lib"]
40
+ end
@@ -0,0 +1,28 @@
1
+ module Jax
2
+ autoload :Generators, File.join(File.dirname(__FILE__), "jax/generators/commands")
3
+ autoload :VERSION, File.join(File.dirname(__FILE__), "jax/version")
4
+ autoload :Version, File.join(File.dirname(__FILE__), "jax/version")
5
+ autoload :Application, File.join(File.dirname(__FILE__), "jax/application")
6
+ autoload :Packager, File.join(File.dirname(__FILE__), "jax/packager")
7
+ autoload :ResourceCompiler, File.join(File.dirname(__FILE__), "jax/resource_compiler")
8
+ autoload :Routes, File.join(File.dirname(__FILE__), "jax/routes")
9
+ autoload :Shader, File.join(File.dirname(__FILE__), "jax/shader")
10
+
11
+ class << self
12
+ def application
13
+ @application ||= nil
14
+ end
15
+
16
+ def application=(application)
17
+ @application = application
18
+ end
19
+
20
+ def root
21
+ application && application.root
22
+ end
23
+ end
24
+ end
25
+
26
+ if defined?(APP_PATH) && Jax.application.nil?
27
+ require APP_PATH
28
+ end
@@ -0,0 +1,92 @@
1
+ require "active_support/core_ext"
2
+
3
+ module Jax
4
+ class Application
5
+ autoload :Configuration, "jax/application/configuration"
6
+
7
+ class << self
8
+ def inherited(base)
9
+ raise "You cannot have more than one Jax::Application" if Jax.application
10
+ super
11
+
12
+ base.called_from = begin
13
+ # Remove the line number from backtraces making sure we don't leave anything behind
14
+ call_stack = caller.map { |p| p.sub(/:\d+.*/, '') }
15
+ File.dirname(call_stack.detect { |p| p !~ %r[jax[\w.-]*/lib/jax] })
16
+ end
17
+
18
+ Jax.application = base.instance
19
+ Jax.application.config.root ||= Jax.application.find_root_with_flag("app")
20
+ end
21
+
22
+ def config
23
+ @config ||= Jax::Application::Configuration.new
24
+ end
25
+
26
+ def instance
27
+ @instance ||= new
28
+ end
29
+
30
+ def called_from
31
+ @called_from ||= nil
32
+ end
33
+
34
+ def called_from=(where)
35
+ @called_from = where
36
+ end
37
+
38
+ def routes
39
+ Jax.application.config.routes
40
+ end
41
+ end
42
+
43
+ delegate :config, :to => "self.class"
44
+ delegate :root, :to => :config
45
+ delegate :routes, :to => :config
46
+
47
+ def shaders
48
+ # @shaders ||= begin
49
+ shaders = []
50
+
51
+ shader_paths.each do |name, path|
52
+ shaders << Jax::Shader.from(path)
53
+ end
54
+
55
+ def shaders.find(name)
56
+ select { |s| s.name == name }.first
57
+ end
58
+
59
+ shaders
60
+ # end
61
+ end
62
+
63
+ def shader_paths
64
+ shader_paths = {}
65
+ config.shader_load_paths.each do |path|
66
+ full_path = File.directory?(path) ? path : File.expand_path(path, config.root)
67
+ glob = File.join(full_path, "*/{fragment,vertex}.ejs")
68
+ Dir[glob].each do |dir|
69
+ shader_base = File.dirname(dir)
70
+ shader_name = File.basename(shader_base)
71
+ shader_paths[shader_name] = shader_base
72
+ end
73
+ end
74
+ shader_paths
75
+ end
76
+
77
+ def find_root_with_flag(flag, default=nil)
78
+ root_path = self.class.called_from
79
+
80
+ while root_path && File.directory?(root_path) && !File.exist?("#{root_path}/#{flag}")
81
+ parent = File.dirname(root_path)
82
+ root_path = parent != root_path && parent
83
+ end
84
+
85
+ root = File.exist?("#{root_path}/#{flag}") ? root_path : default
86
+ raise "Could not find root path for #{self}" unless root
87
+
88
+ RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ ?
89
+ Pathname.new(root).expand_path : Pathname.new(root).realpath
90
+ end
91
+ end
92
+ end