artoo-leapmotion 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: aedf45038f5032ebcb7bc5b37f4c9b6dc187c21c
4
+ data.tar.gz: 274954450e8dac24847a4cfd3343491ec0882fa4
5
+ SHA512:
6
+ metadata.gz: 2db5410b5f963a0b0b2a08a722dbf69c2bce39d1441e10bb7b3affa3ea8e1790e06c736df116a5d1a43ffcf659f4a7fadf1469b8d54d62180d4aa2c36c703eab
7
+ data.tar.gz: 1db64734a6e116c20b30c403dad080b27c591a26843b8d623160e600d8aae3643aa80574c96e8e0c6f2450db0d77e84452bf5bacf330a0d48163d24fb584c3ea
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in artoo-leapmotion.gemspec
4
+ gemspec
@@ -0,0 +1,67 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ artoo-leapmotion (0.1.1)
5
+ artoo (~> 1.0.0.rc2)
6
+ hybridgroup-celluloid-websocket-client
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ artoo (1.0.0.rc3)
12
+ celluloid (~> 0.14.1)
13
+ celluloid-io (~> 0.14.1)
14
+ multi_json (~> 1.6)
15
+ pry (~> 0.9)
16
+ rake (~> 10.0)
17
+ reel (~> 0.4.0.pre)
18
+ thor (~> 0.18.1)
19
+ celluloid (0.14.1)
20
+ timers (>= 1.0.0)
21
+ celluloid-io (0.14.1)
22
+ celluloid (>= 0.14.1)
23
+ nio4r (>= 0.4.5)
24
+ certified (0.1.1)
25
+ coderay (1.0.9)
26
+ http (0.4.0)
27
+ certified
28
+ http_parser.rb
29
+ http_parser.rb (0.5.3)
30
+ hybridgroup-celluloid-websocket-client (0.0.3)
31
+ celluloid-io
32
+ websocket-driver
33
+ metaclass (0.0.1)
34
+ method_source (0.8.2)
35
+ minitest (5.0.6)
36
+ minitest-happy (1.0.0)
37
+ mocha (0.14.0)
38
+ metaclass (~> 0.0.1)
39
+ multi_json (1.7.7)
40
+ nio4r (0.4.6)
41
+ pry (0.9.12.2)
42
+ coderay (~> 1.0.5)
43
+ method_source (~> 0.8)
44
+ slop (~> 3.4)
45
+ rack (1.5.2)
46
+ rake (10.1.0)
47
+ reel (0.4.0.pre)
48
+ celluloid-io (>= 0.8.0)
49
+ http (>= 0.2.0)
50
+ http_parser.rb (>= 0.5.3)
51
+ rack (>= 1.4.0)
52
+ websocket_parser (>= 0.1.2)
53
+ slop (3.4.6)
54
+ thor (0.18.1)
55
+ timers (1.1.0)
56
+ websocket-driver (0.2.1)
57
+ websocket_parser (0.1.4)
58
+ http
59
+
60
+ PLATFORMS
61
+ ruby
62
+
63
+ DEPENDENCIES
64
+ artoo-leapmotion!
65
+ minitest (~> 5.0)
66
+ minitest-happy
67
+ mocha (~> 0.14.0)
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2013 The Hybrid Group
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -0,0 +1,78 @@
1
+ # Artoo Adaptor For Leap Motion
2
+
3
+ This repository contains the Artoo (http://artoo.io/) adaptor for the Leap Motion controller (https://www.leapmotion.com/).
4
+
5
+ It borrows code from https://github.com/glejeune/ruby-leap-motion-ws, thanks @glejeune
6
+
7
+ Artoo is a open source micro-framework for robotics using Ruby.
8
+
9
+ For more information abut Artoo, check out our repo at https://github.com/hybridgroup/artoo
10
+
11
+ [![Code Climate](https://codeclimate.com/github/hybridgroup/artoo-leapmotion.png)](https://codeclimate.com/github/hybridgroup/artoo-leapmotion) [![Build Status](https://travis-ci.org/hybridgroup/artoo-leapmotion.png?branch=master)](https://travis-ci.org/hybridgroup/artoo-leapmotion)
12
+
13
+ ## Installing
14
+
15
+ ```
16
+ gem install artoo-leapmotion --pre
17
+ ```
18
+
19
+ ## Using
20
+
21
+ ```ruby
22
+ require 'artoo'
23
+
24
+ connection :leapmotion, :adaptor => :leapmotion, :port => '127.0.0.1:6437'
25
+ device :leapmotion, :driver => :leapmotion
26
+
27
+ work do
28
+ on leapmotion, :open => :on_open
29
+ on leapmotion, :frame => :on_frame
30
+ on leapmotion, :close => :on_close
31
+ end
32
+
33
+ def on_open(*args)
34
+ puts args
35
+ end
36
+
37
+ def on_frame(*args)
38
+ frame = args[1]
39
+ puts frame
40
+ puts frame.hands
41
+ puts frame.gestures
42
+ puts frame.pointables
43
+ end
44
+
45
+ def on_close(*args)
46
+ puts args
47
+ end
48
+ ```
49
+
50
+ ## Connecting to Leap Motion
51
+
52
+ ### OSX
53
+
54
+ The normal OSX download of the Leap Motion software from https://www.leapmotion.com/setup should work with Artoo.
55
+
56
+ More instructions need to go here...
57
+
58
+ ### Ubuntu
59
+
60
+ The Linux download of the Leap Motion software can be obtained from https://developer.leapmotion.com/downloads (requires free signup)
61
+
62
+ The main steps are:
63
+ - Connect your computer and the Leap Motion controller
64
+ - Connect to the device via Artoo
65
+
66
+ You will need to run the `leapd` daemon in order to connect your Artoo code to your Leap Motion controller.
67
+
68
+ ```
69
+ $ leapd
70
+ ```
71
+
72
+ Once your computer is communcating with the Leap Motion controller, the `leapd` program exposes a websocket-based interface to receive data.
73
+
74
+ ### Windows
75
+
76
+ The normal Windows download of the Leap Motion software from https://www.leapmotion.com/setup should work with Artoo.
77
+
78
+ More instructions need to go here...
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "artoo-leapmotion/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "artoo-leapmotion"
7
+ s.version = Artoo::Leapmotion::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Ron Evans"]
10
+ s.email = ["artoo@hybridgroup.com"]
11
+ s.homepage = "https://github.com/hybridgroup/artoo-"
12
+ s.summary = %q{Artoo adaptor and driver for Leap Motion}
13
+ s.description = %q{Artoo adaptor and driver for Leap Motion}
14
+
15
+ s.rubyforge_project = "artoo-leapmotion"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_runtime_dependency 'artoo', '~> 1.0.0.rc2'
23
+ s.add_runtime_dependency 'hybridgroup-celluloid-websocket-client'
24
+ s.add_development_dependency 'minitest', '~> 5.0'
25
+ s.add_development_dependency 'minitest-happy'
26
+ s.add_development_dependency 'mocha', '~> 0.14.0'
27
+ end
@@ -0,0 +1,26 @@
1
+ require 'artoo'
2
+
3
+ connection :leapmotion, :adaptor => :leapmotion, :port => '127.0.0.1:6437'
4
+ device :leapmotion, :driver => :leapmotion
5
+
6
+ work do
7
+ on leapmotion, :open => :on_open
8
+ on leapmotion, :frame => :on_frame
9
+ on leapmotion, :close => :on_close
10
+ end
11
+
12
+ def on_open(*args)
13
+ puts args
14
+ end
15
+
16
+ def on_frame(*args)
17
+ frame = args[1]
18
+ puts frame
19
+ puts frame.hands
20
+ puts frame.gestures
21
+ puts frame.pointables
22
+ end
23
+
24
+ def on_close(*args)
25
+ puts args
26
+ end
@@ -0,0 +1,22 @@
1
+ require 'artoo'
2
+
3
+ connection :leapmotion, :adaptor => :leapmotion, :port => '127.0.0.1:6437'
4
+ device :leapmotion, :driver => :leapmotion
5
+
6
+ work do
7
+ on leapmotion, :open => :on_open
8
+ on leapmotion, :gesture => :on_gesture
9
+ on leapmotion, :close => :on_close
10
+ end
11
+
12
+ def on_open(*args)
13
+ puts args
14
+ end
15
+
16
+ def on_gesture(*args)
17
+ puts args[1]
18
+ end
19
+
20
+ def on_close(*args)
21
+ puts args
22
+ end
@@ -0,0 +1,3 @@
1
+ require 'lib/artoo/adaptors/leapmotion'
2
+ require 'lib/artoo/drivers/leapmotion'
3
+ require 'lib/artoo-leapmotion/version'
@@ -0,0 +1,5 @@
1
+ module Artoo
2
+ module Leapmotion
3
+ VERSION = '0.1.1'
4
+ end
5
+ end
@@ -0,0 +1,41 @@
1
+ require 'artoo/adaptors/adaptor'
2
+ require 'celluloid/websocket/client'
3
+
4
+ module Artoo
5
+ module Adaptors
6
+ # Connect to a leapmotion device
7
+ # @see device documentation for more information
8
+ class Leapmotion < Adaptor
9
+ finalizer :finalize
10
+ attr_reader :leap
11
+
12
+ # Closes connection with device if connected
13
+ # @return [Boolean]
14
+ def finalize
15
+ disconnect if connected?
16
+ end
17
+
18
+ # Creates a connection with device
19
+ # @return [Boolean]
20
+ def connect
21
+ @leap = Celluloid::WebSocket::Client.new("ws://#{port.host}:#{port.port}/v3.json")
22
+
23
+ super
24
+ end
25
+
26
+ # Closes connection with device
27
+ # @return [Boolean]
28
+ def disconnect
29
+ leap.close
30
+
31
+ super
32
+ end
33
+
34
+ # Uses method missing to call device actions
35
+ # @see device documentation
36
+ def method_missing(method_name, *arguments, &block)
37
+ leap.send(method_name, *arguments, &block)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,49 @@
1
+ require 'artoo/drivers/driver'
2
+ require 'artoo/drivers/leapmotion/frame'
3
+ require 'json'
4
+
5
+ module Artoo
6
+ module Drivers
7
+ # The leapmotion driver behaviors
8
+ class Leapmotion < Driver
9
+
10
+ # Start driver and any required connections
11
+ def start_driver
12
+ begin
13
+ connection.handler = current_actor
14
+ connection.start
15
+
16
+ super
17
+ rescue Exception => e
18
+ Logger.error "Error starting Leapmotion driver!"
19
+ Logger.error e.message
20
+ Logger.error e.backtrace.inspect
21
+ end
22
+ end
23
+
24
+ def on_open
25
+ publish(event_topic_name("open"))
26
+ data = JSON.dump("enableGestures" => true)
27
+ connection.text(data)
28
+ end
29
+
30
+ def on_message(data)
31
+ message = JSON.parse(data)
32
+ if message.key?("id") and message.key?("timestamp")
33
+ frame = Artoo::Drivers::Leapmotion::Frame.new(message)
34
+ publish(event_topic_name("frame"), frame)
35
+
36
+ frame.gestures.each {|g| publish(event_topic_name("gesture"), g)}
37
+ else
38
+ publish(event_topic_name("error"), data)
39
+ end
40
+ rescue Exception => e
41
+ publish(event_topic_name("error"), data)
42
+ end
43
+
44
+ def on_close(code, reason)
45
+ publish(event_topic_name("close"), code, reason)
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,24 @@
1
+ require 'artoo/drivers/leapmotion/gesture'
2
+ require 'artoo/drivers/leapmotion/pointable'
3
+ require 'artoo/drivers/leapmotion/hand'
4
+
5
+ module Artoo
6
+ module Drivers
7
+ # The leapmotion driver behaviors
8
+ class Leapmotion < Driver
9
+ class Frame
10
+ attr_reader :gestures, :pointables, :hands, :id, :timestamp, :r, :s, :t
11
+ def initialize(data)
12
+ @hands = Artoo::Drivers::Leapmotion::Hand.list(data)
13
+ @gestures = Artoo::Drivers::Leapmotion::Gesture.list(data)
14
+ @pointables = Artoo::Drivers::Leapmotion::Pointable.list(data)
15
+ @id = data["id"]
16
+ @timestamp = data["timestamp"]
17
+ @r = data["r"]
18
+ @s = data["s"]
19
+ @t = data["t"]
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,67 @@
1
+ module Artoo
2
+ module Drivers
3
+ # The leapmotion driver behaviors
4
+ class Leapmotion < Driver
5
+ # Recognized movement by the user
6
+ #
7
+ # There is 4 Gesture subclasses :
8
+ #
9
+ # Circle - A circular movement by a finger.
10
+ # Swipe - A straight line movement by the hand with fingers extended.
11
+ # KeyTap - A downward tapping movement by a finger.
12
+ # ScreenTap - A forward tapping movement by a finger.
13
+ class Gesture
14
+ class Error < StandardError; end
15
+
16
+ def self.list(data)
17
+ gestures = []
18
+ if data["gestures"]
19
+ data["gestures"].each do |gesture|
20
+ gestures << make_gesture(gesture)
21
+ end
22
+ end
23
+ return gestures
24
+ end
25
+
26
+ def self.make_gesture(data)
27
+ unless data.has_key? "type"
28
+ raise Error, "gesture type unknown"
29
+ end
30
+ name = data["type"][0].upcase << data["type"][1..-1]
31
+ unless class_exists?(name)
32
+ raise Error, "gesture class `#{self}::#{name}' invalid"
33
+ end
34
+ const_get(name).new(data)
35
+ end
36
+
37
+ private
38
+
39
+ def self.class_exists?(class_name)
40
+ klass = const_get(class_name)
41
+ return klass.is_a?(Class)
42
+ rescue NameError
43
+ return false
44
+ end
45
+
46
+ def self.define_gesture *names
47
+ names.each do |n|
48
+ name = n.to_s
49
+ unless class_exists?(name)
50
+ c = Class.new(self) do
51
+ def initialize(data)
52
+ data.each do |k, v|
53
+ instance_variable_set("@#{k}", v)
54
+ self.class.send(:define_method, k.to_sym, lambda { instance_variable_get("@#{k}") })
55
+ end
56
+ end
57
+ end
58
+ const_set name, c
59
+ end
60
+ end
61
+ end
62
+
63
+ define_gesture :Circle, :KeyTap, :ScreenTap, :Swipe
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,25 @@
1
+ module Artoo
2
+ module Drivers
3
+ # The leapmotion driver behaviors
4
+ class Leapmotion < Driver
5
+ class Hand
6
+ def self.list(data)
7
+ hands = []
8
+ if data["hands"]
9
+ data["hands"].each do |hand|
10
+ hands << Artoo::Drivers::Leapmotion::Hand.new(hand)
11
+ end
12
+ end
13
+ return hands
14
+ end
15
+
16
+ def initialize(data)
17
+ data.each do |k, v|
18
+ instance_variable_set("@#{k}", v)
19
+ self.class.send(:define_method, k.to_sym, lambda { instance_variable_get("@#{k}") })
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ module Artoo
2
+ module Drivers
3
+ # The leapmotion driver behaviors
4
+ class Leapmotion < Driver
5
+ class Pointable
6
+ def self.list(data)
7
+ pointables = []
8
+ if data["pointables"]
9
+ data["pointables"].each do |pointable|
10
+ pointables << Artoo::Drivers::Leapmotion::Pointable.new(pointable)
11
+ end
12
+ end
13
+ return pointables
14
+ end
15
+
16
+ def initialize(data)
17
+ data.each do |k, v|
18
+ instance_variable_set("@#{k}", v)
19
+ self.class.send(:define_method, k.to_sym, lambda { instance_variable_get("@#{k}") })
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'artoo/adaptors/leapmotion'
3
+
4
+ describe Artoo::Adaptors::Leapmotion do
5
+ it "must do something"
6
+ end
@@ -0,0 +1,50 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'artoo/drivers/leapmotion'
3
+
4
+ def valid_frame
5
+ {
6
+ id: '123',
7
+ timestamp: '123456789'
8
+ }
9
+ end
10
+
11
+ describe Artoo::Drivers::Leapmotion do
12
+ before do
13
+ @device = mock('device')
14
+ @driver = Artoo::Drivers::Leapmotion.new(:parent => @device)
15
+ @connection = mock('connection')
16
+ @device.stubs(:connection).returns(@connection)
17
+ @frame = mock('frame')
18
+ @frame.stubs(:gestures).returns([])
19
+ Artoo::Drivers::Leapmotion::Frame.stubs(:new).returns(@frame)
20
+ end
21
+
22
+ it 'Leapmotion#on_open' do
23
+ @device.expects(:event_topic_name).with("open").returns("hi_open")
24
+ @connection.expects(:text)
25
+ @driver.on_open
26
+ end
27
+
28
+ it 'Leapmotion#on_message with a frame but no gesture' do
29
+ @device.expects(:event_topic_name).with("frame")
30
+ @device.expects(:event_topic_name).with("gesture").never
31
+ @driver.on_message(JSON.dump(valid_frame))
32
+ end
33
+
34
+ it 'Leapmotion#on_message with a gesture' do
35
+ @device.expects(:event_topic_name).with("frame")
36
+ @device.expects(:event_topic_name).with("gesture")
37
+ @frame.stubs(:gestures).returns(['123'])
38
+ @driver.on_message(JSON.dump(valid_frame))
39
+ end
40
+
41
+ it 'Leapmotion#error' do
42
+ @device.expects(:event_topic_name).with("error")
43
+ @driver.on_message("no good")
44
+ end
45
+
46
+ it 'Leapmotion#on_close' do
47
+ @device.expects(:event_topic_name).with("close").returns("hi_bye")
48
+ @driver.on_close(2, "huh")
49
+ end
50
+ end
@@ -0,0 +1,6 @@
1
+ require 'artoo/robot'
2
+
3
+ require 'minitest/autorun'
4
+ require 'mocha/setup'
5
+
6
+ Celluloid.logger = nil
metadata ADDED
@@ -0,0 +1,132 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artoo-leapmotion
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Ron Evans
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: artoo
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0.rc2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0.rc2
27
+ - !ruby/object:Gem::Dependency
28
+ name: hybridgroup-celluloid-websocket-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-happy
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mocha
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 0.14.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 0.14.0
83
+ description: Artoo adaptor and driver for Leap Motion
84
+ email:
85
+ - artoo@hybridgroup.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - Gemfile
91
+ - Gemfile.lock
92
+ - LICENSE
93
+ - README.md
94
+ - Rakefile
95
+ - artoo-leapmotion.gemspec
96
+ - examples/leap.rb
97
+ - examples/leap_gesture.rb
98
+ - lib/artoo-leapmotion.rb
99
+ - lib/artoo-leapmotion/version.rb
100
+ - lib/artoo/adaptors/leapmotion.rb
101
+ - lib/artoo/drivers/leapmotion.rb
102
+ - lib/artoo/drivers/leapmotion/frame.rb
103
+ - lib/artoo/drivers/leapmotion/gesture.rb
104
+ - lib/artoo/drivers/leapmotion/hand.rb
105
+ - lib/artoo/drivers/leapmotion/pointable.rb
106
+ - test/adaptors/leapmotion_adaptor_test.rb
107
+ - test/drivers/leapmotion_driver_test.rb
108
+ - test/test_helper.rb
109
+ homepage: https://github.com/hybridgroup/artoo-
110
+ licenses: []
111
+ metadata: {}
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ requirements: []
127
+ rubyforge_project: artoo-leapmotion
128
+ rubygems_version: 2.0.3
129
+ signing_key:
130
+ specification_version: 4
131
+ summary: Artoo adaptor and driver for Leap Motion
132
+ test_files: []