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 +4 -4
- data/Gemfile +2 -1
- data/VERSION +1 -1
- data/cocoa.gemspec +9 -6
- data/lib/cocoa/extensions.rb +22 -20
- data/spec/cocoa/cocoa_spec.rb +41 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04969b65f9381a64dff26285eadea02ee22a5707
|
4
|
+
data.tar.gz: 328544cf27ee82e63349e8e1978a972867243a51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
11
|
+
gem "jeweler", "~> 2.0"
|
11
12
|
gem "simplecov", ">= 0"
|
12
13
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/cocoa.gemspec
CHANGED
@@ -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.
|
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.
|
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-
|
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
|
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
|
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
|
470
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
468
471
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
469
472
|
end
|
470
473
|
end
|
data/lib/cocoa/extensions.rb
CHANGED
@@ -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)
|
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 =
|
35
|
-
|
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
|
data/spec/cocoa/cocoa_spec.rb
CHANGED
@@ -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
|
+
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-
|
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
|
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
|
124
|
+
version: '2.0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: simplecov
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|