limelight 0.5.2-java → 0.5.4-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.
- data/lib/limelight.jar +0 -0
- data/lib/limelight/commands/command.rb +1 -1
- data/lib/limelight/commands/open_command.rb +3 -3
- data/lib/limelight/limelight_init.rb +1 -1
- data/lib/limelight/producer.rb +22 -9
- data/lib/limelight/production.rb +8 -1
- data/lib/limelight/specs/spec_helper.rb +51 -2
- data/lib/limelight/specs/test_scene_opener.rb +1 -1
- data/lib/limelight/stage.rb +1 -1
- data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +1 -1
- data/lib/limelight/theater.rb +15 -8
- data/lib/limelight/version.rb +1 -1
- data/spec/limelight/commands/open_command_spec.rb +1 -1
- data/spec/limelight/producer_spec.rb +19 -2
- data/spec/limelight/production_spec.rb +6 -1
- metadata +3 -4
- data/spec/limelight/styles_spec.rb +0 -53
data/lib/limelight.jar
CHANGED
Binary file
|
@@ -12,7 +12,7 @@ module Limelight
|
|
12
12
|
# Open a limelight production.
|
13
13
|
# options:
|
14
14
|
# -h, --help Prints this usage summary.
|
15
|
-
# -d, --drb_port=<port> Publish
|
15
|
+
# -d, --drb_port=<port> Publish productions using DRb starting with specified port.
|
16
16
|
#
|
17
17
|
class OpenCommand < Command
|
18
18
|
|
@@ -42,7 +42,7 @@ module Limelight
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def build_options(spec) #:nodoc:
|
45
|
-
spec.on("-d <port>", "--drb_port=<port>", "Publish
|
45
|
+
spec.on("-d <port>", "--drb_port=<port>", "Publish productions using DRb starting with specified port.") { |value| @drb_port = value }
|
46
46
|
end
|
47
47
|
|
48
48
|
def parse_remainder(args)
|
@@ -50,7 +50,7 @@ module Limelight
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def process
|
53
|
-
Context.instance.studio.
|
53
|
+
Context.instance.studio.publish_productions_on_drb(@drb_port.to_i) if @drb_port
|
54
54
|
Context.instance.studio.open(@production_path)
|
55
55
|
end
|
56
56
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
4
|
$LIMELIGHT_LIB = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
5
|
-
|
5
|
+
$:.unshift $LIMELIGHT_LIB unless $:.include?($LIMELIGHT_LIB)
|
6
6
|
$LIMELIGHT_HOME = File.expand_path(File.join($LIMELIGHT_LIB, ".."))
|
7
7
|
|
8
8
|
if Java::java.lang.System.getProperty("limelight.home").nil?
|
data/lib/limelight/producer.rb
CHANGED
@@ -13,11 +13,13 @@ require 'limelight/production'
|
|
13
13
|
require 'limelight/gems'
|
14
14
|
require 'limelight/util/downloader'
|
15
15
|
require 'limelight/version'
|
16
|
+
require 'drb'
|
16
17
|
|
17
18
|
module Limelight
|
18
19
|
|
19
20
|
# A Producer has the hefty responsibility of producing Productions. Given a directory, it will load the neccessary
|
20
|
-
# files and create all the neccessary objects to bring a Production to life.
|
21
|
+
# files and create all the neccessary objects to bring a Production to life. A producer will produce only
|
22
|
+
# one production.
|
21
23
|
#
|
22
24
|
# For directory structures, see Limelight::Main
|
23
25
|
#
|
@@ -47,7 +49,7 @@ module Limelight
|
|
47
49
|
end
|
48
50
|
end
|
49
51
|
|
50
|
-
attr_reader :theater, :production
|
52
|
+
attr_reader :theater, :production, :drb_service
|
51
53
|
attr_writer :builtin_styles
|
52
54
|
|
53
55
|
# A Production name, or root directory, must be provided. If not Theater is provided, one will be created.
|
@@ -174,16 +176,17 @@ module Limelight
|
|
174
176
|
# to keep the production aware of it's status. The Studio will also be informed of the closure. If no
|
175
177
|
# production remain opened, then the Limelight runtine will exit.
|
176
178
|
#
|
177
|
-
def close
|
178
|
-
return if production.closed?
|
179
|
-
production.closed = true
|
179
|
+
def close
|
180
|
+
return if @production.closed?
|
181
|
+
@production.closed = true
|
180
182
|
return Thread.new do
|
181
183
|
begin
|
182
184
|
Thread.pass
|
183
|
-
production.production_closing
|
184
|
-
production.theater.close
|
185
|
-
production.production_closed
|
186
|
-
|
185
|
+
@production.production_closing
|
186
|
+
@production.theater.close
|
187
|
+
@production.production_closed
|
188
|
+
@drb_service.stop_service if @drb_service
|
189
|
+
Context.instance.studio.production_closed(@production)
|
187
190
|
rescue StandardError => e
|
188
191
|
puts e
|
189
192
|
puts e.backtrace
|
@@ -191,6 +194,16 @@ module Limelight
|
|
191
194
|
end
|
192
195
|
end
|
193
196
|
|
197
|
+
# Publish the production, using DRb, on the specified port. This is useful for testing or remotely controling
|
198
|
+
# your production. Publilshing productions on DRb is typically accomplished by using the --drb_port option
|
199
|
+
# of the open command. eg.
|
200
|
+
#
|
201
|
+
# jruby -S limelight open --drb_port=9000 my_production
|
202
|
+
#
|
203
|
+
def publish_production_on_drb(port)
|
204
|
+
@drb_service = DRb.start_service("druby://localhost:#{port}", @production)
|
205
|
+
end
|
206
|
+
|
194
207
|
def establish_production #:nodoc:
|
195
208
|
@production.producer = self
|
196
209
|
@production.theater = @theater
|
data/lib/limelight/production.rb
CHANGED
@@ -150,7 +150,14 @@ module Limelight
|
|
150
150
|
# The production will actually delegate to it's producer and the producer will close the production down.
|
151
151
|
#
|
152
152
|
def close
|
153
|
-
@producer.close
|
153
|
+
@producer.close
|
154
|
+
end
|
155
|
+
|
156
|
+
# Publish this production using DRb on the specified port. The production will delegate to its producer to
|
157
|
+
# actually do the publishing.
|
158
|
+
#
|
159
|
+
def publish_on_drb(port)
|
160
|
+
@producer.publish_production_on_drb(port)
|
154
161
|
end
|
155
162
|
|
156
163
|
# Called when the last stage in this production's theater is closed. If the allow_close? returns true
|
@@ -9,12 +9,59 @@ require 'limelight/string'
|
|
9
9
|
require 'limelight/specs/test_scene_opener'
|
10
10
|
|
11
11
|
module Limelight
|
12
|
+
|
13
|
+
# Limelight comes with builtin assistance for testing your productions with rspec.
|
14
|
+
# See Limelight::Specs::SpecHelper
|
15
|
+
#
|
12
16
|
module Specs
|
13
17
|
|
14
18
|
class << self
|
15
19
|
attr_accessor :producer
|
16
20
|
end
|
17
|
-
|
21
|
+
|
22
|
+
# Limelight comes with builtin assistance for testing your productions with rspec. To get started, add the following
|
23
|
+
# to your describe block...
|
24
|
+
#
|
25
|
+
# uses_limelight :scene => "my_scene"
|
26
|
+
#
|
27
|
+
# This will add before(:each) blocks that will setup your production and load your scene before each test.
|
28
|
+
# It also provides some accessors to common objects like the scene and production. Afterwards, you can
|
29
|
+
# write tests that look like this.
|
30
|
+
#
|
31
|
+
# it "should do something with the scene" do
|
32
|
+
# scene.name.should == "my_scene"
|
33
|
+
# scene.find("title").text.should == "This is the Title"
|
34
|
+
# production.theater["default_stage"].current_scene.should be(scene)
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# There are several other options you can supply with 'uses_limelight':
|
38
|
+
#
|
39
|
+
# :hidden - (true or false) Defaults to true, but if you turn it off, the scene will pop open on your screen. This
|
40
|
+
# can be really nifty at times and really annoying at other time.
|
41
|
+
#
|
42
|
+
# :stage - The name of the stage you want the scene to be loaded on. The theater's default stage will be used by
|
43
|
+
# default.
|
44
|
+
#
|
45
|
+
# :scene_name - To be used instead of the :scene option. This will create an empty scene in your production with
|
46
|
+
# the specified name.
|
47
|
+
#
|
48
|
+
# :scene_path - To be used in conjunction with :scene_name. This will cause the empty scene to be loaded with
|
49
|
+
# the specified path. Styles and Players associated with the path will be applied to the created scene.
|
50
|
+
#
|
51
|
+
# The 'uses_limelight' methods also accepts block using the Limelight::DSL::PropBuilder DSL. This is convenient for building a
|
52
|
+
# simple prop structure sufficient to test the desired behavior. Here's an example:
|
53
|
+
#
|
54
|
+
# describe "my scene" do
|
55
|
+
# uses_limelight :scene_name => "some_name", :scene_path => "my_scene_path" do
|
56
|
+
# clicky :id => "clicky", :text => "click me", :on_mouse_clicked => "self.text = 'Hey! You clicked me!'"
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# it "should change text on clicky when clicked" do
|
60
|
+
# scene.find("clicky").mouse_clicked(nil)
|
61
|
+
# clicky.text.should == "Hey! You clicked me!"
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
#
|
18
65
|
module SpecHelper
|
19
66
|
def scene
|
20
67
|
if !@scene
|
@@ -26,10 +73,12 @@ module Limelight
|
|
26
73
|
end
|
27
74
|
end
|
28
75
|
|
29
|
-
module Spec
|
76
|
+
module Spec #:nodoc:
|
30
77
|
module Example
|
31
78
|
class ExampleGroup
|
32
79
|
|
80
|
+
# Deprecated
|
81
|
+
#
|
33
82
|
def self.uses_scene(scene_name, options = {})
|
34
83
|
uses_limelight({:scene => scene_name}.merge(options))
|
35
84
|
end
|
data/lib/limelight/stage.rb
CHANGED
@@ -310,7 +310,7 @@ module Limelight
|
|
310
310
|
# Invoked when the stage has lost status as the active stage. Only 1 stage my have focus at a time.
|
311
311
|
# System hook that should NOT be called by you.
|
312
312
|
#
|
313
|
-
def deactivated(e)
|
313
|
+
def deactivated(e)
|
314
314
|
@theater.stage_deactivated(self)
|
315
315
|
end
|
316
316
|
|
@@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
|
2
2
|
|
3
3
|
describe "!-SCENE_TITLE-!" do
|
4
4
|
|
5
|
-
|
5
|
+
uses_limelight :scene => "!-SCENE_NAME-!", :hidden => true
|
6
6
|
|
7
7
|
it "should have default text" do
|
8
8
|
scene.children.size.should == 1
|
data/lib/limelight/theater.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
4
|
require 'limelight/limelight_exception'
|
5
|
+
require 'thread'
|
5
6
|
|
6
7
|
module Limelight
|
7
8
|
|
@@ -18,12 +19,13 @@ module Limelight
|
|
18
19
|
def initialize(production)
|
19
20
|
@production = production
|
20
21
|
@stages = {}
|
22
|
+
@mutex = Mutex.new
|
21
23
|
end
|
22
24
|
|
23
25
|
# Returns an Array of Stages that belong to this Theater.
|
24
26
|
#
|
25
27
|
def stages
|
26
|
-
return @stages.values
|
28
|
+
return @mutex.synchronize { @stages.values }
|
27
29
|
end
|
28
30
|
|
29
31
|
# Returns true if the theater has at least one stage
|
@@ -35,7 +37,7 @@ module Limelight
|
|
35
37
|
# Returns the Stage with the spcified name, nil if none exist with the specified name.
|
36
38
|
#
|
37
39
|
def [](stage_name)
|
38
|
-
return @stages[stage_name]
|
40
|
+
return @mutex.synchronize { @stages[stage_name] }
|
39
41
|
end
|
40
42
|
|
41
43
|
# Adds a Stage to the Theater. Raises an exception is the name of the Stage is duplicated.
|
@@ -43,7 +45,7 @@ module Limelight
|
|
43
45
|
def add_stage(name, options = {})
|
44
46
|
raise LimelightException.new("Duplicate stage name: '#{name}'") if @stages[name]
|
45
47
|
stage = build_stage(name, options)
|
46
|
-
@stages[name] = stage
|
48
|
+
@mutex.synchronize { @stages[name] = stage }
|
47
49
|
return stage
|
48
50
|
end
|
49
51
|
|
@@ -65,9 +67,9 @@ module Limelight
|
|
65
67
|
# Removes the stage from this theater.
|
66
68
|
#
|
67
69
|
def stage_closed(stage)
|
68
|
-
@stages.delete(stage.name)
|
70
|
+
@mutex.synchronize { @stages.delete(stage.name) }
|
69
71
|
@active_stage = nil if @active_stage == stage
|
70
|
-
@production.theater_empty! if
|
72
|
+
@production.theater_empty! if !any_stages? || !any_visible_stages?
|
71
73
|
end
|
72
74
|
|
73
75
|
# If no Stages are added, the Theater will provide a default Stage named "Limelight".
|
@@ -80,8 +82,9 @@ module Limelight
|
|
80
82
|
# Close this theater. All stages in this theater will be closed and the active_stage will be nil'ed.
|
81
83
|
#
|
82
84
|
def close
|
83
|
-
@
|
84
|
-
|
85
|
+
stages_to_close = @mutex.synchronize { @stages.values.dup }
|
86
|
+
stages_to_close.each { |stage| stage.close }
|
87
|
+
@mutex.synchronize { @stages.clear }
|
85
88
|
@active_stage = nil
|
86
89
|
end
|
87
90
|
|
@@ -93,8 +96,12 @@ module Limelight
|
|
93
96
|
|
94
97
|
private ###############################################
|
95
98
|
|
99
|
+
def any_stages?
|
100
|
+
return @mutex.synchronize { @stages.empty? }
|
101
|
+
end
|
102
|
+
|
96
103
|
def any_visible_stages?
|
97
|
-
return @stages.values.any? { |s| s.visible? }
|
104
|
+
return @mutex.synchronize { @stages.values.any? { |s| s.visible? } }
|
98
105
|
end
|
99
106
|
|
100
107
|
end
|
data/lib/limelight/version.rb
CHANGED
@@ -44,7 +44,7 @@ describe Limelight::Commands::OpenCommand do
|
|
44
44
|
|
45
45
|
it "should start the studio on drb" do
|
46
46
|
Limelight::Main.should_receive(:initialize_context)
|
47
|
-
@studio.should_receive(:
|
47
|
+
@studio.should_receive(:publish_productions_on_drb).with(1234)
|
48
48
|
@studio.should_receive(:open).with("some_prod")
|
49
49
|
|
50
50
|
@command.run ["-d", "1234", "some_prod"]
|
@@ -215,15 +215,32 @@ describe Limelight::Producer do
|
|
215
215
|
|
216
216
|
it "should close a production" do
|
217
217
|
theater = mock("theater")
|
218
|
-
production =
|
218
|
+
production = @producer.production
|
219
|
+
production.theater = theater
|
219
220
|
production.should_receive(:closed=).with(true)
|
220
221
|
production.should_receive(:production_closing)
|
221
222
|
theater.should_receive(:close)
|
222
223
|
production.should_receive(:production_closed)
|
223
224
|
Limelight::Context.instance.studio.should_receive(:production_closed).with(production)
|
224
225
|
|
225
|
-
close_thread = @producer.close
|
226
|
+
close_thread = @producer.close
|
226
227
|
close_thread.join()
|
227
228
|
end
|
229
|
+
|
230
|
+
it "should publish a production on drb" do
|
231
|
+
service = mock("service")
|
232
|
+
DRb.should_receive(:start_service).with("druby://localhost:9000", @producer.production).and_return(service)
|
233
|
+
|
234
|
+
@producer.publish_production_on_drb(9000)
|
235
|
+
end
|
236
|
+
|
237
|
+
it "should stop the drb service when closing the production" do
|
238
|
+
service = mock("service")
|
239
|
+
DRb.stub!(:start_service).with("druby://localhost:9000", @producer.production).and_return(service)
|
240
|
+
@producer.publish_production_on_drb(9000)
|
241
|
+
|
242
|
+
service.should_receive(:stop_service)
|
243
|
+
@producer.close.join
|
244
|
+
end
|
228
245
|
|
229
246
|
end
|
@@ -58,11 +58,16 @@ describe Limelight::Production, "Instance methods" do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should tell producer to do the closing" do
|
61
|
-
@producer.should_receive(:close)
|
61
|
+
@producer.should_receive(:close)
|
62
62
|
|
63
63
|
@production.close
|
64
64
|
end
|
65
65
|
|
66
|
+
it "should publish on drb" do
|
67
|
+
@producer.should_receive(:publish_production_on_drb).with(9000)
|
68
|
+
@production.publish_on_drb(9000)
|
69
|
+
end
|
70
|
+
|
66
71
|
it "should handle empty theater" do
|
67
72
|
@production.should_receive(:allow_close?).at_least(1).and_return(true)
|
68
73
|
@production.should_receive(:close)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: limelight
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Micah Martin, 8th Light
|
@@ -9,7 +9,7 @@ autorequire: init
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-11-01 01:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -159,7 +159,6 @@ files:
|
|
159
159
|
- spec/limelight/scene_spec.rb
|
160
160
|
- spec/limelight/stage_spec.rb
|
161
161
|
- spec/limelight/string_spec.rb
|
162
|
-
- spec/limelight/styles_spec.rb
|
163
162
|
- spec/limelight/templates/production_templater_spec.rb
|
164
163
|
- spec/limelight/templates/scene_templater_spec.rb
|
165
164
|
- spec/limelight/templates/templater_logger_spec.rb
|
@@ -414,6 +413,6 @@ rubyforge_project: limelight
|
|
414
413
|
rubygems_version: 1.3.1
|
415
414
|
signing_key:
|
416
415
|
specification_version: 2
|
417
|
-
summary: Limelight-0.5.
|
416
|
+
summary: Limelight-0.5.4 - Limelight http://limelight.8thlight.com
|
418
417
|
test_files: []
|
419
418
|
|
@@ -1,53 +0,0 @@
|
|
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
|