glimmer 1.1.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/README.md +322 -231
- data/VERSION +1 -1
- data/glimmer.gemspec +22 -36
- data/lib/glimmer.rb +1 -0
- data/lib/glimmer/config.rb +2 -2
- data/lib/glimmer/data_binding/model_binding.rb +23 -18
- data/lib/glimmer/data_binding/observable_model.rb +2 -0
- data/lib/glimmer/dsl/engine.rb +13 -7
- data/lib/glimmer/dsl/expression.rb +13 -3
- data/lib/glimmer/dsl/parent_expression.rb +5 -2
- data/lib/glimmer/dsl/static_expression.rb +2 -1
- metadata +23 -22
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1
|
1
|
+
1.3.1
|
data/glimmer.gemspec
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer 1.1
|
5
|
+
# stub: glimmer 1.3.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer".freeze
|
9
|
-
s.version = "1.1
|
9
|
+
s.version = "1.3.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["AndyMaleh".freeze]
|
14
|
-
s.date = "2021-
|
15
|
-
s.description = "Glimmer is a Ruby DSL Framework consisting of a DSL Engine and an Observable/Observer/Data-Binding Library. Used in the Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), the Glimmer DSL for Tk (Ruby Desktop Development GUI Library), the Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps), the Glimmer DSL for XML (& HTML), and the Glimmer DSL for CSS.".freeze
|
14
|
+
s.date = "2021-03-23"
|
15
|
+
s.description = "Glimmer is a Ruby DSL Framework for Ruby GUI and More, consisting of a DSL Engine and an Observable/Observer/Data-Binding Library. Used in the Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), the Glimmer DSL for Tk (Ruby Desktop Development GUI Library), the Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps), the Glimmer DSL for XML (& HTML), and the Glimmer DSL for CSS.".freeze
|
16
16
|
s.email = "andy.am@gmail.com".freeze
|
17
17
|
s.extra_rdoc_files = [
|
18
18
|
"CHANGELOG.md",
|
@@ -46,41 +46,27 @@ Gem::Specification.new do |s|
|
|
46
46
|
]
|
47
47
|
s.homepage = "http://github.com/AndyObtiva/glimmer".freeze
|
48
48
|
s.licenses = ["MIT".freeze]
|
49
|
-
s.rubygems_version = "3.
|
50
|
-
s.summary = "Glimmer
|
49
|
+
s.rubygems_version = "3.2.3".freeze
|
50
|
+
s.summary = "Glimmer - DSL Engine for Ruby GUI and More".freeze
|
51
51
|
|
52
52
|
if s.respond_to? :specification_version then
|
53
53
|
s.specification_version = 4
|
54
|
+
end
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
else
|
70
|
-
s.add_dependency(%q<array_include_methods>.freeze, [">= 1.0.4", "< 2.0.0"])
|
71
|
-
s.add_dependency(%q<facets>.freeze, [">= 3.1.0", "< 4.0.0"])
|
72
|
-
s.add_dependency(%q<concurrent-ruby>.freeze, [">= 1.1.7", "< 2.0.0"])
|
73
|
-
s.add_dependency(%q<rspec-mocks>.freeze, ["~> 3.5.0"])
|
74
|
-
s.add_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
75
|
-
s.add_dependency(%q<puts_debuggerer>.freeze, ["~> 0.10.0"])
|
76
|
-
s.add_dependency(%q<rake>.freeze, [">= 10.1.0", "< 14.0.0"])
|
77
|
-
s.add_dependency(%q<jeweler>.freeze, [">= 2.0.0", "< 3.0.0"])
|
78
|
-
s.add_dependency(%q<rdoc>.freeze, [">= 6.2.1", "< 7.0.0"])
|
79
|
-
s.add_dependency(%q<coveralls>.freeze, [">= 0"])
|
80
|
-
s.add_dependency(%q<simplecov>.freeze, ["~> 0.16.1"])
|
81
|
-
s.add_dependency(%q<simplecov-lcov>.freeze, ["~> 0.7.0"])
|
82
|
-
s.add_dependency(%q<rake-tui>.freeze, [">= 0"])
|
83
|
-
end
|
56
|
+
if s.respond_to? :add_runtime_dependency then
|
57
|
+
s.add_runtime_dependency(%q<array_include_methods>.freeze, [">= 1.0.4", "< 2.0.0"])
|
58
|
+
s.add_runtime_dependency(%q<facets>.freeze, [">= 3.1.0", "< 4.0.0"])
|
59
|
+
s.add_runtime_dependency(%q<concurrent-ruby>.freeze, [">= 1.1.7", "< 2.0.0"])
|
60
|
+
s.add_development_dependency(%q<rspec-mocks>.freeze, ["~> 3.5.0"])
|
61
|
+
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.5.0"])
|
62
|
+
s.add_development_dependency(%q<puts_debuggerer>.freeze, ["~> 0.10.0"])
|
63
|
+
s.add_development_dependency(%q<rake>.freeze, [">= 10.1.0", "< 14.0.0"])
|
64
|
+
s.add_development_dependency(%q<jeweler>.freeze, [">= 2.0.0", "< 3.0.0"])
|
65
|
+
s.add_development_dependency(%q<rdoc>.freeze, [">= 6.2.1", "< 7.0.0"])
|
66
|
+
s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
|
67
|
+
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.16.1"])
|
68
|
+
s.add_development_dependency(%q<simplecov-lcov>.freeze, ["~> 0.7.0"])
|
69
|
+
s.add_development_dependency(%q<rake-tui>.freeze, [">= 0"])
|
84
70
|
else
|
85
71
|
s.add_dependency(%q<array_include_methods>.freeze, [">= 1.0.4", "< 2.0.0"])
|
86
72
|
s.add_dependency(%q<facets>.freeze, [">= 3.1.0", "< 4.0.0"])
|
data/lib/glimmer.rb
CHANGED
@@ -81,6 +81,7 @@ module Glimmer
|
|
81
81
|
Glimmer.loop_reset!
|
82
82
|
end
|
83
83
|
Glimmer.loop_last_data = new_loop_data
|
84
|
+
Glimmer::Config.logger.info {">"*80}
|
84
85
|
Glimmer::Config.logger.info {"Interpreting keyword: #{method_symbol}"}
|
85
86
|
Glimmer::DSL::Engine.interpret(method_symbol, *args, &block)
|
86
87
|
end
|
data/lib/glimmer/config.rb
CHANGED
@@ -56,10 +56,10 @@ module Glimmer
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def reset_logger!
|
59
|
-
self.logger = Logger.new(
|
59
|
+
self.logger = Logger.new($stdout).tap do |logger|
|
60
60
|
logger.level = Logger::ERROR
|
61
61
|
begin
|
62
|
-
logger.level = ENV['GLIMMER_LOGGER_LEVEL']
|
62
|
+
logger.level = ENV['GLIMMER_LOGGER_LEVEL']&.strip&.downcase
|
63
63
|
rescue => e
|
64
64
|
puts e.message
|
65
65
|
end
|
@@ -35,9 +35,9 @@ module Glimmer
|
|
35
35
|
@property_name_expression = property_name_expression
|
36
36
|
@binding_options = binding_options || Concurrent::Hash.new
|
37
37
|
if computed?
|
38
|
-
@computed_model_bindings = computed_by.map do |computed_by_property_expression|
|
38
|
+
@computed_model_bindings = Concurrent::Array.new(computed_by.map do |computed_by_property_expression|
|
39
39
|
self.class.new(base_model, computed_by_property_expression)
|
40
|
-
end
|
40
|
+
end)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
@@ -47,11 +47,9 @@ module Glimmer
|
|
47
47
|
|
48
48
|
# e.g. person.address.state returns [person, person.address]
|
49
49
|
def nested_models
|
50
|
-
@nested_models = [base_model]
|
50
|
+
@nested_models = Concurrent::Array.new([base_model])
|
51
51
|
model_property_names.reduce(base_model) do |reduced_model, nested_model_property_name|
|
52
|
-
if reduced_model.nil?
|
53
|
-
nil
|
54
|
-
else
|
52
|
+
if !reduced_model.nil?
|
55
53
|
invoke_property_reader(reduced_model, nested_model_property_name).tap do |new_reduced_model|
|
56
54
|
@nested_models << new_reduced_model
|
57
55
|
end
|
@@ -77,7 +75,7 @@ module Glimmer
|
|
77
75
|
# If there are any indexed property names, this returns indexes as properties.
|
78
76
|
# e.g. property name expression "addresses[1].state" gives ['addresses', '[1]', 'state']
|
79
77
|
def nested_property_names
|
80
|
-
@nested_property_names ||= property_name_expression.split(".").map {|pne| pne.match(/([^\[]+)(\[[^\]]+\])?/).to_a.drop(1)}.flatten.compact
|
78
|
+
@nested_property_names ||= Concurrent::Array.new(property_name_expression.split(".").map {|pne| pne.match(/([^\[]+)(\[[^\]]+\])?/).to_a.drop(1)}.flatten.compact)
|
81
79
|
end
|
82
80
|
|
83
81
|
# Final nested property name
|
@@ -89,7 +87,7 @@ module Glimmer
|
|
89
87
|
# Model representing nested property names
|
90
88
|
# e.g. property name expression "address.state" gives [:address]
|
91
89
|
def model_property_names
|
92
|
-
nested_property_names[0...-1]
|
90
|
+
Concurrent::Array.new(nested_property_names[0...-1])
|
93
91
|
end
|
94
92
|
|
95
93
|
def nested_property?
|
@@ -101,7 +99,7 @@ module Glimmer
|
|
101
99
|
end
|
102
100
|
|
103
101
|
def computed_by
|
104
|
-
[@binding_options[:computed_by]].flatten.compact
|
102
|
+
Concurrent::Array.new([@binding_options[:computed_by]].flatten.compact)
|
105
103
|
end
|
106
104
|
|
107
105
|
def nested_property_observers_for(observer)
|
@@ -112,7 +110,10 @@ module Glimmer
|
|
112
110
|
property_name => Observer.proc do |new_value|
|
113
111
|
# Ensure reattaching observers when a higher level nested property is updated (e.g. person.address changes reattaches person.address.street observer)
|
114
112
|
add_observer(observer)
|
115
|
-
|
113
|
+
converted_value = evaluate_property
|
114
|
+
observer.call(converted_value).tap do
|
115
|
+
apply_processor(@binding_options[:after_read], converted_value)
|
116
|
+
end
|
116
117
|
end
|
117
118
|
)
|
118
119
|
end
|
@@ -127,7 +128,10 @@ module Glimmer
|
|
127
128
|
add_nested_observers(observer)
|
128
129
|
else
|
129
130
|
model_binding_observer = Observer.proc do |new_value|
|
130
|
-
|
131
|
+
converted_value = evaluate_property
|
132
|
+
observer.call(converted_value).tap do
|
133
|
+
apply_processor(@binding_options[:after_read], converted_value)
|
134
|
+
end
|
131
135
|
end
|
132
136
|
observer_registration = model_binding_observer.observe(model, property_name)
|
133
137
|
my_registration = observer.registration_for(self)
|
@@ -152,7 +156,10 @@ module Glimmer
|
|
152
156
|
@computed_observer_collection ||= Concurrent::Hash.new
|
153
157
|
unless @computed_observer_collection.has_key?(observer)
|
154
158
|
@computed_observer_collection[observer] = Observer.proc do |new_value|
|
155
|
-
|
159
|
+
converted_value = evaluate_property
|
160
|
+
observer.call(converted_value).tap do
|
161
|
+
apply_processor(@binding_options[:after_read], converted_value)
|
162
|
+
end
|
156
163
|
end
|
157
164
|
end
|
158
165
|
@computed_observer_collection[observer]
|
@@ -168,7 +175,7 @@ module Glimmer
|
|
168
175
|
|
169
176
|
def add_nested_observers(observer)
|
170
177
|
nested_property_observers = nested_property_observers_for(observer)
|
171
|
-
nested_models.zip(nested_property_names).each_with_index do |zip, i|
|
178
|
+
Concurrent::Array.new(nested_models.zip(nested_property_names)).each_with_index do |zip, i|
|
172
179
|
model, property_name = zip
|
173
180
|
nested_property_observer = nested_property_observers[property_name]
|
174
181
|
previous_index = i - 1
|
@@ -201,9 +208,7 @@ module Glimmer
|
|
201
208
|
value = nil
|
202
209
|
value = invoke_property_reader(model, property_name) unless model.nil?
|
203
210
|
apply_processor(@binding_options[:before_read], value)
|
204
|
-
|
205
|
-
apply_processor(@binding_options[:after_read], converted_value)
|
206
|
-
converted_value
|
211
|
+
convert_on_read(value)
|
207
212
|
end
|
208
213
|
|
209
214
|
def evaluate_options_property
|
@@ -237,7 +242,7 @@ module Glimmer
|
|
237
242
|
|
238
243
|
def invoke_proc_with_exact_parameters(proc_object, *args)
|
239
244
|
return if proc_object.nil?
|
240
|
-
args = args[0...proc_object.parameters.size]
|
245
|
+
args = Concurrent::Array.new(args[0...proc_object.parameters.size])
|
241
246
|
proc_object.call(*args)
|
242
247
|
end
|
243
248
|
|
@@ -256,7 +261,6 @@ module Glimmer
|
|
256
261
|
raise "Cannot invoke `#{property_expression}` because ModelBinding#binding_options[:read_only]=true" if @binding_options[:read_only]
|
257
262
|
apply_processor(@binding_options[:before_write], value)
|
258
263
|
converted_value = convert_on_write(value)
|
259
|
-
apply_processor(@binding_options[:after_write], converted_value)
|
260
264
|
if property_indexed?(property_expression)
|
261
265
|
property_method = '[]='
|
262
266
|
property_argument = property_expression[1...-2]
|
@@ -265,6 +269,7 @@ module Glimmer
|
|
265
269
|
else
|
266
270
|
object.send(property_expression, converted_value)
|
267
271
|
end
|
272
|
+
apply_processor(@binding_options[:after_write], converted_value)
|
268
273
|
end
|
269
274
|
end
|
270
275
|
end
|
@@ -29,10 +29,12 @@ module Glimmer
|
|
29
29
|
|
30
30
|
class Notifier
|
31
31
|
include Observer
|
32
|
+
|
32
33
|
def initialize(observable_model, property_name)
|
33
34
|
@observable_model = observable_model
|
34
35
|
@property_name = property_name
|
35
36
|
end
|
37
|
+
|
36
38
|
def call(new_value=nil)
|
37
39
|
@observable_model.notify_observers(@property_name)
|
38
40
|
end
|
data/lib/glimmer/dsl/engine.rb
CHANGED
@@ -37,7 +37,7 @@ module Glimmer
|
|
37
37
|
STATIC_EXPRESSION_METHOD_FACTORY = lambda do |keyword|
|
38
38
|
lambda do |*args, &block|
|
39
39
|
if Glimmer::DSL::Engine.no_dsls?
|
40
|
-
|
40
|
+
Glimmer::Config.logger.error {Glimmer::DSL::Engine::MESSAGE_NO_DSLS}
|
41
41
|
else
|
42
42
|
retrieved_static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
|
43
43
|
# TODO consider replacing Glimmer::DSL::Engine.static_expressions[keyword].keys - Glimmer::DSL::Engine.disabled_dsls with Glimmer::DSL::Engine.enabled_static_expression_dsls(keyword)
|
@@ -55,6 +55,7 @@ module Glimmer
|
|
55
55
|
else
|
56
56
|
raise Glimmer::Error, "Unsupported keyword: #{keyword}" unless static_expression_dsl || retrieved_static_expression
|
57
57
|
Glimmer::DSL::Engine.dsl_stack.push(static_expression_dsl || Glimmer::DSL::Engine.dsl)
|
58
|
+
Glimmer::Config.logger.info {"Assuming DSL: #{Glimmer::DSL::Engine.dsl_stack.last}"}
|
58
59
|
static_expression = Glimmer::DSL::Engine.static_expressions[keyword][Glimmer::DSL::Engine.dsl]
|
59
60
|
static_expression_can_interpret = nil
|
60
61
|
if static_expression.nil? || !(static_expression_can_interpret = static_expression.can_interpret?(Glimmer::DSL::Engine.parent, keyword, *args, &block))
|
@@ -169,15 +170,20 @@ module Glimmer
|
|
169
170
|
dynamic_expression_dsl = (dynamic_expression_chains_of_responsibility.keys - disabled_dsls).first if dsl.nil?
|
170
171
|
# TODO consider pushing this code into interpret_expresion to provide hooks that work around it regardless of static vs dynamic
|
171
172
|
dsl_stack.push(dynamic_expression_dsl || dsl)
|
173
|
+
Glimmer::Config.logger.info {"Assuming DSL: #{dsl_stack.last}"}
|
172
174
|
expression = dynamic_expression_chains_of_responsibility[dsl].handle(parent, keyword, *args, &block)
|
173
175
|
interpret_expression(expression, keyword, *args, &block)
|
174
176
|
end
|
175
177
|
|
176
178
|
def interpret_expression(expression, keyword, *args, &block)
|
177
|
-
|
178
|
-
|
179
|
-
|
179
|
+
new_parent = nil
|
180
|
+
expression.around(parent, keyword, args, block) do
|
181
|
+
new_parent = expression.interpret(parent, keyword, *args, &block).tap do |new_parent|
|
182
|
+
add_content(new_parent, expression, keyword, *args, &block)
|
183
|
+
dsl_stack.pop
|
184
|
+
end
|
180
185
|
end
|
186
|
+
new_parent
|
181
187
|
end
|
182
188
|
|
183
189
|
# Adds content block to parent UI object
|
@@ -185,12 +191,12 @@ module Glimmer
|
|
185
191
|
# This allows evaluating parent UI object properties and children
|
186
192
|
#
|
187
193
|
# For example, a shell widget would get properties set and children added
|
188
|
-
def add_content(
|
194
|
+
def add_content(new_parent, expression, keyword, *args, &block)
|
189
195
|
if block_given? && expression.is_a?(ParentExpression)
|
190
196
|
dsl_stack.push(expression.class.dsl)
|
191
|
-
parent_stack.push(
|
197
|
+
parent_stack.push(new_parent)
|
192
198
|
begin
|
193
|
-
expression.add_content(
|
199
|
+
expression.add_content(new_parent, keyword, *args, &block)
|
194
200
|
ensure
|
195
201
|
parent_stack.pop
|
196
202
|
dsl_stack.pop
|
@@ -47,13 +47,23 @@ module Glimmer
|
|
47
47
|
raise Error, "#interpret must be implemented by an Expression subclass"
|
48
48
|
end
|
49
49
|
|
50
|
-
# Adds block content to
|
50
|
+
# Adds block content to newly interpreted parent object (Optional)
|
51
51
|
#
|
52
52
|
# Only expressions that receive a content block should implement
|
53
|
-
def add_content(
|
53
|
+
def add_content(new_parent, keyword, *args, &block)
|
54
54
|
# No Op by default
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
|
+
# Executes code around the `interpret_and_add_content` block,
|
58
|
+
# which invokes `interpret` and `add_content` when called without args
|
59
|
+
# (parent, keyword, args, block are supplied automatically).
|
60
|
+
# Clients may invoke yield as an alternative to calling `interpret_and_add_content` directly.
|
61
|
+
# This method takes parent, keyword, args, block in case they are needed
|
62
|
+
# in its around logic.
|
63
|
+
def around(parent, keyword, args, block, &interpret_and_add_content)
|
64
|
+
interpret_and_add_content.call
|
65
|
+
end
|
66
|
+
|
57
67
|
# Checks if object is a Symbol or a String
|
58
68
|
def textual?(object)
|
59
69
|
object.is_a?(Symbol) or object.is_a?(String)
|
@@ -25,8 +25,11 @@ module Glimmer
|
|
25
25
|
module DSL
|
26
26
|
# Mixin that represents expressions that always have a content block
|
27
27
|
module ParentExpression
|
28
|
-
|
29
|
-
|
28
|
+
# Default implementation that simply invokes block content with newly interpreted parent object as an argument
|
29
|
+
#
|
30
|
+
# Only expressions that receive a content block should implement
|
31
|
+
def add_content(new_parent, keyword, *args, &block)
|
32
|
+
block.call(new_parent)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
@@ -50,7 +50,8 @@ module Glimmer
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
# Subclasses may optionally implement
|
53
|
+
# Subclasses may optionally implement, but by default it only ensures that
|
54
|
+
# the keyword matches lower case static expression class name minus `Expression`
|
54
55
|
def can_interpret?(parent, keyword, *args, &block)
|
55
56
|
true
|
56
57
|
end
|
metadata
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AndyMaleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: array_include_methods
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - ">="
|
@@ -19,7 +20,6 @@ dependencies:
|
|
19
20
|
- - "<"
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 2.0.0
|
22
|
-
name: array_include_methods
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,6 +31,7 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.0.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
+
name: facets
|
34
35
|
requirement: !ruby/object:Gem::Requirement
|
35
36
|
requirements:
|
36
37
|
- - ">="
|
@@ -39,7 +40,6 @@ dependencies:
|
|
39
40
|
- - "<"
|
40
41
|
- !ruby/object:Gem::Version
|
41
42
|
version: 4.0.0
|
42
|
-
name: facets
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -51,6 +51,7 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 4.0.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
+
name: concurrent-ruby
|
54
55
|
requirement: !ruby/object:Gem::Requirement
|
55
56
|
requirements:
|
56
57
|
- - ">="
|
@@ -59,7 +60,6 @@ dependencies:
|
|
59
60
|
- - "<"
|
60
61
|
- !ruby/object:Gem::Version
|
61
62
|
version: 2.0.0
|
62
|
-
name: concurrent-ruby
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -71,12 +71,12 @@ dependencies:
|
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 2.0.0
|
73
73
|
- !ruby/object:Gem::Dependency
|
74
|
+
name: rspec-mocks
|
74
75
|
requirement: !ruby/object:Gem::Requirement
|
75
76
|
requirements:
|
76
77
|
- - "~>"
|
77
78
|
- !ruby/object:Gem::Version
|
78
79
|
version: 3.5.0
|
79
|
-
name: rspec-mocks
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
82
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -85,12 +85,12 @@ dependencies:
|
|
85
85
|
- !ruby/object:Gem::Version
|
86
86
|
version: 3.5.0
|
87
87
|
- !ruby/object:Gem::Dependency
|
88
|
+
name: rspec
|
88
89
|
requirement: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
91
|
- - "~>"
|
91
92
|
- !ruby/object:Gem::Version
|
92
93
|
version: 3.5.0
|
93
|
-
name: rspec
|
94
94
|
type: :development
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -99,12 +99,12 @@ dependencies:
|
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: 3.5.0
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
|
+
name: puts_debuggerer
|
102
103
|
requirement: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
105
|
- - "~>"
|
105
106
|
- !ruby/object:Gem::Version
|
106
107
|
version: 0.10.0
|
107
|
-
name: puts_debuggerer
|
108
108
|
type: :development
|
109
109
|
prerelease: false
|
110
110
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -113,6 +113,7 @@ dependencies:
|
|
113
113
|
- !ruby/object:Gem::Version
|
114
114
|
version: 0.10.0
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
|
+
name: rake
|
116
117
|
requirement: !ruby/object:Gem::Requirement
|
117
118
|
requirements:
|
118
119
|
- - ">="
|
@@ -121,7 +122,6 @@ dependencies:
|
|
121
122
|
- - "<"
|
122
123
|
- !ruby/object:Gem::Version
|
123
124
|
version: 14.0.0
|
124
|
-
name: rake
|
125
125
|
type: :development
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -133,6 +133,7 @@ dependencies:
|
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: 14.0.0
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
|
+
name: jeweler
|
136
137
|
requirement: !ruby/object:Gem::Requirement
|
137
138
|
requirements:
|
138
139
|
- - ">="
|
@@ -141,7 +142,6 @@ dependencies:
|
|
141
142
|
- - "<"
|
142
143
|
- !ruby/object:Gem::Version
|
143
144
|
version: 3.0.0
|
144
|
-
name: jeweler
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -153,6 +153,7 @@ dependencies:
|
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: 3.0.0
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
|
+
name: rdoc
|
156
157
|
requirement: !ruby/object:Gem::Requirement
|
157
158
|
requirements:
|
158
159
|
- - ">="
|
@@ -161,7 +162,6 @@ dependencies:
|
|
161
162
|
- - "<"
|
162
163
|
- !ruby/object:Gem::Version
|
163
164
|
version: 7.0.0
|
164
|
-
name: rdoc
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
167
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -173,12 +173,12 @@ dependencies:
|
|
173
173
|
- !ruby/object:Gem::Version
|
174
174
|
version: 7.0.0
|
175
175
|
- !ruby/object:Gem::Dependency
|
176
|
+
name: coveralls
|
176
177
|
requirement: !ruby/object:Gem::Requirement
|
177
178
|
requirements:
|
178
179
|
- - ">="
|
179
180
|
- !ruby/object:Gem::Version
|
180
181
|
version: '0'
|
181
|
-
name: coveralls
|
182
182
|
type: :development
|
183
183
|
prerelease: false
|
184
184
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -187,12 +187,12 @@ dependencies:
|
|
187
187
|
- !ruby/object:Gem::Version
|
188
188
|
version: '0'
|
189
189
|
- !ruby/object:Gem::Dependency
|
190
|
+
name: simplecov
|
190
191
|
requirement: !ruby/object:Gem::Requirement
|
191
192
|
requirements:
|
192
193
|
- - "~>"
|
193
194
|
- !ruby/object:Gem::Version
|
194
195
|
version: 0.16.1
|
195
|
-
name: simplecov
|
196
196
|
type: :development
|
197
197
|
prerelease: false
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -201,12 +201,12 @@ dependencies:
|
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: 0.16.1
|
203
203
|
- !ruby/object:Gem::Dependency
|
204
|
+
name: simplecov-lcov
|
204
205
|
requirement: !ruby/object:Gem::Requirement
|
205
206
|
requirements:
|
206
207
|
- - "~>"
|
207
208
|
- !ruby/object:Gem::Version
|
208
209
|
version: 0.7.0
|
209
|
-
name: simplecov-lcov
|
210
210
|
type: :development
|
211
211
|
prerelease: false
|
212
212
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -215,12 +215,12 @@ dependencies:
|
|
215
215
|
- !ruby/object:Gem::Version
|
216
216
|
version: 0.7.0
|
217
217
|
- !ruby/object:Gem::Dependency
|
218
|
+
name: rake-tui
|
218
219
|
requirement: !ruby/object:Gem::Requirement
|
219
220
|
requirements:
|
220
221
|
- - ">="
|
221
222
|
- !ruby/object:Gem::Version
|
222
223
|
version: '0'
|
223
|
-
name: rake-tui
|
224
224
|
type: :development
|
225
225
|
prerelease: false
|
226
226
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -228,11 +228,12 @@ dependencies:
|
|
228
228
|
- - ">="
|
229
229
|
- !ruby/object:Gem::Version
|
230
230
|
version: '0'
|
231
|
-
description: Glimmer is a Ruby DSL Framework
|
232
|
-
Library. Used in the Glimmer
|
233
|
-
|
234
|
-
|
235
|
-
XML (& HTML), and the Glimmer
|
231
|
+
description: Glimmer is a Ruby DSL Framework for Ruby GUI and More, consisting of
|
232
|
+
a DSL Engine and an Observable/Observer/Data-Binding Library. Used in the Glimmer
|
233
|
+
DSL for SWT (JRuby Desktop Development GUI Framework), the Glimmer DSL for Tk (Ruby
|
234
|
+
Desktop Development GUI Library), the Glimmer DSL for Opal (Pure Ruby Web GUI and
|
235
|
+
Auto-Webifier of Desktop Apps), the Glimmer DSL for XML (& HTML), and the Glimmer
|
236
|
+
DSL for CSS.
|
236
237
|
email: andy.am@gmail.com
|
237
238
|
executables: []
|
238
239
|
extensions: []
|
@@ -283,8 +284,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
283
284
|
- !ruby/object:Gem::Version
|
284
285
|
version: '0'
|
285
286
|
requirements: []
|
286
|
-
rubygems_version: 3.
|
287
|
+
rubygems_version: 3.2.3
|
287
288
|
signing_key:
|
288
289
|
specification_version: 4
|
289
|
-
summary: Glimmer
|
290
|
+
summary: Glimmer - DSL Engine for Ruby GUI and More
|
290
291
|
test_files: []
|