sugarcube 0.13.5 → 0.13.7

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012, Fusionbox, Inc. http://www.fusionbox.com/
1
+ Copyright (c) 2012, RubyMotion Community. http://github.com/rubymotion
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -23,4 +23,4 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
23
 
24
24
  The views and conclusions contained in the software and documentation are those
25
25
  of the authors and should not be interpreted as representing official policies,
26
- either expressed or implied, of the Sugarcube Project.
26
+ either expressed or implied, of the SugarCube Project.
data/README.md CHANGED
@@ -91,6 +91,10 @@ Examples
91
91
  13.nth # => 'th'
92
92
  21.nth # => 'st'
93
93
  23.nth # => 'rd'
94
+
95
+ NSDate.new # => 2013-01-03 11:42:24 -0700
96
+ 5.days.ago # => 2012-12-29 11:42:24 -0700
97
+ 5.days.hence # => 2013-01-08 11:42:24 -0700
94
98
  ```
95
99
 
96
100
  Numeric
@@ -367,11 +371,19 @@ NSError.new('Error Message', code: 404, userInfo: { warnings: ['blabla'] })
367
371
  "hello"._ # == "hello".localized
368
372
  "hello".localized('Hello!', 'hello_table') # => ...("hello", value:'Hello!', table:'hello_table')
369
373
 
370
- # file location
374
+ # file operations
371
375
  "my.plist".exists? # => NSFileManager.defaultManager.fileExistsAtPath("my.plist")
372
376
  "my.plist".document # => NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true)[0].stringByAppendingPathComponent("my.plist")
373
377
  "my.plist".remove! # => NSFileManager.defaultManager.removeItemAtPath("my.plist".document, error: error) (returns error, if any occurred)
374
378
 
379
+ # get the resource path, useful if you include json files or images you manipulate in the app
380
+ "my.plist".resource # => NSBundle.mainBundle.resourcePath.stringByAppendingPathComponent("my.plist")
381
+ # same, but get a URL instead - often used to display a static HTML page that is stored in resources
382
+ "index.html".resource_url # => NSBundle.mainBundle.URLForResource("index", withExtension:"html")
383
+
384
+ # access data from Info.plist
385
+ "CFBundleVersion".info_plist # => NSBundle.mainBundle.infoDictionary["CFBundleVersion"]
386
+
375
387
  # NSURL
376
388
  "https://github.com".nsurl # => NSURL.URLWithString("https://github.com")
377
389
  ```
@@ -533,17 +545,29 @@ self.view.hide # => self.hidden = true
533
545
 
534
546
  ###### Animations
535
547
 
536
- jQuery-like animation methods.
548
+ jQuery-like animation methods. They accept a "completed" callback handler that
549
+ accepts an optional 'completed' boolean (the
550
+ `UIView.animateWithDuration(delay:options:animations:completion:)`) method
551
+ provides it to all its completion handlers).
537
552
 
538
553
  ```ruby
539
554
  # default timeout is 0.3
540
- view.fade_out { |view|
555
+ view.fade_out
556
+
557
+ # with a callback
558
+ view.fade_out {
559
+ view.removeFromSuperview
560
+ }
561
+
562
+ # and the completed argument
563
+ view.fade_out { |completed|
541
564
  view.removeFromSuperview
542
565
  }
543
- # options:
566
+
567
+ # fade_out options
544
568
  view.fade_out(0.5, delay: 0,
545
569
  options: UIViewAnimationOptionCurveLinear,
546
- opacity: 0.5) { |view|
570
+ opacity: 0.5) {
547
571
  view.removeFromSuperview
548
572
  }
549
573
 
@@ -565,6 +589,21 @@ view.shake offset: 20, repeat: 10, duration: 5, keypath: 'transform.translation.
565
589
  superview.shake offset: 0.1, repeat: 2, duration: 0.5, keypath: 'transform.rotation'
566
590
  ```
567
591
 
592
+ Using the completed callback you can string animations together for a low-tech
593
+ animation sequence.
594
+
595
+ ```ruby
596
+ view.slide(:left, 20) {
597
+ view.slide(:up, 20) {
598
+ view.slide(:right, 20) {
599
+ view.slide(:down, 20) {
600
+ view.fade_out
601
+ }
602
+ }
603
+ }
604
+ }
605
+ ```
606
+
568
607
  ##### View factories
569
608
 
570
609
  ###### UIButton
data/Rakefile CHANGED
@@ -1,3 +1,8 @@
1
1
  $:.unshift('/Library/RubyMotion/lib')
2
2
  require 'motion/project'
3
3
  require './lib/sugarcube'
4
+
5
+ Motion::Project::App.setup do |app|
6
+ # Use `rake config' to see complete project settings.
7
+ app.name = 'SugarCube'
8
+ end
@@ -32,4 +32,12 @@ class Fixnum
32
32
  return "th"
33
33
  end
34
34
 
35
+ def ago
36
+ NSDate.new - self
37
+ end
38
+
39
+ def hence
40
+ NSDate.new + self
41
+ end
42
+
35
43
  end
@@ -28,4 +28,32 @@ class NSString
28
28
  NSFileManager.defaultManager.fileExistsAtPath(self.resource)
29
29
  end
30
30
 
31
+ def resource_url
32
+ a = self.split(".")
33
+ ext = a.pop if a.size >= 2
34
+ NSBundle.mainBundle.URLForResource(a.join("."), withExtension:ext)
35
+ end
36
+
37
+ # It's convenient to store a property which is dependent on an environment to
38
+ # Info.plist. For instance, to use a different server between development and
39
+ # release versions.
40
+ #
41
+ # In Rakefile
42
+ # <code>
43
+ # app.release do
44
+ # app.info_plist['VerifyURL'] = "https://buy.itunes.apple.com/verifyReceipt"
45
+ # end
46
+ # app.development do
47
+ # app.info_plist['VerifyURL'] = "https://sandbox.itunes.apple.com/verifyReceipt"
48
+ # end
49
+ # </code>
50
+ #
51
+ # You can easily get this value at run time like this:
52
+ # <code>
53
+ # 'VerifyURL'.info_plist
54
+ # </code>
55
+ def info_plist
56
+ NSBundle.mainBundle.infoDictionary.valueForKey self
57
+ end
58
+
31
59
  end
@@ -3,7 +3,7 @@ class UIColor
3
3
  system_color = nil
4
4
  Symbol.uicolors.each_pair do |color, method|
5
5
  if UIColor.send(method) == self
6
- if self.alpha < 1
6
+ if self.alpha && self.alpha < 1
7
7
  system_color = "UIColor.#{method}(#{alpha})"
8
8
  else
9
9
  system_color = "UIColor.#{method}"
@@ -20,7 +20,7 @@ class UIColor
20
20
  my_color = red + green + blue
21
21
 
22
22
  inside = my_color.to_s(16)
23
- inside = '0x' + '0' * (6 - inside.length)
23
+ inside = '0x' + '0' * (6 - inside.length) + inside
24
24
 
25
25
  Symbol.css_colors.each_pair do |color, hex|
26
26
  if hex == my_color
@@ -190,4 +190,11 @@ class UIImage
190
190
  resizableImageWithCapInsets(insets, resizingMode:UIImageResizingModeStretch)
191
191
  end
192
192
 
193
+ ##|
194
+ ##| imageWithAlignmentRectInsets
195
+ ##|
196
+ def alignment_rect(insets=UIEdgeInsetsZero)
197
+ imageWithAlignmentRectInsets(insets)
198
+ end
199
+
193
200
  end
@@ -1,3 +1,3 @@
1
1
  module SugarCube
2
- Version = '0.13.5'
2
+ Version = '0.13.7'
3
3
  end
@@ -0,0 +1,68 @@
1
+ describe NSString do
2
+
3
+ describe 'resource()' do
4
+ describe '"info.plist".resource' do
5
+ before { @it = "info.plist".resource }
6
+ it 'should start with "/Users"' do
7
+ @it.hasPrefix("/Users").should == true
8
+ end
9
+ it 'should end with "SugarCube_spec.app/info.plist"' do
10
+ @it.hasSuffix("SugarCube_spec.app/info.plist").should == true
11
+ end
12
+ end
13
+ describe '"PkgInfo".resource' do
14
+ before { @it = "PkgInfo".resource }
15
+ it 'should start with "/Users"' do
16
+ @it.hasPrefix("/Users").should == true
17
+ end
18
+ it 'should end with "SugarCube_spec.app/PkgInfo"' do
19
+ @it.hasSuffix("SugarCube_spec.app/PkgInfo").should == true
20
+ end
21
+ end
22
+ end
23
+
24
+
25
+ describe 'resource_url()' do
26
+ =begin
27
+ # it fail. returns nil.
28
+ # Maybe info.plist is not permitted to get as NSURL
29
+ describe '"info.plist".resource_url' do
30
+ before { @it = "info.plist".resource_url.absoluteString }
31
+ it 'should start with "file://localhost/Users"' do
32
+ @it.hasPrefix("file://localhost/Users").should == true
33
+ end
34
+ it 'should end with "SugarCube_spec.app/info.plist"' do
35
+ @it.hasSuffix("SugarCube_spec.app/info.plist").should == true
36
+ end
37
+ end
38
+ =end
39
+
40
+ describe '"PkgInfo".resource_url' do
41
+ before { @it = "PkgInfo".resource_url.absoluteString }
42
+ it 'should start with "file://localhost/Users"' do
43
+ @it.hasPrefix("file://localhost/Users").should == true
44
+ end
45
+ it 'should end with "SugarCube_spec.app/PkgInfo"' do
46
+ @it.hasSuffix("SugarCube_spec.app/PkgInfo").should == true
47
+ end
48
+ end
49
+ end
50
+
51
+ describe 'info_plist' do
52
+ describe '"CFBundleVersion".info_plist' do
53
+ before { @it = "CFBundleVersion".info_plist }
54
+ it 'should be "1.0"' do
55
+ @it.should == "1.0"
56
+ end
57
+ end
58
+
59
+ describe '"CFBundleSupportedPlatforms".info_plist' do
60
+ before { @it = "CFBundleSupportedPlatforms".info_plist }
61
+ it 'should be ["iPhoneOS"]' do
62
+ @it.should == ["iPhoneOS"]
63
+ end
64
+ end
65
+ end
66
+
67
+ end
68
+
@@ -0,0 +1,10 @@
1
+ describe 'Symbol#uicolor' do
2
+
3
+ it "should return css color names" do
4
+ Symbol.css_colors.each do |name, val|
5
+ color = val.uicolor
6
+ color.to_s.should == "UIColor.color(#{name.inspect})"
7
+ end
8
+ end
9
+
10
+ end
data/sugarcube.gemspec CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |gem|
5
5
  gem.name = 'sugarcube'
6
6
  gem.version = SugarCube::Version
7
7
 
8
- gem.authors = ['Colin Thomas-Arnold', 'Fusionbox']
8
+ gem.authors = ['Colin T.A. Gray', 'Thom Parkin', 'Katsuyoshi Ito', 'Fusionbox']
9
9
  gem.email = ['colinta@gmail.com']
10
10
  gem.summary = %{Extensions for Ruby to make Rubymotion development more enjoyable, and hopefully more rubyesque!}
11
11
  gem.description = <<-DESC
metadata CHANGED
@@ -1,16 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugarcube
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.5
4
+ version: 0.13.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Colin Thomas-Arnold
8
+ - Colin T.A. Gray
9
+ - Thom Parkin
10
+ - Katsuyoshi Ito
9
11
  - Fusionbox
10
12
  autorequire:
11
13
  bindir: bin
12
14
  cert_chain: []
13
- date: 2012-12-28 00:00:00.000000000 Z
15
+ date: 2013-01-11 00:00:00.000000000 Z
14
16
  dependencies: []
15
17
  description: ! '== Description
16
18
 
@@ -101,6 +103,8 @@ files:
101
103
  - lib/sugarcube/uuid.rb
102
104
  - lib/sugarcube/version.rb
103
105
  - spec/core_graphics_spec.rb
106
+ - spec/nsstring_files_spec.rb
107
+ - spec/symbol_uicolor_spec.rb
104
108
  - sugarcube.gemspec
105
109
  homepage: https://github.com/rubymotion/sugarcube
106
110
  licenses: []
@@ -129,4 +133,6 @@ summary: Extensions for Ruby to make Rubymotion development more enjoyable, and
129
133
  more rubyesque!
130
134
  test_files:
131
135
  - spec/core_graphics_spec.rb
136
+ - spec/nsstring_files_spec.rb
137
+ - spec/symbol_uicolor_spec.rb
132
138
  has_rdoc: