vigilem-assembly 0.0.10
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 +7 -0
- data/License.txt +22 -0
- data/lib/vigilem/assembly/dom_keyboard.rb +35 -0
- data/lib/vigilem/assembly/version.rb +5 -0
- data/lib/vigilem/assembly.rb +70 -0
- data/lib/vigilem/keyboard.rb +5 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/vigilem/assembly/dom_keyboard_spec.rb +36 -0
- data/spec/vigilem/assembly_spec.rb +50 -0
- data/spec/vigilem/keyboard_spec.rb +7 -0
- metadata +212 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 05bbc0fe90e4aef4264c1de019973e6fd37c2b06
|
4
|
+
data.tar.gz: 95141d62bde14771bbdd57d35c681b3f8d9dfec4
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2102b16a5a071e490b04baae23f0e7ff418b5c0a5d7a81a7db2005ff6d6f7c1f64459880a9559b124d1982e76a79118edcbe42a2072fe8c05581903a08288331
|
7
|
+
data.tar.gz: e3c599d8486f9d5c18719d06b0232177276f36d689ca3c75887bed6fb59f15cc9c5e091d744e90f9d0c1caaff371e56672fefe98b0ec420f070c54934e5f3059
|
data/License.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 TODO: Write your name
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'vigilem/dom'
|
2
|
+
|
3
|
+
require 'vigilem/core/device'
|
4
|
+
|
5
|
+
require 'vigilem/evdev/stat'
|
6
|
+
require 'vigilem/win32_api/stat'
|
7
|
+
|
8
|
+
module Vigilem
|
9
|
+
module Assembly
|
10
|
+
#
|
11
|
+
# provides an entry point to DOM events
|
12
|
+
class DOMKeyboard < Core::Device
|
13
|
+
|
14
|
+
# imports the DOMAdapter
|
15
|
+
def initialize
|
16
|
+
|
17
|
+
on_os(/win32|mingw32|mswin|cygwin/) do
|
18
|
+
require 'vigilem/win32_api/dom'
|
19
|
+
|
20
|
+
import Win32API::DOM::Adapter.new
|
21
|
+
end
|
22
|
+
|
23
|
+
# the handler checks to see if it can exist
|
24
|
+
on_input_system(/evdev/) do
|
25
|
+
require 'vigilem/evdev/dom'
|
26
|
+
# @todo identify the 'main' keyboard
|
27
|
+
import Evdev::DOM::Adapter.new(Evdev::Device.name_grep(/keyboard/).first)
|
28
|
+
end
|
29
|
+
|
30
|
+
super()
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'vigilem/assembly/version'
|
2
|
+
|
3
|
+
require 'vigilem/evdev/stat'
|
4
|
+
require 'vigilem/win32_api/stat'
|
5
|
+
|
6
|
+
module Vigilem
|
7
|
+
module Assembly
|
8
|
+
# :nodoc:
|
9
|
+
class NoAvailableHandler < StandardError
|
10
|
+
# @param [String || NilClass] msg defaults to "None of `#{Core::Stat.all}' report #available?"
|
11
|
+
def intialize(msg=nil)
|
12
|
+
super(msg || "None of `#{Core::Stat.all}' report #available?")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
module_function
|
16
|
+
|
17
|
+
# find's an available handler and installs it
|
18
|
+
# @param [Hash] opts
|
19
|
+
# @option opts [Array<Regexp || String, String>] :platform_defaults [os_pattern, gem_name],
|
20
|
+
# the default gem for os_pattern, if os_pattern matches this os
|
21
|
+
# and there are mulitple handlers available, install this gem_name
|
22
|
+
# and raises ArgumentError when the default matches more than one Stat
|
23
|
+
# @param [Proc] block
|
24
|
+
# @raise NoAvailableHandler, when the platform default matches more than one Stat
|
25
|
+
# @return the return value of stat.install
|
26
|
+
def install_handler(opts={}, &block)
|
27
|
+
stat = find_stat(opts, &block)
|
28
|
+
stat.install
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# like ::install_handler but throws an NoHandlerAvailable
|
33
|
+
# @see ::install_hadler
|
34
|
+
def install_handler!(opts={}, &block)
|
35
|
+
stat = find_stat(opts, &block)
|
36
|
+
raise NoAvailableHandler unless stat
|
37
|
+
stat.install
|
38
|
+
end
|
39
|
+
|
40
|
+
# find's an available handler
|
41
|
+
# @param [Hash] opts
|
42
|
+
# @option opts [Array<Regexp || String, Array<String> || String>] :platform_defaults [os_pattern, gem_name],
|
43
|
+
# the default gem for os_pattern, if os_pattern matches this os
|
44
|
+
# and there are mulitple handlers available, install this gem_name
|
45
|
+
# and raises ArgumentError when the default matches more than one Stat
|
46
|
+
# @param [Proc] block
|
47
|
+
# @raise ArgumentError, when the platform default matches more than one Stat
|
48
|
+
# @return [Stat || NilClass]
|
49
|
+
def find_stat(opts={}, &block)
|
50
|
+
stats = Core::Stat.all_available
|
51
|
+
# @fixme just grabs first
|
52
|
+
stat = if stats.size > 1
|
53
|
+
[*opts[:platform_defaults]].map do |os_pattern, gem_name|
|
54
|
+
if System.check[:os][os_pattern]
|
55
|
+
stats.select {|stat| stat.gem_name == gem_name }
|
56
|
+
if stats.size > 1
|
57
|
+
raise ArgumentError, "multiple handlers match :platform_defaults"\
|
58
|
+
"#{os_pattern} => #{gem_name} matches #{stats}"
|
59
|
+
else
|
60
|
+
stats.first
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end.flatten.compact.first
|
64
|
+
else
|
65
|
+
stats.first
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'vigilem/keyboard'
|
4
|
+
|
5
|
+
describe Vigilem::Assembly::DOMKeyboard do
|
6
|
+
|
7
|
+
#@todo create some sort expectancy here, read_many, read_nonblock, ioctl etc
|
8
|
+
|
9
|
+
# this is very rickety
|
10
|
+
describe '#initialize' do
|
11
|
+
|
12
|
+
module FakeDOM
|
13
|
+
class Adapter
|
14
|
+
def initialize(*args, &block)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it %q<loads win32_api when RbConfig::CONFIG['host_os'] == "mswin"> do
|
20
|
+
allow(RbConfig::CONFIG).to receive(:[]).with('host_os') { 'mswin' }
|
21
|
+
allow(described_class).to receive(:require) { true }
|
22
|
+
stub_const("Vigilem::Win32API::DOM", FakeDOM)
|
23
|
+
|
24
|
+
described_class.new
|
25
|
+
end
|
26
|
+
|
27
|
+
it %q<loads evdev when Core::System.check[:input_system][/evdev/] == true> do
|
28
|
+
allow(RbConfig::CONFIG).to receive(:[]).with('host_os') { '' }
|
29
|
+
allow(Vigilem::Core::System.check[:input_system]).to receive(:[]).with(/evdev/) { true }
|
30
|
+
allow(described_class).to receive(:require) { true }
|
31
|
+
stub_const("Vigilem::Evdev::DOM", FakeDOM)
|
32
|
+
|
33
|
+
described_class.new
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'vigilem/assembly'
|
2
|
+
|
3
|
+
describe Vigilem::Assembly do
|
4
|
+
|
5
|
+
Stat = Vigilem::Core::Stat
|
6
|
+
|
7
|
+
let(:avail_stat) { double('avail_stat', :available? => true, :install => 'avail-stat installed') }
|
8
|
+
|
9
|
+
let(:unavail_stat) { double('unavail_stat', :available? => false, :install => 'unavail-stat installed') }
|
10
|
+
|
11
|
+
before(:all) do
|
12
|
+
# ensure clean env
|
13
|
+
Stat.all.replace([])
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:each) do
|
17
|
+
Stat.all.replace([])
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '::find_stat' do
|
21
|
+
it %q<find's an #available? Stat> do
|
22
|
+
Stat.all << avail_stat
|
23
|
+
Stat.all << unavail_stat
|
24
|
+
expect(described_class.find_stat).to eql(avail_stat)
|
25
|
+
end
|
26
|
+
|
27
|
+
it %q<return's nil when none #available?> do
|
28
|
+
Stat.all << unavail_stat
|
29
|
+
expect(described_class.find_stat).to be_nil
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '::install_handler' do
|
34
|
+
it %q<find's and calls install on a Stat> do
|
35
|
+
Stat.all << avail_stat
|
36
|
+
Stat.all << unavail_stat
|
37
|
+
expect(described_class.install_handler).to eql(avail_stat.install)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '::install_handler!' do
|
42
|
+
it %q<find's and calls install on a Stat> do
|
43
|
+
Stat.all << unavail_stat
|
44
|
+
expect { described_class.install_handler! }.to raise_error(Vigilem::Assembly::NoAvailableHandler)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
end
|
metadata
ADDED
@@ -0,0 +1,212 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vigilem-assembly
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.10
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- jtzero511
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: vigilem-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: vigilem-dom
|
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: vigilem-evdev-stat
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: vigilem-win32_api-stat
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
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: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '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'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.7'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.7'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '10.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '10.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '3.1'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '3.1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-given
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: turnip
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: guard-rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
description: Provides facitlities to Assemble together the Vigilem gems
|
168
|
+
email:
|
169
|
+
- jtzero511@gmail.com
|
170
|
+
executables: []
|
171
|
+
extensions: []
|
172
|
+
extra_rdoc_files: []
|
173
|
+
files:
|
174
|
+
- License.txt
|
175
|
+
- lib/vigilem/assembly.rb
|
176
|
+
- lib/vigilem/assembly/dom_keyboard.rb
|
177
|
+
- lib/vigilem/assembly/version.rb
|
178
|
+
- lib/vigilem/keyboard.rb
|
179
|
+
- spec/spec_helper.rb
|
180
|
+
- spec/vigilem/assembly/dom_keyboard_spec.rb
|
181
|
+
- spec/vigilem/assembly_spec.rb
|
182
|
+
- spec/vigilem/keyboard_spec.rb
|
183
|
+
homepage: http://rubygems.org/gems/vigilem-support
|
184
|
+
licenses:
|
185
|
+
- MIT
|
186
|
+
metadata: {}
|
187
|
+
post_install_message:
|
188
|
+
rdoc_options: []
|
189
|
+
require_paths:
|
190
|
+
- lib
|
191
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ">"
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 2.0.14
|
201
|
+
requirements: []
|
202
|
+
rubyforge_project:
|
203
|
+
rubygems_version: 2.4.6
|
204
|
+
signing_key:
|
205
|
+
specification_version: 4
|
206
|
+
summary: Provides facitlities to Assemble together the Vigilem gems
|
207
|
+
test_files:
|
208
|
+
- spec/spec_helper.rb
|
209
|
+
- spec/vigilem/assembly/dom_keyboard_spec.rb
|
210
|
+
- spec/vigilem/assembly_spec.rb
|
211
|
+
- spec/vigilem/keyboard_spec.rb
|
212
|
+
has_rdoc:
|