windows-api 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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
- module Foo
35
- API.auto_namespace = 'Windows::Foo'
36
- API.auto_constant = true
37
- API.auto_method = true
38
- API.auto_unicode = true
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
- API.new('GetComputerName', 'PP', 'B')
41
- end
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
- 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')
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
- def GetComputerName(p1, p2)
52
- GetComputerName.call(p1, p2) != 0
53
- end
51
+ def GetComputerName(p1, p2)
52
+ GetComputerName.call(p1, p2) != 0
53
+ end
54
54
 
55
- def GetComputerNameA(p1, p2)
56
- GetComputerName.call(p1, p2) != 0
57
- end
55
+ def GetComputerNameA(p1, p2)
56
+ GetComputerName.call(p1, p2) != 0
57
+ end
58
58
 
59
- def GetComputerNameW(p1, p2)
60
- GetComputerName.call(p1, p2) != 0
61
- end
62
- end
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
- Add an auto_private method that is true by default.
78
- Replace or drop this library in favor of FFI.
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
- http://www.rubyforge.org/projects/win32utils.
87
+ https://github.com/djberg96/windows-api.
83
88
 
84
89
  == Copyright
85
90
  (C) 2007-2012, Daniel J. Berger
@@ -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.1'
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)
@@ -1,54 +1,59 @@
1
1
  #encoding: utf-8
2
- require 'rubygems'
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
- def setup
10
- @str_english = WideString.new('hello')
11
- @str_greek = WideString.new('Ελλάσ')
12
- end
13
-
14
- def test_length
15
- assert_equal(10, @str_english.length)
16
- assert_equal(10, @str_greek.length)
17
- end
18
-
19
- def test_size
20
- assert_equal(5, @str_english.size)
21
- assert_equal(5, @str_greek.size)
22
- end
23
-
24
- def test_to_multi
25
- assert_respond_to(@str_english, :to_multi)
26
- assert_equal('hello', @str_english.to_multi)
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
- end
29
-
30
- def test_literal_string_value
31
- assert_equal("h\000e\000l\000l\000o\000\000\000", @str_english)
32
- assert_equal("\225\003\273\003\273\003\254\003\303\003\000\000", @str_greek)
33
- end
34
-
35
- def test_alias_to_s
36
- assert_respond_to(@str_greek, :to_s)
37
- assert_true(@str_greek.method(:to_s) == @str_greek.method(:to_multi))
38
- end
39
-
40
- def test_alias_to_str
41
- assert_respond_to(@str_greek, :to_str)
42
- assert_true(@str_greek.method(:to_str) == @str_greek.method(:to_multi))
43
- end
44
-
45
- def test_alias_inspect
46
- assert_respond_to(@str_greek, :inspect)
47
- assert_true(@str_greek.method(:inspect) == @str_greek.method(:to_multi))
48
- end
49
-
50
- def teardown
51
- @str_english = nil
52
- @str_greek = nil
53
- end
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
@@ -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/unit'
8
+ require 'test-unit'
9
9
  include Windows
10
10
 
11
11
  module Windows
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
- $strstr = API.new('strstr', 'PP', 'P', 'msvcrt')
41
- $umask = API.new('_umask', 'I', 'I', 'msvcrt')
42
- $wave = API.new('waveOutGetNumDevs', 'V', 'I', 'winmm')
43
- $read = API.new('ReadDirectoryChangesW', 'LPLILPPP', 'B') # No ANSI equivalent
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
- include Windows::Test
49
- include Windows::Foo
50
- include Windows::Bar
51
- include Windows::Baz
52
-
53
- def setup
54
- @buf = 0.chr * 256
55
- @runtimes = ['msvcrt', 'msvcr80', 'msvcr90']
56
- end
57
-
58
- def test_version
59
- assert_equal('0.4.1', API::VERSION)
60
- end
61
-
62
- def test_full_data_types
63
- assert_nothing_raised{
64
- API.new('GetWindowsDirectory', ['LPTSTR', 'UINT'], 'BOOL')
65
- }
66
- end
67
-
68
- def test_msvcrt_constant
69
- assert_equal(true, @runtimes.include?(Windows::MSVCRT_DLL))
70
- end
71
-
72
- # Validate that functions like 'strstr' get an uppercase constant like 'Strstr'
73
- def test_lower_case_to_capitalized_constant
74
- assert_not_nil(Windows::Baz::Strstr)
75
- assert_not_nil(Windows::Baz::Umask)
76
- assert_not_nil(Windows::Baz::WaveOutGetNumDevs)
77
- end
78
-
79
- def test_explicit_wide_function_only
80
- assert_not_nil(Windows::Baz::ReadDirectoryChangesW)
81
- assert_equal(false, Windows::Baz.constants.include?('ReadDirectoryChanges'))
82
- assert_equal(false, Windows::Baz.constants.include?('ReadDirectoryChangesA'))
83
- end
84
-
85
- def test_lower_case_auto_methods
86
- assert_respond_to(self, :strstr)
87
- assert_respond_to(self, :umask)
88
- assert_respond_to(self, :_umask)
89
- assert_respond_to(self, :waveOutGetNumDevs)
90
- assert_equal('llo', strstr('hello', 'l'))
91
- end
92
-
93
- def test_auto_unicode
94
- assert_not_nil(Windows::Bar::GetUserName)
95
- assert_equal(true, self.respond_to?(:GetUserName))
96
- assert_equal(false, self.respond_to?(:GetUserNameA))
97
- assert_equal(false, self.respond_to?(:GetUserNameW))
98
- end
99
-
100
- def test_auto_constant
101
- assert_not_nil(Windows::Test::GetCurrentDirectory)
102
- assert_not_nil(Windows::Bar::GetUserName)
103
-
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
-
113
- assert_equal(false, self.respond_to?(:GetSystemDirectory))
114
- assert_equal(false, self.respond_to?(:GetSystemDirectoryA))
115
- assert_equal(false, self.respond_to?(:GetSystemDirectoryW))
116
- end
117
-
118
- def test_call
119
- assert_respond_to($test_method, :call)
120
- assert_respond_to($foo_method, :call)
121
- assert_nothing_raised{ $test_method.call(@buf.length, @buf) }
122
- assert_nothing_raised{ $foo_method.call(@buf, @buf.length) }
123
- end
124
-
125
- def test_dll_name
126
- assert_respond_to($test_method, :dll_name)
127
- assert_equal('kernel32', $test_method.dll_name)
128
- end
129
-
130
- def test_function_name
131
- assert_respond_to($test_method, :function_name)
132
- assert_equal('GetCurrentDirectory', $test_method.function_name)
133
- end
134
-
135
- def test_prototype
136
- assert_respond_to($test_method, :prototype)
137
- assert_equal(['P', 'P'], $test_method.prototype)
138
- end
139
-
140
- def test_return_type
141
- assert_respond_to($test_method, :return_type)
142
- assert_equal('L', $test_method.return_type)
143
- end
144
-
145
- def test_effective_function_name
146
- assert_respond_to($test_method, :effective_function_name)
147
- assert_equal('GetCurrentDirectoryA', $test_method.effective_function_name)
148
- assert_equal('strstr', $strstr.effective_function_name)
149
- assert_equal('waveOutGetNumDevs', $wave.effective_function_name)
150
- assert_equal('ReadDirectoryChangesW', $read.effective_function_name)
151
- end
152
-
153
- def test_bad_prototype_raises_error
154
- assert_raise(Win32::API::PrototypeError){ Windows::API.new('GetCurrentDirectory', 'XL', 'L') }
155
- assert_raise(Win32::API::PrototypeError){ Windows::API.new('GetCurrentDirectory', 'PL', 'X') }
156
- end
157
-
158
- def test_bad_function_raises_error
159
- assert_raise(Win32::API::LoadLibraryError){ Windows::API.new('GetCurrentFooBar', 'LL', 'L') }
160
- end
161
-
162
- def teardown
163
- @buf = nil
164
- @runtimes = nil
165
- end
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
@@ -1,22 +1,23 @@
1
1
  require 'rubygems'
2
2
 
3
- Gem::Specification.new do |gem|
4
- gem.name = 'windows-api'
5
- gem.version = '0.4.1'
6
- gem.author = 'Daniel J. Berger'
7
- gem.license = 'Artistic 2.0'
8
- gem.email = 'djberg96@gmail.com'
9
- gem.homepage = 'http://www.rubyforge.org/projects/win32utils'
10
- gem.summary = 'An easier way to create methods using Win32::API'
11
- gem.test_files = Dir['test/test*.rb']
12
- gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
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
- gem.rubyforge_project = 'win32utils'
15
- gem.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
14
+ spec.rubyforge_project = 'win32utils'
15
+ spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
16
16
 
17
- gem.add_dependency('win32-api', '>= 1.4.5')
17
+ spec.add_dependency('win32-api', '>= 1.4.5')
18
+ spec.add_development_dependency('test-unit')
18
19
 
19
- gem.description = <<-EOF
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
- hash: 13
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
- date: 2012-01-27 00:00:00 Z
19
- dependencies:
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
- prerelease: false
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
- version_requirements: *id001
36
- description: " The windows-api library provides features over and above the basic\n interface provided by the win32-api library. Features included automatic\n constant generation, automatic defintion of ANSI and Unicode methods,\n special handling of functions that return a boolean value, and the\n ability to use native Windows type declarations.\n"
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
- hash: 3
70
- segments:
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
- hash: 3
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.10
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