fixed-motion 0.0.1
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.
- data/README.md +35 -0
- data/ext/FixedMotion.h +39 -0
- data/ext/FixedMotion.m +27 -0
- data/lib/fixed-motion.rb +11 -0
- data/lib/fixed-motion/fixed-motion.rb +24 -0
- metadata +68 -0
data/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# fixed-motion
|
|
2
|
+
|
|
3
|
+
Workarounds for RubyMotion.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add this line to your application's Gemfile:
|
|
8
|
+
|
|
9
|
+
gem 'fixed-motion'
|
|
10
|
+
|
|
11
|
+
And then execute:
|
|
12
|
+
|
|
13
|
+
$ bundle
|
|
14
|
+
|
|
15
|
+
Or install it yourself as:
|
|
16
|
+
|
|
17
|
+
$ gem install fixed-motion
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
Presently, there is only one function, `FixedMotion::ObjcBlock(proc)`. This
|
|
22
|
+
workaround is to convert a RubyMotion Proc instance into a native Objective-C
|
|
23
|
+
block. Currently with RubyMotion, if a block argument is declared as type `id`,
|
|
24
|
+
RubyMotion does not convert the Proc into an Objective-C block. By using
|
|
25
|
+
`FixedMotion::ObjcBlock()`, Procs can be converted into an Objective-C block to
|
|
26
|
+
be supplied to a native method. The limitation is that the Proc must have a
|
|
27
|
+
fixed number of arguments, not exceeding 15.
|
|
28
|
+
|
|
29
|
+
## Contributing
|
|
30
|
+
|
|
31
|
+
1. Fork it
|
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
33
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
34
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
35
|
+
5. Create new Pull Request
|
data/ext/FixedMotion.h
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FixedMotion.h
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import <Foundation/Foundation.h>
|
|
6
|
+
|
|
7
|
+
typedef id (^FMBlock0)(void);
|
|
8
|
+
typedef id (^FMBlock1)(id);
|
|
9
|
+
typedef id (^FMBlock2)(id,id);
|
|
10
|
+
typedef id (^FMBlock3)(id,id,id);
|
|
11
|
+
typedef id (^FMBlock4)(id,id,id,id);
|
|
12
|
+
typedef id (^FMBlock5)(id,id,id,id,id);
|
|
13
|
+
typedef id (^FMBlock6)(id,id,id,id,id,id);
|
|
14
|
+
typedef id (^FMBlock7)(id,id,id,id,id,id,id);
|
|
15
|
+
typedef id (^FMBlock8)(id,id,id,id,id,id,id,id);
|
|
16
|
+
typedef id (^FMBlock9)(id,id,id,id,id,id,id,id,id);
|
|
17
|
+
typedef id (^FMBlock10)(id,id,id,id,id,id,id,id,id,id);
|
|
18
|
+
typedef id (^FMBlock11)(id,id,id,id,id,id,id,id,id,id,id);
|
|
19
|
+
typedef id (^FMBlock12)(id,id,id,id,id,id,id,id,id,id,id,id);
|
|
20
|
+
typedef id (^FMBlock13)(id,id,id,id,id,id,id,id,id,id,id,id,id);
|
|
21
|
+
typedef id (^FMBlock14)(id,id,id,id,id,id,id,id,id,id,id,id,id,id);
|
|
22
|
+
typedef id (^FMBlock15)(id,id,id,id,id,id,id,id,id,id,id,id,id,id,id);
|
|
23
|
+
|
|
24
|
+
id FXMProcToObjcBlock0(FMBlock0 block);
|
|
25
|
+
id FXMProcToObjcBlock1(FMBlock1 block);
|
|
26
|
+
id FXMProcToObjcBlock2(FMBlock2 block);
|
|
27
|
+
id FXMProcToObjcBlock3(FMBlock3 block);
|
|
28
|
+
id FXMProcToObjcBlock4(FMBlock4 block);
|
|
29
|
+
id FXMProcToObjcBlock5(FMBlock5 block);
|
|
30
|
+
id FXMProcToObjcBlock6(FMBlock6 block);
|
|
31
|
+
id FXMProcToObjcBlock7(FMBlock7 block);
|
|
32
|
+
id FXMProcToObjcBlock8(FMBlock8 block);
|
|
33
|
+
id FXMProcToObjcBlock9(FMBlock9 block);
|
|
34
|
+
id FXMProcToObjcBlock10(FMBlock10 block);
|
|
35
|
+
id FXMProcToObjcBlock11(FMBlock11 block);
|
|
36
|
+
id FXMProcToObjcBlock12(FMBlock12 block);
|
|
37
|
+
id FXMProcToObjcBlock13(FMBlock13 block);
|
|
38
|
+
id FXMProcToObjcBlock14(FMBlock14 block);
|
|
39
|
+
id FXMProcToObjcBlock15(FMBlock15 block);
|
data/ext/FixedMotion.m
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FixedMotion.m
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
#import "FixedMotion.h"
|
|
6
|
+
|
|
7
|
+
#define FXMDefineProcToObjcBlockFunction(arity) \
|
|
8
|
+
id FXMProcToObjcBlock##arity(FMBlock##arity block) { \
|
|
9
|
+
return block; \
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
FXMDefineProcToObjcBlockFunction(0)
|
|
13
|
+
FXMDefineProcToObjcBlockFunction(1)
|
|
14
|
+
FXMDefineProcToObjcBlockFunction(2)
|
|
15
|
+
FXMDefineProcToObjcBlockFunction(3)
|
|
16
|
+
FXMDefineProcToObjcBlockFunction(4)
|
|
17
|
+
FXMDefineProcToObjcBlockFunction(5)
|
|
18
|
+
FXMDefineProcToObjcBlockFunction(6)
|
|
19
|
+
FXMDefineProcToObjcBlockFunction(7)
|
|
20
|
+
FXMDefineProcToObjcBlockFunction(8)
|
|
21
|
+
FXMDefineProcToObjcBlockFunction(9)
|
|
22
|
+
FXMDefineProcToObjcBlockFunction(10)
|
|
23
|
+
FXMDefineProcToObjcBlockFunction(11)
|
|
24
|
+
FXMDefineProcToObjcBlockFunction(12)
|
|
25
|
+
FXMDefineProcToObjcBlockFunction(13)
|
|
26
|
+
FXMDefineProcToObjcBlockFunction(14)
|
|
27
|
+
FXMDefineProcToObjcBlockFunction(15)
|
data/lib/fixed-motion.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
unless defined?(Motion::Project::Config)
|
|
2
|
+
raise "This file must be required within a RubyMotion project Rakefile."
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
lib_dir_path = File.dirname(File.expand_path(__FILE__))
|
|
6
|
+
ext_dir_path = File.join(File.dirname(lib_dir_path), 'ext')
|
|
7
|
+
|
|
8
|
+
Motion::Project::App.setup do |app|
|
|
9
|
+
app.files.unshift(Dir.glob(File.join(lib_dir_path, "fixed-motion/**/*.rb")))
|
|
10
|
+
app.vendor_project(ext_dir_path, :static)
|
|
11
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module FixedMotion
|
|
2
|
+
def self.ObjcBlock(proc)
|
|
3
|
+
case proc.arity
|
|
4
|
+
when 0 then FXMProcToObjcBlock0(proc)
|
|
5
|
+
when 1 then FXMProcToObjcBlock1(proc)
|
|
6
|
+
when 2 then FXMProcToObjcBlock2(proc)
|
|
7
|
+
when 3 then FXMProcToObjcBlock3(proc)
|
|
8
|
+
when 4 then FXMProcToObjcBlock4(proc)
|
|
9
|
+
when 5 then FXMProcToObjcBlock5(proc)
|
|
10
|
+
when 6 then FXMProcToObjcBlock6(proc)
|
|
11
|
+
when 7 then FXMProcToObjcBlock7(proc)
|
|
12
|
+
when 8 then FXMProcToObjcBlock8(proc)
|
|
13
|
+
when 9 then FXMProcToObjcBlock9(proc)
|
|
14
|
+
when 10 then FXMProcToObjcBlock10(proc)
|
|
15
|
+
when 11 then FXMProcToObjcBlock11(proc)
|
|
16
|
+
when 12 then FXMProcToObjcBlock12(proc)
|
|
17
|
+
when 13 then FXMProcToObjcBlock13(proc)
|
|
18
|
+
when 14 then FXMProcToObjcBlock14(proc)
|
|
19
|
+
when 15 then FXMProcToObjcBlock15(proc)
|
|
20
|
+
else
|
|
21
|
+
raise "Unable to convert proc with #{proc.arity} arity to objc block"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: fixed-motion
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Dave Lee
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rake
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
description: Workarounds for RubyMotion
|
|
31
|
+
email:
|
|
32
|
+
- dave@kastiglione.com
|
|
33
|
+
executables: []
|
|
34
|
+
extensions: []
|
|
35
|
+
extra_rdoc_files: []
|
|
36
|
+
files:
|
|
37
|
+
- README.md
|
|
38
|
+
- lib/fixed-motion/fixed-motion.rb
|
|
39
|
+
- lib/fixed-motion.rb
|
|
40
|
+
- ext/FixedMotion.h
|
|
41
|
+
- ext/FixedMotion.m
|
|
42
|
+
homepage: https://github.com/kastiglione/fixed-motion
|
|
43
|
+
licenses:
|
|
44
|
+
- MIT
|
|
45
|
+
post_install_message:
|
|
46
|
+
rdoc_options: []
|
|
47
|
+
require_paths:
|
|
48
|
+
- lib
|
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
50
|
+
none: false
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
|
+
none: false
|
|
57
|
+
requirements:
|
|
58
|
+
- - ! '>='
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
requirements: []
|
|
62
|
+
rubyforge_project:
|
|
63
|
+
rubygems_version: 1.8.23
|
|
64
|
+
signing_key:
|
|
65
|
+
specification_version: 3
|
|
66
|
+
summary: Workarounds for RubyMotion
|
|
67
|
+
test_files: []
|
|
68
|
+
has_rdoc:
|