cocoa 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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