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 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