epall-limelight 0.5.0-java

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 (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,53 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/styles'
6
+
7
+ describe Limelight::Styles do
8
+
9
+ def const_format(name)
10
+ return name.gsub(" ", "")
11
+ end
12
+
13
+ def method_format(name)
14
+ return name.downcase.gsub(" ", "_")
15
+ end
16
+
17
+ it "should have all the styles" do
18
+ Limelight::Styles::Style::STYLE_LIST.each do |descriptor|
19
+ const_name = const_format(descriptor.name)
20
+ Limelight::Styles.const_get(const_name)
21
+ end
22
+ end
23
+
24
+ # it "should generate code" do
25
+ # Limelight::Styles::Style::STYLE_LIST.each do |descriptor|
26
+ # const_name = const_format(descriptor.name)
27
+ # method_name = method_format(descriptor.name)
28
+ # spaces = 40 - const_name.length
29
+ # puts "# Specifies the #{descriptor.name} of a prop."
30
+ # puts "#"
31
+ # puts "# style.#{method_name} = <value>"
32
+ # puts "#"
33
+ # puts "#{const_name} #{'' * spaces} = Limelight::Styles::Style::STYLE_LIST.get(#{descriptor.index})"
34
+ # puts ""
35
+ # end
36
+ # end
37
+
38
+ # it "should generate code" do
39
+ # Limelight::Styles::Style::STYLE_LIST.each do |descriptor|
40
+ # const_name = const_format(descriptor.name)
41
+ # method_name = method_format(descriptor.name)
42
+ # spaces = 40 - const_name.length
43
+ # puts "<tr>"
44
+ # puts "\t<td>'''#{method_name}'''</td>"
45
+ # puts "\t<td></td>"
46
+ # puts "\t<td>#{descriptor.defaultValue}</td>"
47
+ # puts "\t<td></td>"
48
+ # puts "</tr>"
49
+ # end
50
+ # end
51
+
52
+
53
+ end
@@ -0,0 +1,66 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/templates/production_templater'
6
+
7
+ describe Limelight::Templates::ProductionTemplater do
8
+
9
+ it "should initialize settings" do
10
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "some_production", :scene_path => "default_scene", :spec_path => "spec")
11
+
12
+ templater.target_root.should == "."
13
+ templater.source_root.should == Limelight::Templates::Templater.source_dir
14
+ templater.tokens[:PRODUCTION_NAME].should == "Some Production"
15
+ templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
16
+ end
17
+
18
+ it "should initialize settings for deep dir name" do
19
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "dir1/dir2/some_production", :scene_path => "default_scene", :spec_path => "spec")
20
+
21
+ templater.target_root.should == "./dir1/dir2"
22
+ templater.source_root.should == Limelight::Templates::Templater.source_dir
23
+ templater.tokens[:PRODUCTION_NAME].should == "Some Production"
24
+ templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
25
+ end
26
+
27
+ it "should initialize settings for root path" do
28
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "/some_production", :scene_path => "default_scene", :spec_path => "spec")
29
+
30
+ templater.target_root.should == "/"
31
+ templater.source_root.should == Limelight::Templates::Templater.source_dir
32
+ templater.tokens[:PRODUCTION_NAME].should == "Some Production"
33
+ templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
34
+ end
35
+
36
+ it "should generate files" do
37
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "some_production", :scene_path => "default_scene", :spec_path => "spec")
38
+
39
+ templater.should_receive(:file).with("some_production/production.rb", "production/production.rb.template", templater.tokens)
40
+ templater.should_receive(:file).with("some_production/stages.rb", "production/stages.rb.template", templater.tokens)
41
+ templater.should_receive(:file).with("some_production/styles.rb", "production/styles.rb.template", templater.tokens)
42
+ templater.should_receive(:file).with("some_production/spec/spec_helper.rb", "production/spec/spec_helper.rb.template", templater.tokens)
43
+
44
+ templater.generate
45
+ end
46
+
47
+ it "should generate files with different paths" do
48
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "some_production", :scene_path => "default_scene", :spec_path => "../spec")
49
+
50
+ templater.should_receive(:file).with("some_production/production.rb", "production/production.rb.template", templater.tokens)
51
+ templater.should_receive(:file).with("some_production/stages.rb", "production/stages.rb.template", templater.tokens)
52
+ templater.should_receive(:file).with("some_production/styles.rb", "production/styles.rb.template", templater.tokens)
53
+ templater.should_receive(:file).with("some_production/../spec/spec_helper.rb", "production/spec/spec_helper.rb.template", templater.tokens)
54
+
55
+ templater.generate
56
+ end
57
+
58
+ it "should have tokens" do
59
+ templater = Limelight::Templates::ProductionTemplater.new(:production_path => "some_production", :scene_path => "default_scene", :spec_path => "spec")
60
+
61
+ templater.tokens[:PRODUCTION_NAME].should == "Some Production"
62
+ templater.tokens[:DEFAULT_SCENE_NAME].should == "default_scene"
63
+ templater.tokens[:CURRENT_VERSION].should == Limelight::VERSION::STRING
64
+ end
65
+
66
+ end
@@ -0,0 +1,51 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/templates/scene_templater'
6
+
7
+ describe Limelight::Templates::SceneTemplater do
8
+
9
+ it "should initialize" do
10
+ templater = Limelight::Templates::SceneTemplater.new(:production_path => "prod", :scene_path => "some_scene", :spec_path => "spec")
11
+
12
+ templater.target_root.should == "./prod"
13
+ templater.source_root.should == Limelight::Templates::Templater.source_dir
14
+ templater.tokens[:SCENE_NAME].should == "some_scene"
15
+ templater.tokens[:SCENE_TITLE].should == "Some Scene"
16
+ end
17
+
18
+ it "should generate files" do
19
+ templater = Limelight::Templates::SceneTemplater.new(:production_path => "prod", :scene_path => "some_scene", :spec_path => "spec")
20
+
21
+ templater.should_receive(:file).with("some_scene/props.rb", "scene/props.rb.template", templater.tokens)
22
+ templater.should_receive(:file).with("some_scene/styles.rb", "scene/styles.rb.template", templater.tokens)
23
+ templater.should_receive(:directory).with("some_scene/players")
24
+ templater.should_receive(:file).with("spec/some_scene/some_scene_spec.rb", "scene_spec/scene_spec.rb.template", templater.tokens)
25
+
26
+ templater.generate
27
+ end
28
+
29
+ it "should generate files for a nested scene" do
30
+ templater = Limelight::Templates::SceneTemplater.new(:production_path => "prod", :scene_path => "nested/some_scene", :spec_path => "spec")
31
+
32
+ templater.should_receive(:file).with("nested/some_scene/props.rb", "scene/props.rb.template", templater.tokens)
33
+ templater.should_receive(:file).with("nested/some_scene/styles.rb", "scene/styles.rb.template", templater.tokens)
34
+ templater.should_receive(:directory).with("nested/some_scene/players")
35
+ templater.should_receive(:file).with("spec/nested/some_scene/some_scene_spec.rb", "scene_spec/scene_spec.rb.template", templater.tokens)
36
+
37
+ templater.generate
38
+ end
39
+
40
+ it "should generate files" do
41
+ templater = Limelight::Templates::SceneTemplater.new(:production_path => "prod", :scene_path => "some_scene", :spec_path => "../spec")
42
+
43
+ templater.should_receive(:file).with("some_scene/props.rb", "scene/props.rb.template", templater.tokens)
44
+ templater.should_receive(:file).with("some_scene/styles.rb", "scene/styles.rb.template", templater.tokens)
45
+ templater.should_receive(:directory).with("some_scene/players")
46
+ templater.should_receive(:file).with("../spec/some_scene/some_scene_spec.rb", "scene_spec/scene_spec.rb.template", templater.tokens)
47
+
48
+ templater.generate
49
+ end
50
+
51
+ end
@@ -0,0 +1,41 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/templates/templater_logger'
6
+
7
+ describe Limelight::Templates::TemplaterLogger do
8
+
9
+ before(:each) do
10
+ @logger = Limelight::Templates::TemplaterLogger.new
11
+ @in, @out = IO.pipe
12
+ @logger.output = @out
13
+ end
14
+
15
+ it "should have standard out as output" do
16
+ @logger = Limelight::Templates::TemplaterLogger.new
17
+ @logger.output.should == STDOUT
18
+ end
19
+
20
+ it "should handle creating directories" do
21
+ @logger.creating_directory("dir1")
22
+
23
+ result = @in.readline
24
+ result.strip.should == "creating directory: dir1"
25
+ end
26
+
27
+ it "should handle creating files" do
28
+ @logger.creating_file("file1")
29
+
30
+ result = @in.readline
31
+ result.strip.should == "creating file: file1"
32
+ end
33
+
34
+ it "should handle file already exists" do
35
+ @logger.file_already_exists("file1")
36
+
37
+ result = @in.readline
38
+ result.strip.should == "file already exists: file1"
39
+ end
40
+
41
+ end
@@ -0,0 +1,107 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/templates/templater'
6
+
7
+ describe Limelight::Templates::Templater do
8
+
9
+ before(:each) do
10
+ TestDir.clean
11
+ @src_dir = File.join(TestDir.root, "src")
12
+ @logger = make_mock("logger")
13
+ @templater = Limelight::Templates::Templater.new(TestDir.root, @src_dir)
14
+ @templater.logger = @logger
15
+ end
16
+
17
+ it "should have a templater logger" do
18
+ @templater = Limelight::Templates::Templater.new(TestDir.root, @src_dir)
19
+ @templater.logger.should_not == nil
20
+ @templater.logger.class.should == Limelight::Templates::TemplaterLogger
21
+ end
22
+
23
+ it "should have a target root and source root directory" do
24
+ @templater.target_root.should == TestDir.root
25
+ @templater.source_root.should == @src_dir
26
+ end
27
+
28
+ it "should prefix target root with dot if not absolute" do
29
+ Limelight::Templates::Templater.clarify("blah").should == "./blah"
30
+ Limelight::Templates::Templater.clarify("one/two").should == "./one/two"
31
+ Limelight::Templates::Templater.clarify("/root").should == "/root"
32
+ Limelight::Templates::Templater.clarify("./blah").should == "./blah"
33
+ Limelight::Templates::Templater.clarify("../blah").should == "../blah"
34
+ end
35
+
36
+ it "should create a directory" do
37
+ @logger.should_receive(:creating_directory).with("#{TestDir.root}/blah")
38
+
39
+ @templater.directory "blah"
40
+
41
+ File.exists?(File.join(TestDir.root, "blah")).should == true
42
+ end
43
+
44
+ it "should create nested directories" do
45
+ @logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1")
46
+ @logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1/dir2")
47
+
48
+ @templater.directory "dir1/dir2"
49
+
50
+ File.exists?(File.join(TestDir.root, "dir1/dir2")).should == true
51
+ end
52
+
53
+ it "should create files from source" do
54
+ TestDir.create_file("src/file1.txt", "blah")
55
+ @logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
56
+
57
+ @templater.file "f1.txt", "file1.txt"
58
+
59
+ File.exists?(File.join(TestDir.root, "f1.txt")).should == true
60
+ IO.read(File.join(TestDir.root, "f1.txt")).should == "blah"
61
+ end
62
+
63
+ it "should create files nested in directories" do
64
+ TestDir.create_file("src/file1.txt", "blah")
65
+
66
+ @logger.should_receive(:creating_directory).with("#{TestDir.root}/dir1")
67
+ @logger.should_receive(:creating_file).with("#{TestDir.root}/dir1/f1.txt")
68
+
69
+ @templater.file "dir1/f1.txt", "file1.txt"
70
+
71
+ path = File.join(TestDir.root, "dir1", "f1.txt")
72
+ File.exists?(path).should == true
73
+ IO.read(path).should == "blah"
74
+ end
75
+
76
+ it "should skip files that already exist" do
77
+ TestDir.create_file("src/file1.txt", "blah")
78
+ TestDir.create_file("f1.txt", "existing content")
79
+
80
+ @logger.should_receive(:file_already_exists).with("#{TestDir.root}/f1.txt")
81
+
82
+ @templater.file "f1.txt", "file1.txt"
83
+
84
+ IO.read(File.join(TestDir.root, "f1.txt")).should == "existing content"
85
+ end
86
+
87
+ it "should replace one token in files" do
88
+ TestDir.create_file("src/file1.txt", "abc !-TOKEN1-! 123")
89
+ @logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
90
+
91
+ @templater.file "f1.txt", "file1.txt", :TOKEN1 => "you know me"
92
+
93
+ File.exists?(File.join(TestDir.root, "f1.txt")).should == true
94
+ IO.read(File.join(TestDir.root, "f1.txt")).should == "abc you know me 123"
95
+ end
96
+
97
+ it "should replace multiple tokens in files" do
98
+ TestDir.create_file("src/file1.txt", "!-TOKEN0-! !-TOKEN1-! !-TOKEN2-!")
99
+ @logger.should_receive(:creating_file).with("#{TestDir.root}/f1.txt")
100
+
101
+ @templater.file "f1.txt", "file1.txt", :TOKEN0 => "1", :TOKEN1 => "2", :TOKEN2 => "3"
102
+
103
+ File.exists?(File.join(TestDir.root, "f1.txt")).should == true
104
+ IO.read(File.join(TestDir.root, "f1.txt")).should == "1 2 3"
105
+ end
106
+
107
+ end
@@ -0,0 +1,72 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/theater'
6
+ require 'limelight/stage'
7
+
8
+ describe Limelight::Theater do
9
+
10
+ before(:each) do
11
+ @theater = Limelight::Theater.new
12
+ @stage = @theater.add_stage("default")
13
+ end
14
+
15
+ it "should allow adding of stages" do
16
+ @theater.stages.length.should == 1
17
+ @theater.stages[0].should == @stage
18
+
19
+ @stage.theater.should == @theater
20
+ @stage.name.should == "default"
21
+ end
22
+
23
+ it "should not return the actual_list of stages" do
24
+ @theater.stages.should_not be(@theater.stages)
25
+ end
26
+
27
+ it "should know it's active stage" do
28
+ stage2 = @theater.add_stage("two")
29
+
30
+ @theater.active_stage.should == nil
31
+ @theater.stage_activated(stage2)
32
+ @theater.active_stage.should == stage2
33
+ @theater.stage_activated(@stage)
34
+ @theater.active_stage.should == @stage
35
+ end
36
+
37
+ it "should allow recalling stage by name" do
38
+ stage2 = @theater.add_stage("two")
39
+ stage3 = @theater.add_stage("three")
40
+
41
+ @theater["default"].should == @stage
42
+ @theater["two"].should == stage2
43
+ @theater["three"].should == stage3
44
+ end
45
+
46
+ it "should not allow duplicate theater names" do
47
+ lambda { @theater.add_stage("default") }.should raise_error(Limelight::LimelightException, "Duplicate stage name: 'default'")
48
+ end
49
+
50
+ it "should have a default stage" do
51
+ @theater.default_stage.name.should == "Limelight"
52
+ @theater.default_stage.theater.should == @theater
53
+
54
+ @theater.default_stage.should be(@theater.default_stage)
55
+ end
56
+
57
+ it "should construct stages with options" do
58
+ @theater.add_stage("Joe", :title => "Blowey")
59
+
60
+ @theater["Joe"].title.should == "Blowey"
61
+ end
62
+
63
+ it "should remove closed stages" do
64
+ @theater.stage_activated(@stage)
65
+
66
+ @theater.stage_closed(@stage)
67
+
68
+ @theater["default"].should == nil
69
+ @theater.active_stage.should == nil
70
+ end
71
+
72
+ end
@@ -0,0 +1,92 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
5
+ require 'limelight/util/downloader'
6
+
7
+ describe Limelight::Util::Downloader do
8
+
9
+ before(:each) do
10
+ Limelight::Data.stub!(:root).and_return(File.expand_path(File.join(TestDir.root, "Limelight")))
11
+ @downloader = Limelight::Util::Downloader.new
12
+ end
13
+
14
+ after(:each) do
15
+ TestDir.clean
16
+ end
17
+
18
+ it "should download a local file with the file protocol" do
19
+ test_file = TestDir.create_file("test_dir/test_file.txt", "a test file")
20
+
21
+ path = @downloader.download("file://#{test_file}")
22
+
23
+ File.basename(path).should == "test_file.txt"
24
+ File.dirname(path).should == Limelight::Data.downloads_dir
25
+ File.exists?(path).should == true
26
+ IO.read(path).should == "a test file"
27
+ end
28
+
29
+ it "should be find unique filenames" do
30
+ test_file = TestDir.create_file("test_dir/test_file.txt", "a test file")
31
+
32
+ path1 = @downloader.download("file://#{test_file}")
33
+ path2 = @downloader.download("file://#{test_file}")
34
+ path3 = @downloader.download("file://#{test_file}")
35
+
36
+ File.basename(path1).should == "test_file.txt"
37
+ File.basename(path2).should == "test_file_2.txt"
38
+ File.basename(path3).should == "test_file_3.txt"
39
+ end
40
+
41
+ it "should raise not found exception whe bad URLs" do
42
+ test_file = TestDir.path("test_dir/test_file.txt")
43
+
44
+ lambda { @downloader.download("file://#{test_file}") }.should raise_error(Limelight::LimelightException, "Download failed. Not found: #{test_file}")
45
+ end
46
+
47
+ it "should raise error on failed download" do
48
+ lambda { @downloader.download("http://blah.blah/blah.blah") }.should raise_error(Limelight::LimelightException)
49
+
50
+ path = File.join(Limelight::Data.downloads_dir, "blah.blah")
51
+ File.exists?(path).should == false
52
+ end
53
+
54
+ # The following tests should not run as part of the normal suite. They are expensive and require the net.
55
+
56
+ # it "should downaload via HTTP" do
57
+ # path = @downloader.download("http://limelight.8thlight.com/images/logo.png")
58
+ #
59
+ # File.basename(path).should == "logo.png"
60
+ # File.dirname(path).should == Limelight::Data.downloads_dir
61
+ # File.exists?(path).should == true
62
+ # end
63
+ #
64
+ # it "should handle 404s from HTTP" do
65
+ # url = "http://limelight.8thlight.com/blah.blah"
66
+ # lambda { @downloader.download(url) }.should raise_error(Limelight::LimelightException, "Download failed. 404: Not Found")
67
+ #
68
+ # path = File.join(Limelight::Data.downloads_dir, "blah.blah")
69
+ # File.exists?(path).should == false
70
+ # end
71
+ #
72
+ # it "should downaload via HTTPS" do
73
+ # path = @downloader.download("https://www.8thlight.com/images/header.jpg")
74
+ #
75
+ # File.basename(path).should == "header.jpg"
76
+ # File.dirname(path).should == Limelight::Data.downloads_dir
77
+ # File.exists?(path).should == true
78
+ # end
79
+ #
80
+ # it "should know how to get the filename from Content-Disposition" do
81
+ # path = @downloader.download("http://localhost:3000/playbills/1.llp")
82
+ #
83
+ # File.basename(path).should == "simon.llp"
84
+ # end
85
+ #
86
+ # it "should handle HTTP redirects" do
87
+ # path = @downloader.download("http://rubyforge.org/frs/download.php/37521/limelight-0.0.1-java.gem")
88
+ #
89
+ # File.basename(path).should == "limelight-0.0.1-java.gem"
90
+ # end
91
+
92
+ end