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 +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
|