windows-api 0.4.1 → 0.4.2
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/CHANGES +5 -0
- data/README +29 -24
- data/lib/windows/api.rb +2 -4
- data/test/test_wide_string.rb +53 -48
- data/test/test_windows_api.rb +156 -151
- data/windows-api.gemspec +15 -14
- metadata +55 -51
data/CHANGES
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== 0.4.2 - 13-Jul-2012
|
2
|
+
* Fixed a bug in the way MSVCRT_DLL is set. Thanks go to Park Heesob for
|
3
|
+
the spot and patch.
|
4
|
+
* Some minor test refactoring and cosmetic udpates.
|
5
|
+
|
1
6
|
== 0.4.1 - 27-Jan-2012
|
2
7
|
* Switched Config to RbConfig to silence 1.9 warnings. Thanks go to
|
3
8
|
Cameron Cox for the patch.
|
data/README
CHANGED
@@ -31,35 +31,35 @@
|
|
31
31
|
|
32
32
|
# This code....
|
33
33
|
module Windows
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
module Foo
|
35
|
+
API.auto_namespace = 'Windows::Foo'
|
36
|
+
API.auto_constant = true
|
37
|
+
API.auto_method = true
|
38
|
+
API.auto_unicode = true
|
39
39
|
|
40
|
-
|
41
|
-
|
40
|
+
API.new('GetComputerName', 'PP', 'B')
|
41
|
+
end
|
42
42
|
end
|
43
43
|
|
44
44
|
# Is the same as this code...
|
45
45
|
module Windows
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
module Foo
|
47
|
+
GetComputerName = Win32API.new('kernel32', 'GetComputerName', 'PP', 'I')
|
48
|
+
GetComputerNameA = Win32API.new('kernel32', 'GetComputerNameA', 'PP', 'I')
|
49
|
+
GetComputerNameW = Win32API.new('kernel32', 'GetComputerNameW', 'PP', 'I')
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
def GetComputerName(p1, p2)
|
52
|
+
GetComputerName.call(p1, p2) != 0
|
53
|
+
end
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
def GetComputerNameA(p1, p2)
|
56
|
+
GetComputerName.call(p1, p2) != 0
|
57
|
+
end
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
def GetComputerNameW(p1, p2)
|
60
|
+
GetComputerName.call(p1, p2) != 0
|
61
|
+
end
|
62
|
+
end
|
63
63
|
end
|
64
64
|
|
65
65
|
== Advantages over plain Win32::API
|
@@ -69,17 +69,22 @@
|
|
69
69
|
* Ability to use more familiar Windows data types, e.g. DWORD.
|
70
70
|
* Automatic handling of msvcrt vs msvcrXX via MSVCRT_DLL constant.
|
71
71
|
|
72
|
+
== Other Stuff
|
73
|
+
There's also a WideString class for easily creating wide strings for
|
74
|
+
Ruby 1.8.x. Ruby 1.9.x can use Ruby's encoding methods to accomplish
|
75
|
+
the same effect, however.
|
76
|
+
|
72
77
|
== More documentation
|
73
78
|
See the RDoc documentation, which should have been automatically generated
|
74
79
|
if you installed this as a gem.
|
75
80
|
|
76
81
|
== Future Plans
|
77
|
-
|
78
|
-
|
82
|
+
This library will eventually be dropped in favor of FFI once I'm convinced
|
83
|
+
that FFI is stable for both mingw and mswin.
|
79
84
|
|
80
85
|
== Bugs
|
81
86
|
None that I'm aware of. Please submit any bugs to the project page at
|
82
|
-
|
87
|
+
https://github.com/djberg96/windows-api.
|
83
88
|
|
84
89
|
== Copyright
|
85
90
|
(C) 2007-2012, Daniel J. Berger
|
data/lib/windows/api.rb
CHANGED
@@ -9,9 +9,7 @@ module Windows
|
|
9
9
|
# With Microsoft Visual C++ 8 and later users should use the associated
|
10
10
|
# DLL instead of msvcrt directly, if possible.
|
11
11
|
if CONFIG['host_os'].split('_')[1]
|
12
|
-
if CONFIG['host_os'].split('_')[1].to_i >= 80
|
13
|
-
File.exists?(File.join(CONFIG['bindir'], 'ruby.exe.manifest'))
|
14
|
-
then
|
12
|
+
if CONFIG['host_os'].split('_')[1].to_i >= 80
|
15
13
|
MSVCRT_DLL = 'msvcr' + CONFIG['host_os'].split('_')[1]
|
16
14
|
else
|
17
15
|
MSVCRT_DLL = 'msvcrt'
|
@@ -25,7 +23,7 @@ module Windows
|
|
25
23
|
extend Forwardable
|
26
24
|
|
27
25
|
# The version of the windows-api library
|
28
|
-
VERSION = '0.4.
|
26
|
+
VERSION = '0.4.2'
|
29
27
|
|
30
28
|
# The methods from Win32::API are delegated to the appropriate object
|
31
29
|
def_delegators(:@api, :function_name, :dll_name, :prototype)
|
data/test/test_wide_string.rb
CHANGED
@@ -1,54 +1,59 @@
|
|
1
1
|
#encoding: utf-8
|
2
|
-
require '
|
3
|
-
gem 'test-unit'
|
4
|
-
|
5
|
-
require 'test/unit'
|
2
|
+
require 'test-unit'
|
6
3
|
require 'windows/wide_string'
|
7
4
|
|
8
5
|
class TC_WideString < Test::Unit::TestCase
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
6
|
+
def setup
|
7
|
+
@str_english = WideString.new('hello')
|
8
|
+
@str_greek = WideString.new('Ελλάσ')
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_length
|
12
|
+
assert_equal(10, @str_english.length)
|
13
|
+
assert_equal(10, @str_greek.length)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_size
|
17
|
+
assert_equal(5, @str_english.size)
|
18
|
+
assert_equal(5, @str_greek.size)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_to_multi_english
|
22
|
+
assert_respond_to(@str_english, :to_multi)
|
23
|
+
assert_equal('hello', @str_english.to_multi)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_to_multi_greek
|
27
|
+
if RUBY_VERSION.to_f >= 1.9
|
28
|
+
assert_equal('Ελλάσ', @str_greek.to_multi.force_encoding('UTF-8'))
|
29
|
+
else
|
27
30
|
assert_equal('Ελλάσ', @str_greek.to_multi)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_literal_string_value
|
35
|
+
omit_if(RUBY_VERSION.to_f >= 1.9)
|
36
|
+
assert_equal("h\000e\000l\000l\000o\000\000\000", @str_english)
|
37
|
+
assert_equal("\225\003\273\003\273\003\254\003\303\003\000\000", @str_greek)
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_alias_to_s
|
41
|
+
assert_respond_to(@str_greek, :to_s)
|
42
|
+
assert_true(@str_greek.method(:to_s) == @str_greek.method(:to_multi))
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_alias_to_str
|
46
|
+
assert_respond_to(@str_greek, :to_str)
|
47
|
+
assert_true(@str_greek.method(:to_str) == @str_greek.method(:to_multi))
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_alias_inspect
|
51
|
+
assert_respond_to(@str_greek, :inspect)
|
52
|
+
assert_true(@str_greek.method(:inspect) == @str_greek.method(:to_multi))
|
53
|
+
end
|
54
|
+
|
55
|
+
def teardown
|
56
|
+
@str_english = nil
|
57
|
+
@str_greek = nil
|
58
|
+
end
|
54
59
|
end
|
data/test/test_windows_api.rb
CHANGED
@@ -5,162 +5,167 @@
|
|
5
5
|
# i.e. 'rake test', instead of running it directly.
|
6
6
|
############################################################################
|
7
7
|
require 'windows/api'
|
8
|
-
require 'test
|
8
|
+
require 'test-unit'
|
9
9
|
include Windows
|
10
10
|
|
11
11
|
module Windows
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
12
|
+
module Test
|
13
|
+
API.auto_namespace = 'Windows::Test'
|
14
|
+
API.auto_unicode = true
|
15
|
+
API.auto_method = true
|
16
|
+
API.auto_constant = true
|
17
|
+
$test_method = API.new('GetCurrentDirectory', 'PP', 'L')
|
18
|
+
end
|
19
|
+
|
20
|
+
module Foo
|
21
|
+
API.auto_namespace = 'Windows::Foo'
|
22
|
+
API.auto_unicode = false
|
23
|
+
API.auto_method = false
|
24
|
+
API.auto_constant = false
|
25
|
+
$foo_method = API.new('GetSystemDirectory', 'PL', 'L')
|
26
|
+
end
|
27
|
+
|
28
|
+
module Bar
|
29
|
+
API.auto_namespace = 'Windows::Bar'
|
30
|
+
API.auto_constant = true
|
31
|
+
API.auto_method = true
|
32
|
+
$bar_method = API.new('GetUserName', 'PP', 'I', 'advapi32')
|
33
|
+
end
|
34
|
+
|
35
|
+
module Baz
|
36
|
+
API.auto_namespace = 'Windows::Baz'
|
37
|
+
API.auto_constant = true
|
38
|
+
API.auto_method = true
|
39
|
+
|
40
|
+
# No ANSI equivalent for ReadDirectoryChangesW
|
41
|
+
$strstr = API.new('strstr', 'PP', 'P', 'msvcrt')
|
42
|
+
$umask = API.new('_umask', 'I', 'I', 'msvcrt')
|
43
|
+
$wave = API.new('waveOutGetNumDevs', 'V', 'I', 'winmm')
|
44
|
+
$read = API.new('ReadDirectoryChangesW', 'LPLILPPP', 'B')
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
48
|
class TC_Windows_API < Test::Unit::TestCase
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
49
|
+
include Windows::Test
|
50
|
+
include Windows::Foo
|
51
|
+
include Windows::Bar
|
52
|
+
include Windows::Baz
|
53
|
+
|
54
|
+
def setup
|
55
|
+
@buf = 0.chr * 256
|
56
|
+
@runtimes = ['msvcrt', 'msvcr80', 'msvcr90', 'msvcr100']
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_version
|
60
|
+
assert_equal('0.4.2', API::VERSION)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_full_data_types
|
64
|
+
assert_nothing_raised{
|
65
|
+
API.new('GetWindowsDirectory', ['LPTSTR', 'UINT'], 'BOOL')
|
66
|
+
}
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_msvcrt_constant
|
70
|
+
assert_true(@runtimes.include?(Windows::MSVCRT_DLL))
|
71
|
+
end
|
72
|
+
|
73
|
+
# Validate that funcs like 'strstr' get an uppercase constant like 'Strstr'
|
74
|
+
def test_lower_case_to_capitalized_constant
|
75
|
+
assert_not_nil(Windows::Baz::Strstr)
|
76
|
+
assert_not_nil(Windows::Baz::Umask)
|
77
|
+
assert_not_nil(Windows::Baz::WaveOutGetNumDevs)
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_explicit_wide_function_only
|
81
|
+
assert_not_nil(Windows::Baz::ReadDirectoryChangesW)
|
82
|
+
assert_false(Windows::Baz.constants.include?('ReadDirectoryChanges'))
|
83
|
+
assert_false(Windows::Baz.constants.include?('ReadDirectoryChangesA'))
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_lower_case_auto_methods
|
87
|
+
assert_respond_to(self, :strstr)
|
88
|
+
assert_respond_to(self, :umask)
|
89
|
+
assert_respond_to(self, :_umask)
|
90
|
+
assert_respond_to(self, :waveOutGetNumDevs)
|
91
|
+
assert_equal('llo', strstr('hello', 'l'))
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_auto_unicode
|
95
|
+
assert_not_nil(Windows::Bar::GetUserName)
|
96
|
+
assert_respond_to(self, :GetUserName)
|
97
|
+
assert_not_respond_to(self, :GetUserNameA)
|
98
|
+
assert_not_respond_to(self, :GetUserNameW)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_auto_constant
|
102
|
+
assert_not_nil(Windows::Test::GetCurrentDirectory)
|
103
|
+
assert_not_nil(Windows::Bar::GetUserName)
|
104
|
+
assert_kind_of(Win32::API, Windows::Test::GetCurrentDirectory)
|
105
|
+
assert_respond_to(Windows::Test::GetCurrentDirectory, :call)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_auto_method
|
109
|
+
assert_respond_to(self, :GetCurrentDirectory)
|
110
|
+
assert_respond_to(self, :GetCurrentDirectoryA)
|
111
|
+
assert_respond_to(self, :GetCurrentDirectoryW)
|
112
|
+
assert_not_respond_to(self, :GetSystemDirectory)
|
113
|
+
assert_not_respond_to(self, :GetSystemDirectoryA)
|
114
|
+
assert_not_respond_to(self, :GetSystemDirectoryW)
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_call
|
118
|
+
assert_respond_to($test_method, :call)
|
119
|
+
assert_respond_to($foo_method, :call)
|
120
|
+
assert_nothing_raised{ $test_method.call(@buf.length, @buf) }
|
121
|
+
assert_nothing_raised{ $foo_method.call(@buf, @buf.length) }
|
122
|
+
end
|
123
|
+
|
124
|
+
def test_dll_name
|
125
|
+
assert_respond_to($test_method, :dll_name)
|
126
|
+
assert_equal('kernel32', $test_method.dll_name)
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_function_name
|
130
|
+
assert_respond_to($test_method, :function_name)
|
131
|
+
assert_equal('GetCurrentDirectory', $test_method.function_name)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_prototype
|
135
|
+
assert_respond_to($test_method, :prototype)
|
136
|
+
assert_equal(['P', 'P'], $test_method.prototype)
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_return_type
|
140
|
+
assert_respond_to($test_method, :return_type)
|
141
|
+
assert_equal('L', $test_method.return_type)
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_effective_function_name
|
145
|
+
assert_respond_to($test_method, :effective_function_name)
|
146
|
+
assert_equal('GetCurrentDirectoryA', $test_method.effective_function_name)
|
147
|
+
assert_equal('strstr', $strstr.effective_function_name)
|
148
|
+
assert_equal('waveOutGetNumDevs', $wave.effective_function_name)
|
149
|
+
assert_equal('ReadDirectoryChangesW', $read.effective_function_name)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_bad_prototype_raises_error
|
153
|
+
assert_raise(Win32::API::PrototypeError){
|
154
|
+
Windows::API.new('GetCurrentDirectory', 'XL', 'L')
|
155
|
+
}
|
156
|
+
assert_raise(Win32::API::PrototypeError){
|
157
|
+
Windows::API.new('GetCurrentDirectory', 'PL', 'X')
|
158
|
+
}
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_bad_function_raises_error
|
162
|
+
assert_raise(Win32::API::LoadLibraryError){
|
163
|
+
Windows::API.new('GetCurrentFooBar', 'LL', 'L')
|
164
|
+
}
|
165
|
+
end
|
166
|
+
|
167
|
+
def teardown
|
168
|
+
@buf = nil
|
169
|
+
@runtimes = nil
|
170
|
+
end
|
166
171
|
end
|
data/windows-api.gemspec
CHANGED
@@ -1,22 +1,23 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'windows-api'
|
5
|
+
spec.version = '0.4.2'
|
6
|
+
spec.author = 'Daniel J. Berger'
|
7
|
+
spec.license = 'Artistic 2.0'
|
8
|
+
spec.email = 'djberg96@gmail.com'
|
9
|
+
spec.homepage = 'http://www.rubyforge.org/projects/win32utils'
|
10
|
+
spec.summary = 'An easier way to create methods using Win32::API'
|
11
|
+
spec.test_files = Dir['test/test*.rb']
|
12
|
+
spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
spec.rubyforge_project = 'win32utils'
|
15
|
+
spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
|
16
16
|
|
17
|
-
|
17
|
+
spec.add_dependency('win32-api', '>= 1.4.5')
|
18
|
+
spec.add_development_dependency('test-unit')
|
18
19
|
|
19
|
-
|
20
|
+
spec.description = <<-EOF
|
20
21
|
The windows-api library provides features over and above the basic
|
21
22
|
interface provided by the win32-api library. Features included automatic
|
22
23
|
constant generation, automatic defintion of ANSI and Unicode methods,
|
metadata
CHANGED
@@ -1,49 +1,61 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: windows-api
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 1
|
10
|
-
version: 0.4.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Daniel J. Berger
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: win32-api
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 13
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 4
|
32
|
-
- 5
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
33
21
|
version: 1.4.5
|
34
22
|
type: :runtime
|
35
|
-
|
36
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.4.5
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: test-unit
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: ! " The windows-api library provides features over and above the basic\n
|
47
|
+
\ interface provided by the win32-api library. Features included automatic\n constant
|
48
|
+
generation, automatic defintion of ANSI and Unicode methods,\n special handling
|
49
|
+
of functions that return a boolean value, and the\n ability to use native Windows
|
50
|
+
type declarations.\n"
|
37
51
|
email: djberg96@gmail.com
|
38
52
|
executables: []
|
39
|
-
|
40
53
|
extensions: []
|
41
|
-
|
42
|
-
extra_rdoc_files:
|
54
|
+
extra_rdoc_files:
|
43
55
|
- README
|
44
56
|
- CHANGES
|
45
57
|
- MANIFEST
|
46
|
-
files:
|
58
|
+
files:
|
47
59
|
- CHANGES
|
48
60
|
- lib/windows/api.rb
|
49
61
|
- lib/windows/wide_string.rb
|
@@ -54,38 +66,30 @@ files:
|
|
54
66
|
- test/test_windows_api.rb
|
55
67
|
- windows-api.gemspec
|
56
68
|
homepage: http://www.rubyforge.org/projects/win32utils
|
57
|
-
licenses:
|
69
|
+
licenses:
|
58
70
|
- Artistic 2.0
|
59
71
|
post_install_message:
|
60
72
|
rdoc_options: []
|
61
|
-
|
62
|
-
require_paths:
|
73
|
+
require_paths:
|
63
74
|
- lib
|
64
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
76
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
70
|
-
|
71
|
-
- 0
|
72
|
-
version: "0"
|
73
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
82
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
segments:
|
80
|
-
- 0
|
81
|
-
version: "0"
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
82
87
|
requirements: []
|
83
|
-
|
84
88
|
rubyforge_project: win32utils
|
85
|
-
rubygems_version: 1.8.
|
89
|
+
rubygems_version: 1.8.24
|
86
90
|
signing_key:
|
87
91
|
specification_version: 3
|
88
92
|
summary: An easier way to create methods using Win32::API
|
89
|
-
test_files:
|
93
|
+
test_files:
|
90
94
|
- test/test_wide_string.rb
|
91
95
|
- test/test_windows_api.rb
|