teacup 0.0.1.pre → 0.3.1
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/.gitignore +5 -3
- data/CHANGES.md +26 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +1 -1
- data/LICENSE +26 -0
- data/README.md +383 -95
- data/Rakefile +8 -36
- data/app/app_delegate.rb +14 -0
- data/app/controllers/first_controller.rb +71 -0
- data/app/controllers/landscape_only_controller.rb +16 -0
- data/app/controllers/tableview_controller.rb +0 -0
- data/app/styles/main_styles.rb +111 -0
- data/app/views/custom_view.rb +4 -0
- data/lib/dummy.rb +56 -0
- data/lib/teacup/handler.rb +99 -0
- data/lib/teacup/layout.rb +22 -74
- data/lib/teacup/merge_defaults.rb +45 -0
- data/lib/teacup/style.rb +93 -0
- data/lib/teacup/stylesheet.rb +242 -0
- data/lib/teacup/stylesheet_extensions/rotation.rb +38 -0
- data/lib/teacup/version.rb +1 -1
- data/lib/teacup/z_core_extensions/ca_layer.rb +6 -0
- data/lib/teacup/z_core_extensions/ui_view.rb +119 -0
- data/lib/teacup/z_core_extensions/ui_view_controller.rb +179 -0
- data/lib/teacup/z_core_extensions/ui_view_getters.rb +34 -0
- data/lib/teacup/z_core_extensions/z_handlers.rb +57 -0
- data/lib/teacup.rb +16 -33
- data/samples/Hai/Rakefile +7 -2
- data/samples/Hai/app/app_delegate.rb +2 -2
- data/samples/Hai/app/hai_controller.rb +8 -4
- data/samples/Hai/styles/iphone.rb +40 -0
- data/spec/main_spec.rb +226 -0
- data/spec/style_spec.rb +171 -0
- data/spec/stylesheet_spec.rb +348 -0
- data/spec/view_spec.rb +103 -0
- data/teacup.gemspec +13 -13
- metadata +47 -46
- data/.rspec +0 -2
- data/lib/teacup/contributors.rb +0 -7
- data/lib/teacup/core_extensions/ui_view.rb +0 -4
- data/lib/teacup/core_extensions/ui_view_controller.rb +0 -62
- data/lib/teacup/style_sheet.rb +0 -195
- data/lib/teacup/view.rb +0 -123
- data/pkg/teacup-0.0.0.gem +0 -0
- data/pkg/teacup-0.0.1.gem +0 -0
- data/proposals/other/README.md +0 -45
- data/proposals/other/app/config/application.rb +0 -1
- data/proposals/other/app/config/boot.rb +0 -1
- data/proposals/other/app/config/initializers/twitter.rb +0 -7
- data/proposals/other/app/controllers/events_controller.rb +0 -28
- data/proposals/other/app/controllers/venues_controller.rb +0 -4
- data/proposals/other/app/db/README.md +0 -16
- data/proposals/other/app/db/migrations/20120514201043_create_events.rb +0 -9
- data/proposals/other/app/db/migrations/20120514201044_add_price_to_events.rb +0 -5
- data/proposals/other/app/db/migrations/20120514201045_create_venues.rb +0 -8
- data/proposals/other/app/db/schema.rb +0 -19
- data/proposals/other/app/models/event.rb +0 -14
- data/proposals/other/app/models/venue.rb +0 -3
- data/proposals/other/app/views/events/edit.ipad.rb +0 -8
- data/proposals/other/app/views/events/edit.iphone.rb +0 -7
- data/proposals/other/app/views/events/show.ipad.rb +0 -2
- data/proposals/other/app/views/events/show.iphone.rb +0 -3
- data/samples/Hai/styles/ipad.rb +0 -11
- data/samples/Hai/styles/ipad_vertical.rb +0 -3
- data/spec/spec_helper.rb +0 -5
- data/spec/teacup/contributions_spec.rb +0 -13
- data/spec/teacup/version_spec.rb +0 -9
@@ -0,0 +1,348 @@
|
|
1
|
+
describe "Teacup::Stylesheet" do
|
2
|
+
|
3
|
+
describe 'creation' do
|
4
|
+
before do
|
5
|
+
@stylesheet = Teacup::Stylesheet.new(:constanttest) { }
|
6
|
+
end
|
7
|
+
|
8
|
+
after do
|
9
|
+
Teacup::Stylesheet.stylesheets.delete(:constanttest)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should create constants for named stylesheets' do
|
13
|
+
Teacup::Stylesheet[:constanttest].should == @stylesheet
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should allow creating anonymous stylesheets' do
|
17
|
+
stylesheet = Teacup::Stylesheet.new { }
|
18
|
+
stylesheet.name.should == nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'in the simplest cases' do
|
23
|
+
before do
|
24
|
+
@stylesheet = Teacup::Stylesheet.new do
|
25
|
+
style :example_button,
|
26
|
+
frame: [[0, 0], [100, 100]]
|
27
|
+
|
28
|
+
style :example_label, :example_textfield,
|
29
|
+
backgroundColor: :blue
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should let you define properties for a stylename' do
|
34
|
+
@stylesheet.query(:example_button)[:frame].should == [[0, 0], [100, 100]]
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should let you define properties for many stylenames' do
|
38
|
+
@stylesheet.query(:example_label)[:backgroundColor].should == :blue
|
39
|
+
@stylesheet.query(:example_textfield)[:backgroundColor].should == :blue
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should return {} for unknown stylenames' do
|
43
|
+
@stylesheet.query(:dingbats).should == {}
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'with multiple rules for the same stylename' do
|
48
|
+
before do
|
49
|
+
@stylesheet = Teacup::Stylesheet.new do
|
50
|
+
style :example_button,
|
51
|
+
title: "Example!",
|
52
|
+
frame: [[0, 0], [100, 100]],
|
53
|
+
layer: {
|
54
|
+
borderRadius: 10,
|
55
|
+
opacity: 0.5
|
56
|
+
}
|
57
|
+
|
58
|
+
style :example_button,
|
59
|
+
backgroundColor: :blue,
|
60
|
+
frame: [[100, 100], [200, 200]],
|
61
|
+
layer: {
|
62
|
+
borderRadius: 20
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'should union different properties' do
|
68
|
+
@stylesheet.query(:example_button)[:title].should == "Example!"
|
69
|
+
@stylesheet.query(:example_button)[:backgroundColor].should == :blue
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should give later properties precedence' do
|
73
|
+
@stylesheet.query(:example_button)[:frame].should == [[100, 100], [200, 200]]
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should give merge hashes' do
|
77
|
+
@stylesheet.query(:example_button)[:layer][:borderRadius].should == 20
|
78
|
+
@stylesheet.query(:example_button)[:layer][:opacity].should == 0.5
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'when a stylename extends another' do
|
83
|
+
before do
|
84
|
+
@stylesheet = Teacup::Stylesheet.new do
|
85
|
+
style :label,
|
86
|
+
backgroundColor: :blue,
|
87
|
+
font: "IMPACT"
|
88
|
+
|
89
|
+
style :left_label, extends: :label,
|
90
|
+
backgroundColor: :green,
|
91
|
+
left: 100,
|
92
|
+
width: 100
|
93
|
+
|
94
|
+
style :how_much, extends: :left_label,
|
95
|
+
backgroundColor: :red,
|
96
|
+
top: 200,
|
97
|
+
height: 200
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
it 'should put extended properties into an "extends" Array of Hashes' do
|
103
|
+
@stylesheet.query(:left_label)[:font].should == "IMPACT"
|
104
|
+
@stylesheet.query(:left_label)[:left].should == 100
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'should give the "lowest" style properties precedence' do
|
108
|
+
@stylesheet.query(:left_label)[:backgroundColor].should == :green
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'should follow a chain of extends' do
|
112
|
+
@stylesheet.query(:how_much)[:backgroundColor].should == :red
|
113
|
+
@stylesheet.query(:how_much)[:left] == 100
|
114
|
+
@stylesheet.query(:how_much)[:font] == "IMPACT"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'importing another stylesheet' do
|
119
|
+
|
120
|
+
before do
|
121
|
+
@oo_name_importer = Teacup::Stylesheet.new do
|
122
|
+
import :importedbyname
|
123
|
+
|
124
|
+
style :label,
|
125
|
+
backgroundColor: :blue
|
126
|
+
end
|
127
|
+
|
128
|
+
Teacup::Stylesheet.new(:importedbyname) do
|
129
|
+
style :label,
|
130
|
+
title: "Imported by name"
|
131
|
+
end
|
132
|
+
|
133
|
+
@name_importer = Teacup::Stylesheet.new do
|
134
|
+
import :importedbyname
|
135
|
+
|
136
|
+
style :label,
|
137
|
+
backgroundColor: :blue
|
138
|
+
end
|
139
|
+
|
140
|
+
Teacup::Stylesheet.new(:importrecursion) do
|
141
|
+
import :importrecursion
|
142
|
+
|
143
|
+
style :label,
|
144
|
+
importtitle: "Import recursion"
|
145
|
+
end
|
146
|
+
|
147
|
+
@broken_stylesheet = Teacup::Stylesheet.new do
|
148
|
+
import :NonExtant
|
149
|
+
|
150
|
+
style :label,
|
151
|
+
backgroundColor: :blue
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
after do
|
156
|
+
Teacup::Stylesheet.stylesheets.delete(:importedbyname)
|
157
|
+
Teacup::Stylesheet.stylesheets.delete(:importrecursion)
|
158
|
+
end
|
159
|
+
|
160
|
+
it 'should work with a name' do
|
161
|
+
@name_importer.query(:label)[:title].should == "Imported by name"
|
162
|
+
@name_importer.query(:label)[:backgroundColor].should == :blue
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'should work with a name even if defined out of order' do
|
166
|
+
@oo_name_importer.query(:label)[:title].should == "Imported by name"
|
167
|
+
@oo_name_importer.query(:label)[:backgroundColor].should == :blue
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should work with a value' do
|
171
|
+
imported_anonymously = Teacup::Stylesheet.new do
|
172
|
+
style :label,
|
173
|
+
title: "Imported anonymously"
|
174
|
+
end
|
175
|
+
|
176
|
+
anonymous_importer = Teacup::Stylesheet.new do
|
177
|
+
import imported_anonymously
|
178
|
+
|
179
|
+
style :label,
|
180
|
+
backgroundColor: :blue
|
181
|
+
end
|
182
|
+
|
183
|
+
anonymous_importer.query(:label)
|
184
|
+
anonymous_importer.query(:label)[:title].should == "Imported anonymously"
|
185
|
+
@oo_name_importer.query(:label)[:backgroundColor].should == :blue
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'should not explode if a cycle is created' do
|
189
|
+
Teacup::Stylesheet[:importrecursion].query(:label)[:importtitle].should == "Import recursion"
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'should explode if an unknown stylesheet is imported' do
|
193
|
+
error = nil
|
194
|
+
begin
|
195
|
+
@broken_stylesheet.query(:label)
|
196
|
+
rescue Exception => error
|
197
|
+
end
|
198
|
+
error.nil?.should == false
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
describe 'querying imported stylesheets' do
|
203
|
+
before do
|
204
|
+
@most_generic = Teacup::Stylesheet.new :most_generic do
|
205
|
+
style :label,
|
206
|
+
backgroundColor: :blue,
|
207
|
+
title: "Most generic"
|
208
|
+
|
209
|
+
style :button,
|
210
|
+
title: "Click Here!"
|
211
|
+
end
|
212
|
+
|
213
|
+
@stylesheet = Teacup::Stylesheet.new :stylesheet do
|
214
|
+
import :most_generic
|
215
|
+
|
216
|
+
style :label,
|
217
|
+
borderRadius: 10,
|
218
|
+
title: "Stylesheet"
|
219
|
+
end
|
220
|
+
|
221
|
+
@most_specific = Teacup::Stylesheet.new :most_specific do
|
222
|
+
import :stylesheet
|
223
|
+
|
224
|
+
style :label,
|
225
|
+
title: "Most specific",
|
226
|
+
font: "IMPACT"
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
it 'should union different properties for the same rule' do
|
231
|
+
@stylesheet.query(:label)[:backgroundColor].should == :blue
|
232
|
+
@stylesheet.query(:label)[:borderRadius] == 10
|
233
|
+
end
|
234
|
+
|
235
|
+
it 'should give the importer precedence' do
|
236
|
+
@stylesheet.query(:label)[:title].should == "Stylesheet"
|
237
|
+
end
|
238
|
+
|
239
|
+
it 'should follow chains of imports' do
|
240
|
+
@most_specific.query(:label)[:title].should == "Most specific"
|
241
|
+
@most_specific.query(:label)[:font].should == "IMPACT"
|
242
|
+
@most_specific.query(:label)[:borderRadius].should == 10
|
243
|
+
@most_specific.query(:label)[:backgroundColor].should == :blue
|
244
|
+
end
|
245
|
+
|
246
|
+
it 'should allow querying a rule which exists only in the importee' do
|
247
|
+
@stylesheet.query(:button)[:title].should == "Click Here!"
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
describe 'precedence tree flattening' do
|
252
|
+
it 'should give precedence to later imports' do
|
253
|
+
stylesheet = Teacup::Stylesheet.new do
|
254
|
+
import Teacup::Stylesheet.new{
|
255
|
+
style :label_bla,
|
256
|
+
text: "Imported first",
|
257
|
+
backgroundColor: :blue
|
258
|
+
}
|
259
|
+
|
260
|
+
import Teacup::Stylesheet.new{
|
261
|
+
style :label_bla,
|
262
|
+
text: "Imported last"
|
263
|
+
}
|
264
|
+
end
|
265
|
+
stylesheet.query(:label_bla)[:text].should == "Imported last"
|
266
|
+
stylesheet.query(:label_bla)[:backgroundColor].should == :blue
|
267
|
+
end
|
268
|
+
|
269
|
+
it 'should give precedence to less-nested imports' do
|
270
|
+
stylesheet = Teacup::Stylesheet.new do
|
271
|
+
import Teacup::Stylesheet.new {
|
272
|
+
import Teacup::Stylesheet.new {
|
273
|
+
style :button,
|
274
|
+
text: "Indirect import",
|
275
|
+
backgroundColor: :blue
|
276
|
+
}
|
277
|
+
|
278
|
+
style :button,
|
279
|
+
text: "Direct import"
|
280
|
+
}
|
281
|
+
end
|
282
|
+
|
283
|
+
stylesheet.query(:button)[:text].should == "Direct import"
|
284
|
+
stylesheet.query(:button)[:backgroundColor].should == :blue
|
285
|
+
end
|
286
|
+
|
287
|
+
it 'should extend multiple entries, and prefer the first' do
|
288
|
+
stylesheet = Teacup::Stylesheet.new do
|
289
|
+
style :input,
|
290
|
+
origin: [0, 0],
|
291
|
+
backgroundColor: :white
|
292
|
+
|
293
|
+
style :textfield,
|
294
|
+
text: "Extended",
|
295
|
+
backgroundColor: :blue
|
296
|
+
|
297
|
+
style :my_textfield, extends: [:textfield, :input],
|
298
|
+
borderRadius: 10
|
299
|
+
end
|
300
|
+
|
301
|
+
stylesheet.query(:my_textfield)[:text].should == "Extended"
|
302
|
+
stylesheet.query(:my_textfield)[:backgroundColor].should == :blue
|
303
|
+
stylesheet.query(:my_textfield)[:origin].should == [0, 0]
|
304
|
+
stylesheet.query(:my_textfield)[:borderRadius].should == 10
|
305
|
+
end
|
306
|
+
|
307
|
+
it 'should give precedence to imported rules over extended rules' do
|
308
|
+
stylesheet = Teacup::Stylesheet.new do
|
309
|
+
style :textfield,
|
310
|
+
text: "Extended",
|
311
|
+
backgroundColor: :blue
|
312
|
+
|
313
|
+
style :my_textfield, extends: :textfield,
|
314
|
+
borderRadius: 10
|
315
|
+
|
316
|
+
import Teacup::Stylesheet.new{
|
317
|
+
style :my_textfield,
|
318
|
+
text: "Imported"
|
319
|
+
}
|
320
|
+
end
|
321
|
+
|
322
|
+
stylesheet.query(:my_textfield)[:text].should == "Imported"
|
323
|
+
stylesheet.query(:my_textfield)[:backgroundColor].should == :blue
|
324
|
+
stylesheet.query(:my_textfield)[:borderRadius].should == 10
|
325
|
+
end
|
326
|
+
|
327
|
+
it 'should import rules using a deep merge strategy' do
|
328
|
+
stylesheet = Teacup::Stylesheet.new do
|
329
|
+
import Teacup::Stylesheet.new{
|
330
|
+
style :my_textfield,
|
331
|
+
layer: {
|
332
|
+
borderRadius: 1,
|
333
|
+
opacity: 0.5
|
334
|
+
}
|
335
|
+
}
|
336
|
+
|
337
|
+
style :my_textfield,
|
338
|
+
layer: {
|
339
|
+
borderRadius: 10
|
340
|
+
}
|
341
|
+
end
|
342
|
+
|
343
|
+
stylesheet.query(:my_textfield)[:layer][:opacity].should == 0.5
|
344
|
+
stylesheet.query(:my_textfield)[:layer][:borderRadius].should == 10
|
345
|
+
end
|
346
|
+
|
347
|
+
end
|
348
|
+
end
|
data/spec/view_spec.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
describe "Teacup::View" do
|
2
|
+
|
3
|
+
before do
|
4
|
+
@view = UILabel.new
|
5
|
+
|
6
|
+
@stylesheet = Teacup::Stylesheet.new do
|
7
|
+
style :label,
|
8
|
+
text: "Stylesheet1 Label1"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'stylename=' do
|
13
|
+
it 'should work' do
|
14
|
+
@view.stylename = :label
|
15
|
+
@view.stylename.should == :label
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should set the style when a stylesheet is there' do
|
19
|
+
@view.stylesheet = @stylesheet
|
20
|
+
@view.stylename = :label
|
21
|
+
|
22
|
+
@view.stylename.should == :label
|
23
|
+
@view.text.should == "Stylesheet1 Label1"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'stylesheet=' do
|
28
|
+
it 'should work' do
|
29
|
+
@view.stylesheet = @stylesheet
|
30
|
+
@view.stylesheet.should == @stylesheet
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should set the style when a stylename is there' do
|
34
|
+
@view.stylename = :label
|
35
|
+
@view.stylesheet = @stylesheet
|
36
|
+
|
37
|
+
@view.text.should == "Stylesheet1 Label1"
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'should push the stylesheet down to all subviews' do
|
41
|
+
listener = UIView.new
|
42
|
+
@view.addSubview(listener)
|
43
|
+
@view.stylesheet = @stylesheet
|
44
|
+
listener.stylesheet.should == @stylesheet
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'import' do
|
49
|
+
before do
|
50
|
+
@import_view = UIView.new
|
51
|
+
|
52
|
+
Teacup::Stylesheet.new :to_import do
|
53
|
+
style :view,
|
54
|
+
top: 20,
|
55
|
+
portrait: {
|
56
|
+
top: 30
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
@import_stylesheet = Teacup::Stylesheet.new do
|
61
|
+
import :to_import
|
62
|
+
|
63
|
+
style :view,
|
64
|
+
top: 40
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should always prefer more local styles' do
|
69
|
+
@import_view.stylename = :view
|
70
|
+
@import_view.stylesheet = @import_stylesheet
|
71
|
+
|
72
|
+
@import_view.restyle!(orientation=UIInterfaceOrientationPortrait)
|
73
|
+
@import_view.frame.origin.y.should == 40
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe 'style' do
|
78
|
+
|
79
|
+
it 'should assign any random property that works' do
|
80
|
+
@view.style(tag: 1)
|
81
|
+
@view.tag.should == 1
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'should convert left/top/width/height into frame' do
|
85
|
+
@view.style(left: 1, top: 2, width: 3, height: 4)
|
86
|
+
@view.frame.origin.x.should == 1
|
87
|
+
@view.frame.origin.y.should == 2
|
88
|
+
@view.frame.size.width.should == 3
|
89
|
+
@view.frame.size.height.should == 4
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'should assign any random property that works on the layer' do
|
93
|
+
@view.style(layer: { borderWidth: 10 })
|
94
|
+
@view.layer.borderWidth.should == 10
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should warn about unknown thingies' do
|
98
|
+
@view.style(partyTime: :excellent)
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
data/teacup.gemspec
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
require File.expand_path('../lib/teacup/version.rb', __FILE__)
|
2
|
-
require File.expand_path('../lib/teacup/contributors.rb', __FILE__)
|
3
2
|
|
4
3
|
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'teacup'
|
5
|
+
gem.version = Teacup::VERSION
|
6
|
+
|
7
|
+
gem.authors = ['the rubymotion community']
|
5
8
|
|
6
|
-
gem.authors = Teacup::CONTRIBUTORS
|
7
9
|
gem.description = <<-DESC
|
8
|
-
|
9
|
-
|
10
|
-
DESC
|
10
|
+
Teacup is a community-driven DSL for making CSS-like styling, and layouts for
|
11
|
+
complex and simple iOS apps with RubyMotion.
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
By aiming at making RubyMotion less tedious, Teacup makes RubyMotion feel like
|
14
|
+
interface builder, and work like a CSS stylesheet.
|
15
|
+
DESC
|
14
16
|
|
15
|
-
gem.
|
16
|
-
|
17
|
-
gem.executables = gem.files.grep(%r(^bin/)).map { |f| File.basename(f) }
|
18
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
17
|
+
gem.summary = 'A community-driven DSL for creating user interfaces on iOS.'
|
18
|
+
gem.homepage = 'https://github.com/rubymotion/teacup'
|
19
19
|
|
20
|
-
gem.
|
20
|
+
gem.files = `git ls-files`.split($\)
|
21
21
|
gem.require_paths = ['lib']
|
22
|
-
gem.
|
22
|
+
gem.test_files = gem.files.grep(%r{^spec/})
|
23
23
|
|
24
24
|
gem.add_dependency 'rake'
|
25
25
|
gem.add_development_dependency 'rspec'
|
metadata
CHANGED
@@ -1,19 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teacup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
9
|
-
- Colin Thomas-Arnold
|
10
|
-
- Conrad Irwin
|
11
|
-
- Roland Oth
|
12
|
-
- Vladimir Pouzanov
|
8
|
+
- the rubymotion community
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
date: 2012-
|
12
|
+
date: 2012-07-24 00:00:00.000000000 Z
|
17
13
|
dependencies:
|
18
14
|
- !ruby/object:Gem::Dependency
|
19
15
|
name: rake
|
@@ -47,58 +43,61 @@ dependencies:
|
|
47
43
|
- - ! '>='
|
48
44
|
- !ruby/object:Gem::Version
|
49
45
|
version: '0'
|
50
|
-
description: !
|
51
|
-
|
46
|
+
description: ! 'Teacup is a community-driven DSL for making CSS-like styling, and
|
47
|
+
layouts for
|
48
|
+
|
49
|
+
complex and simple iOS apps with RubyMotion.
|
50
|
+
|
51
|
+
|
52
|
+
By aiming at making RubyMotion less tedious, Teacup makes RubyMotion feel like
|
53
|
+
|
54
|
+
interface builder, and work like a CSS stylesheet.
|
55
|
+
|
56
|
+
'
|
52
57
|
email:
|
53
58
|
executables: []
|
54
59
|
extensions: []
|
55
60
|
extra_rdoc_files: []
|
56
61
|
files:
|
57
62
|
- .gitignore
|
58
|
-
- .
|
63
|
+
- CHANGES.md
|
59
64
|
- Dofile
|
60
65
|
- Gemfile
|
61
66
|
- Gemfile.lock
|
67
|
+
- LICENSE
|
62
68
|
- README.md
|
63
69
|
- Rakefile
|
70
|
+
- app/app_delegate.rb
|
71
|
+
- app/controllers/first_controller.rb
|
72
|
+
- app/controllers/landscape_only_controller.rb
|
73
|
+
- app/controllers/tableview_controller.rb
|
74
|
+
- app/styles/main_styles.rb
|
75
|
+
- app/views/custom_view.rb
|
76
|
+
- lib/dummy.rb
|
64
77
|
- lib/teacup.rb
|
65
|
-
- lib/teacup/
|
66
|
-
- lib/teacup/core_extensions/ui_view.rb
|
67
|
-
- lib/teacup/core_extensions/ui_view_controller.rb
|
78
|
+
- lib/teacup/handler.rb
|
68
79
|
- lib/teacup/layout.rb
|
69
|
-
- lib/teacup/
|
80
|
+
- lib/teacup/merge_defaults.rb
|
81
|
+
- lib/teacup/style.rb
|
82
|
+
- lib/teacup/stylesheet.rb
|
83
|
+
- lib/teacup/stylesheet_extensions/rotation.rb
|
70
84
|
- lib/teacup/version.rb
|
71
|
-
- lib/teacup/
|
72
|
-
-
|
73
|
-
-
|
74
|
-
-
|
75
|
-
-
|
76
|
-
- proposals/other/app/config/boot.rb
|
77
|
-
- proposals/other/app/config/initializers/twitter.rb
|
78
|
-
- proposals/other/app/controllers/events_controller.rb
|
79
|
-
- proposals/other/app/controllers/venues_controller.rb
|
80
|
-
- proposals/other/app/db/README.md
|
81
|
-
- proposals/other/app/db/migrations/20120514201043_create_events.rb
|
82
|
-
- proposals/other/app/db/migrations/20120514201044_add_price_to_events.rb
|
83
|
-
- proposals/other/app/db/migrations/20120514201045_create_venues.rb
|
84
|
-
- proposals/other/app/db/schema.rb
|
85
|
-
- proposals/other/app/models/event.rb
|
86
|
-
- proposals/other/app/models/venue.rb
|
87
|
-
- proposals/other/app/views/events/edit.ipad.rb
|
88
|
-
- proposals/other/app/views/events/edit.iphone.rb
|
89
|
-
- proposals/other/app/views/events/show.ipad.rb
|
90
|
-
- proposals/other/app/views/events/show.iphone.rb
|
85
|
+
- lib/teacup/z_core_extensions/ca_layer.rb
|
86
|
+
- lib/teacup/z_core_extensions/ui_view.rb
|
87
|
+
- lib/teacup/z_core_extensions/ui_view_controller.rb
|
88
|
+
- lib/teacup/z_core_extensions/ui_view_getters.rb
|
89
|
+
- lib/teacup/z_core_extensions/z_handlers.rb
|
91
90
|
- samples/Hai/.gitignore
|
92
91
|
- samples/Hai/Rakefile
|
93
92
|
- samples/Hai/app/app_delegate.rb
|
94
93
|
- samples/Hai/app/hai_controller.rb
|
95
94
|
- samples/Hai/spec/main_spec.rb
|
96
|
-
- samples/Hai/styles/
|
97
|
-
- samples/Hai/styles/ipad_vertical.rb
|
95
|
+
- samples/Hai/styles/iphone.rb
|
98
96
|
- samples/README.md
|
99
|
-
- spec/
|
100
|
-
- spec/
|
101
|
-
- spec/
|
97
|
+
- spec/main_spec.rb
|
98
|
+
- spec/style_spec.rb
|
99
|
+
- spec/stylesheet_spec.rb
|
100
|
+
- spec/view_spec.rb
|
102
101
|
- teacup.gemspec
|
103
102
|
homepage: https://github.com/rubymotion/teacup
|
104
103
|
licenses: []
|
@@ -115,16 +114,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
114
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
115
|
none: false
|
117
116
|
requirements:
|
118
|
-
- - ! '
|
117
|
+
- - ! '>='
|
119
118
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
119
|
+
version: '0'
|
121
120
|
requirements: []
|
122
121
|
rubyforge_project:
|
123
122
|
rubygems_version: 1.8.19
|
124
123
|
signing_key:
|
125
124
|
specification_version: 3
|
126
|
-
summary:
|
125
|
+
summary: A community-driven DSL for creating user interfaces on iOS.
|
127
126
|
test_files:
|
128
|
-
- spec/
|
129
|
-
- spec/
|
130
|
-
- spec/
|
127
|
+
- spec/main_spec.rb
|
128
|
+
- spec/style_spec.rb
|
129
|
+
- spec/stylesheet_spec.rb
|
130
|
+
- spec/view_spec.rb
|
131
|
+
has_rdoc:
|
data/.rspec
DELETED
data/lib/teacup/contributors.rb
DELETED