sugarcube 3.0.8 → 3.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1180cac9c7130d667692fac0aca24ab8ec5519e
4
- data.tar.gz: 62a74a7e943af82a9824956e798b4a762d83d4c0
3
+ metadata.gz: 4a745c8ca1508da0db8c5282c8e467a95da3c764
4
+ data.tar.gz: 3dd4c5bdaf1344b81d1c530692213410c4336eae
5
5
  SHA512:
6
- metadata.gz: 57df49d17693debd01a9837381892c9274245bb85ba25742c68b014e2a8ee1e84ca0f7d27d3959c19d5093d227fb07abb7dccd6c68fc17719bf0e2589612417f
7
- data.tar.gz: 1edec4a066fa9bd9543cc61342bbcff2364c8cbca4afe593b1e15e59648f93c4c3f62e15620337e1ca93b8d7021a48c662879de1f212726afa82e7f5725323fe
6
+ metadata.gz: 2b708aa93d0816e2d7d49b0bc5855927492e59f98301d52ef4438200c6b31fd0ee3db126661d14c7785da237cd194636a963ee4d65b9d19e36c987a2489d2fca
7
+ data.tar.gz: 29df8410a6f249ada0716b5babbebadf1d94d575dc706cf4f9afa7b77b5b975adab882ff1e7096a5c2129cd650270eb3696e5a16f63fc98288e548fa4336c9a8
data/README.md CHANGED
@@ -1585,8 +1585,7 @@ NSUserDefaults['test'] = test # saved
1585
1585
  CoreGraphics
1586
1586
  --------------
1587
1587
 
1588
- *This package is installed automatically, because so many other packages depend
1589
- on it. It does not add any methods to built-in classes.*
1588
+ *This package is included by a few of the other packages, like repl, animations, and image.*
1590
1589
 
1591
1590
  ###### Is it `CGMakeRect` or `CGRectMake`? What arguments does `CGRect.new` take?
1592
1591
 
@@ -1625,6 +1624,36 @@ f = Rect(p, [w, h])
1625
1624
  f = Rect([x, y], s)
1626
1625
  ```
1627
1626
 
1627
+ Base64
1628
+ ------
1629
+
1630
+ > `require 'sugarcube-base64'`
1631
+
1632
+ **Todo: add UIImage/NSImage support**
1633
+ **Todo: add Android support?**
1634
+
1635
+ Uses the `NSData#base64EncodedStringWithOptions` and
1636
+ `NSData#initWithBase64EncodedData` methods to encode/decode base64 data. Normal
1637
+ use is to convert your image/binary data into an `NSData` instance, and then
1638
+ call `to_base64` on that object.
1639
+
1640
+ There is a helper on `NSString`, so you can convert an `NSString` instance
1641
+ directly to base-64, using UTF8 encoding (or any encoding Apple supports).
1642
+
1643
+ ```ruby
1644
+ base64_str = 'test string'.to_base64
1645
+ ...
1646
+ NSString.from_base64(base64_str) == 'test string'
1647
+
1648
+ # require 'sugarcube-nsdata'
1649
+ image = 'some_image'.uiimage
1650
+ data = image.nsdata # defaults to PNG data
1651
+ base64_str = data.to_base64
1652
+ ...
1653
+ data = NSData.from_base64(base64_str)
1654
+ image = data.uiimage # defaults to reading PNG data
1655
+ ```
1656
+
1628
1657
  Pointer
1629
1658
  -----
1630
1659
 
@@ -0,0 +1,16 @@
1
+ class NSData
2
+
3
+ # converts an NSData instance into a base64 string.
4
+ # @todo Support NSDataBase64EncodingOptions options - easy to add, but I want
5
+ # to add specs, too, and a hash format (e.g. line_length: 64 =>
6
+ # NSDataBase64Encoding64CharacterLineLength).
7
+ def to_base64
8
+ self.base64EncodedStringWithOptions(0)
9
+ end
10
+
11
+ # factory method to convert a base64 string into NSData.
12
+ def self.from_base64(base64_data)
13
+ NSData.alloc.initWithBase64EncodedData(base64_data, options: 0)
14
+ end
15
+
16
+ end
@@ -0,0 +1,20 @@
1
+ class NSString
2
+
3
+ # converts an NSString instance into a base64 string, using UTF8 encoding or
4
+ # a user specified encoding.
5
+ # @todo Support NSDataBase64EncodingOptions options - easy to add, but I want
6
+ # to add specs, too, and a hash format (e.g. line_length: 64 =>
7
+ # NSDataBase64Encoding64CharacterLineLength).
8
+ def to_base64(enc=NSUTF8StringEncoding)
9
+ encoded = self.dataUsingEncoding(enc)
10
+ encoded.to_base64
11
+ end
12
+
13
+ # factory method to convert a base64 string into NSString, using UTF8 or a
14
+ # user specified encoding.
15
+ def self.from_base64(base64_str, enc=NSUTF8StringEncoding)
16
+ data = NSData.from_base64(base64_str.dataUsingEncoding(NSASCIIStringEncoding))
17
+ NSString.alloc.initWithData(data, encoding:enc)
18
+ end
19
+
20
+ end
@@ -0,0 +1,9 @@
1
+ class UIImage
2
+
3
+ def to_base64
4
+ end
5
+
6
+ def self.from_base64
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ class NSImage
2
+
3
+ def to_base64
4
+ end
5
+
6
+ def self.from_base64
7
+ end
8
+
9
+ end
@@ -0,0 +1,10 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "The sugarcube gem must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+
6
+ require 'sugarcube'
7
+
8
+ Motion::Project::App.pre_setup do |app|
9
+ SugarCube.add_app_files(app, 'sugarcube-base64')
10
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module SugarCube
2
- Version = '3.0.8'
2
+ Version = '3.1.0'
3
3
  end
@@ -0,0 +1,41 @@
1
+ describe 'Base64' do
2
+
3
+ describe 'NSData' do
4
+ it 'should encode data' do
5
+ str = 'testing'
6
+ str_data = str.nsdata
7
+ str_data.to_base64.should == 'dGVzdGluZw=='
8
+ end
9
+
10
+ it 'should decode data' do
11
+ str_data = NSData.from_base64('dGVzdGluZw==')
12
+ str = NSString.alloc.initWithData(str_data, encoding:NSUTF8StringEncoding)
13
+ str.should == 'testing'
14
+ end
15
+ end
16
+
17
+ describe 'NSString' do
18
+ it 'should encode data' do
19
+ 'testing'.to_base64.should == 'dGVzdGluZw=='
20
+ end
21
+ it 'should encode data with encoding' do
22
+ 'testing'.to_base64(NSUnicodeStringEncoding).should == '//50AGUAcwB0AGkAbgBnAA=='
23
+ end
24
+
25
+ it 'should decode data' do
26
+ NSString.from_base64('dGVzdGluZw==').should == 'testing'
27
+ end
28
+ it 'should decode data with encoding' do
29
+ NSString.from_base64('//50AGUAcwB0AGkAbgBnAA==', NSUnicodeStringEncoding).should == 'testing'
30
+ end
31
+ end
32
+
33
+ describe 'UIImage' do
34
+
35
+ it 'should convert image data (PNG) to base64' do
36
+ 'test'.uiimage.nsdata.to_base64.should == 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAHgCAIAAADrGJBNAAAAAXNSR0IArs4c6QAAABxpRE9UAAAAAgAAAAAAAADwAAAAKAAAAPAAAADwAAAAS9r5uVEAAAAXSURBVEgNYrhrxMAwikfDYDQNDMk0AAAAAP//6TQa9AAAABVJREFUY7hrxMAwikfDYDQNDMk0AACNnfwwqs717AAAAABJRU5ErkJggg=='
37
+ end
38
+
39
+ end
40
+
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugarcube
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.8
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin T.A. Gray
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-01-23 00:00:00.000000000 Z
14
+ date: 2015-01-25 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description: |
17
17
  == Description
@@ -50,6 +50,8 @@ files:
50
50
  - lib/cocoa/sugarcube-anonymous/anonymous_array.rb
51
51
  - lib/cocoa/sugarcube-attributedstring/nsattributedstring.rb
52
52
  - lib/cocoa/sugarcube-awesome/awesome_exts.rb
53
+ - lib/cocoa/sugarcube-base64/nsdata.rb
54
+ - lib/cocoa/sugarcube-base64/nsstring.rb
53
55
  - lib/cocoa/sugarcube-corelocation/core_location.rb
54
56
  - lib/cocoa/sugarcube-files/nsarray.rb
55
57
  - lib/cocoa/sugarcube-files/nsdata.rb
@@ -98,6 +100,7 @@ files:
98
100
  - lib/ios/sugarcube-animations/animation_chain.rb
99
101
  - lib/ios/sugarcube-animations/uiview.rb
100
102
  - lib/ios/sugarcube-attributedstring/nsattributedstring.rb
103
+ - lib/ios/sugarcube-base64/uiimage.rb
101
104
  - lib/ios/sugarcube-color/fixnum.rb
102
105
  - lib/ios/sugarcube-color/nsarray.rb
103
106
  - lib/ios/sugarcube-color/nsstring.rb
@@ -155,6 +158,7 @@ files:
155
158
  - lib/ios/sugarcube-ui/uiwebview.rb
156
159
  - lib/osx/sugarcube-animations/nsview.rb
157
160
  - lib/osx/sugarcube-attributedstring/nsattributedstring.rb
161
+ - lib/osx/sugarcube-base64/nsimage.rb
158
162
  - lib/osx/sugarcube-color/fixnum.rb
159
163
  - lib/osx/sugarcube-color/nsarray.rb
160
164
  - lib/osx/sugarcube-color/nscolor.rb
@@ -181,6 +185,7 @@ files:
181
185
  - lib/sugarcube-appkit.rb
182
186
  - lib/sugarcube-attributedstring.rb
183
187
  - lib/sugarcube-awesome.rb
188
+ - lib/sugarcube-base64.rb
184
189
  - lib/sugarcube-classic.rb
185
190
  - lib/sugarcube-color.rb
186
191
  - lib/sugarcube-common.rb
@@ -218,6 +223,7 @@ files:
218
223
  - README.md
219
224
  - spec/all/anonymous_spec.rb
220
225
  - spec/all/numeric_spec.rb
226
+ - spec/cocoa/base64_spec.rb
221
227
  - spec/cocoa/caanimation_spec.rb
222
228
  - spec/cocoa/calayer_spec.rb
223
229
  - spec/cocoa/nsarray_files_spec.rb
@@ -318,6 +324,7 @@ summary: Extensions for Ruby to make Rubymotion development more enjoyable, and
318
324
  test_files:
319
325
  - spec/all/anonymous_spec.rb
320
326
  - spec/all/numeric_spec.rb
327
+ - spec/cocoa/base64_spec.rb
321
328
  - spec/cocoa/caanimation_spec.rb
322
329
  - spec/cocoa/calayer_spec.rb
323
330
  - spec/cocoa/nsarray_files_spec.rb