cocoa 0.1.4 → 0.1.5

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: 6451857601cfd72241c1051e50c9f16f5bcacf54
4
- data.tar.gz: 1c62fb1676c95d06a59e42a73c9d6fe7520d91aa
3
+ metadata.gz: 04969b65f9381a64dff26285eadea02ee22a5707
4
+ data.tar.gz: 328544cf27ee82e63349e8e1978a972867243a51
5
5
  SHA512:
6
- metadata.gz: 349346bb8fed1e2a73be47ddc9f17520b74d6370b486cd61d04dcacfc7fad409fe70e811d15d5b7324d4e66d160dd8019411c080fd311a361491f5e00e1a3959
7
- data.tar.gz: 0107e0a962d28276a15fe08955c96e977efc2c2a05ccf74cd9a4f3f10d08756b8e1406d734d1731eba709411eb30cd9e7be2617e136c0204400376d52d94d225
6
+ metadata.gz: 9eb8aa0801e1737d082428259cef0108ece9d5d95263ba0ffe1646b6c5324910074ad208b70e90a8ce60b28c0217772e0b5c719ce7c75f2ac04bc27d83135769
7
+ data.tar.gz: 2d904420d15c59dfbe60962a7eb17e46dd029382ab00540817adb6b66fc961aa456c1a3c8254fcb8892380857cacd0735d369a379c29fd9da20873ca8bad54ac
data/Gemfile CHANGED
@@ -2,11 +2,12 @@ source "http://rubygems.org"
2
2
  gem 'activesupport'
3
3
  gem 'ffi'
4
4
  group :development do
5
+ gem 'cocoa', :path => '.' unless File.basename($0) == 'rake' && $*.first == 'gemspec'
5
6
  gem 'bacon'
6
7
  gem 'mocha-on-bacon'
7
8
  # gem "shoulda", ">= 0"
8
9
  gem "rdoc", "~> 3.12"
9
10
  gem "bundler", "~> 1.0"
10
- gem "jeweler", "~> 2.0.1"
11
+ gem "jeweler", "~> 2.0"
11
12
  gem "simplecov", ">= 0"
12
13
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: cocoa 0.1.4 ruby lib
5
+ # stub: cocoa 0.1.5 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "cocoa"
9
- s.version = "0.1.4"
9
+ s.version = "0.1.5"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Patrick Hanevold"]
14
- s.date = "2014-04-10"
14
+ s.date = "2014-04-11"
15
15
  s.description = "Ruby FFI bindings for the OSX Cocoa API"
16
16
  s.email = "patrick.hanevold@gmail.com"
17
17
  s.extra_rdoc_files = [
@@ -441,30 +441,33 @@ Gem::Specification.new do |s|
441
441
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
442
442
  s.add_runtime_dependency(%q<activesupport>, [">= 0"])
443
443
  s.add_runtime_dependency(%q<ffi>, [">= 0"])
444
+ s.add_development_dependency(%q<cocoa>, [">= 0"])
444
445
  s.add_development_dependency(%q<bacon>, [">= 0"])
445
446
  s.add_development_dependency(%q<mocha-on-bacon>, [">= 0"])
446
447
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
447
448
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
448
- s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
449
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
449
450
  s.add_development_dependency(%q<simplecov>, [">= 0"])
450
451
  else
451
452
  s.add_dependency(%q<activesupport>, [">= 0"])
452
453
  s.add_dependency(%q<ffi>, [">= 0"])
454
+ s.add_dependency(%q<cocoa>, [">= 0"])
453
455
  s.add_dependency(%q<bacon>, [">= 0"])
454
456
  s.add_dependency(%q<mocha-on-bacon>, [">= 0"])
455
457
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
456
458
  s.add_dependency(%q<bundler>, ["~> 1.0"])
457
- s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
459
+ s.add_dependency(%q<jeweler>, ["~> 2.0"])
458
460
  s.add_dependency(%q<simplecov>, [">= 0"])
459
461
  end
460
462
  else
461
463
  s.add_dependency(%q<activesupport>, [">= 0"])
462
464
  s.add_dependency(%q<ffi>, [">= 0"])
465
+ s.add_dependency(%q<cocoa>, [">= 0"])
463
466
  s.add_dependency(%q<bacon>, [">= 0"])
464
467
  s.add_dependency(%q<mocha-on-bacon>, [">= 0"])
465
468
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
466
469
  s.add_dependency(%q<bundler>, ["~> 1.0"])
467
- s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
470
+ s.add_dependency(%q<jeweler>, ["~> 2.0"])
468
471
  s.add_dependency(%q<simplecov>, [">= 0"])
469
472
  end
470
473
  end
@@ -20,39 +20,47 @@ class String
20
20
  end
21
21
 
22
22
  class Cocoa::NSObject
23
+
23
24
  def self.const_missing name
24
25
  Cocoa.const_get name
25
26
  end
26
27
 
28
+ def self.native_name
29
+ name.split('::').last
30
+ end
31
+
27
32
  def self.alloc
28
- new(true).alloc
33
+ instance = new(true)
34
+ instance.object = ObjC.msgSend_pointer(get_class,"alloc")
35
+ instance
29
36
  end
30
37
 
31
38
  def self.inherited(parent)
32
- include ClassMethods
33
39
  if parent.name
34
- klass = ObjC.objc_allocateClassPair(ObjC.objc_getClass(name.split('::').last),parent.name,0)
35
- ObjC.objc_registerClassPair(klass)
40
+ klass = begin
41
+ Cocoa::const_get(parent.native_name)
42
+ ObjC.objc_getClass(parent.native_name)
43
+ rescue
44
+ end
45
+ unless klass && klass.address != 0
46
+ klass = ObjC.objc_allocateClassPair(ObjC.objc_getClass(native_name),parent.native_name,0)
47
+ ObjC.objc_registerClassPair(klass)
48
+ end
36
49
  end
37
50
  end
38
51
 
52
+ def self.get_class
53
+ ObjC.objc_getClass(native_name)
54
+ end
55
+
39
56
  def initialize allocated=false
40
- @klass = ObjC.objc_getClass(self.native_name)
57
+ @klass = ObjC.objc_getClass(self.class.native_name)
41
58
  unless allocated
42
59
  self.object = @klass
43
60
  new
44
61
  end
45
62
  end
46
63
 
47
- def get_class
48
- ObjC.objc_getClass(self.native_name)
49
- end
50
-
51
- def alloc
52
- self.object = ObjC.msgSend_pointer(ObjC.objc_getClass(self.native_name),"alloc")
53
- self
54
- end
55
-
56
64
  def init
57
65
  self.object = ObjC.msgSend_pointer(@object,"init")
58
66
  self
@@ -67,10 +75,4 @@ class Cocoa::NSObject
67
75
  self.object = ObjC.msgSend_pointer(@object,"autorelease")
68
76
  self
69
77
  end
70
-
71
- module ClassMethods
72
- def native_name
73
- self.class.name.split('::').last
74
- end
75
- end
76
78
  end
@@ -10,24 +10,29 @@ describe 'Cocoa' do
10
10
  end
11
11
  Derived.new.get_lazy.class.name.should == 'Cocoa::NSMenu'
12
12
  end
13
+
13
14
  it 'should provide ruby superclass' do
14
15
  class Derived < Cocoa::NSObject
15
16
  end
16
17
  Derived.superclass.name.should == 'Cocoa::NSObject'
17
18
  end
19
+
18
20
  it 'should provide correct return types for class methods' do
19
21
  Cocoa::NSMutableArray.array.class.name.should == 'Cocoa::NSMutableArray'
20
22
  end
23
+
21
24
  it 'should provide correct return types for instance methods' do
22
25
  array = Cocoa::NSMutableArray.array
23
26
  Cocoa::NSMutableArray.array.description.class.name.should == 'Cocoa::NSString'
24
27
  end
28
+
25
29
  it 'should convert NSString to ruby strings' do
26
30
  array = Cocoa::NSMutableArray.array
27
31
  array.addObject "head"
28
32
  array.addObject "tail"
29
33
  ObjC.NSString_to_String(array.description.object).should == "(\n head,\n tail\n)"
30
34
  end
35
+
31
36
  it 'should return stringifyable strings' do
32
37
  array = Cocoa::NSMutableArray.array
33
38
  array.addObject "head"
@@ -38,6 +43,42 @@ describe 'Cocoa' do
38
43
  it 'should call singular methods' do
39
44
  Cocoa::NSString.stringWithString('a string').should == 'a string'
40
45
  end
46
+
47
+ it 'should allocate' do
48
+ instance = Cocoa::NSString.alloc
49
+ instance.class.should == Cocoa::NSString
50
+ instance.className.should == "NSPlaceholderString"
51
+ end
52
+
53
+ it 'should allocate derived' do
54
+ class Derived < Cocoa::NSObject
55
+ end
56
+ instance = Derived.alloc
57
+ instance.class.should == Derived
58
+ instance.className.should == "Derived"
59
+ end
60
+
61
+ it 'should allocate namespaced derived' do
62
+ class Cocoa::NamespacedDerived < Cocoa::NSObject
63
+ end
64
+ instance = Cocoa::NamespacedDerived.alloc
65
+ instance.class.should == Cocoa::NamespacedDerived
66
+ instance.className.should == "NamespacedDerived"
67
+ end
68
+
69
+ it 'should allocate derived inside class' do
70
+ class Cocoa::Foobar
71
+ class InsideDerived < Cocoa::NSObject
72
+ end
73
+ def initialize
74
+ instance = InsideDerived.alloc
75
+ instance.class.should == InsideDerived
76
+ instance.className.should == "InsideDerived"
77
+ end
78
+ end
79
+ Cocoa::Foobar.new
80
+ end
81
+
41
82
  # TODO: known bug
42
83
  # it 'should call variadic singular methods' do
43
84
  # Cocoa::NSSet.setWithObjects "A", "B", "and C"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Hanevold
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2014-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cocoa
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bacon
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +114,14 @@ dependencies:
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 2.0.1
117
+ version: '2.0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 2.0.1
124
+ version: '2.0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: simplecov
113
127
  requirement: !ruby/object:Gem::Requirement