win32-api 1.9.2-universal-mingw32 → 1.10.0-universal-mingw32
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 +4 -4
- data/CHANGES +4 -0
- data/Dockerfile +15 -1
- data/Dockerfile.trunk +5 -5
- data/Rakefile +3 -1
- data/appveyor.yml +6 -6
- data/ext/win32/api.c +51 -1
- data/lib/win32/ruby21_32/win32/api.so +0 -0
- data/lib/win32/ruby21_64/win32/api.so +0 -0
- data/lib/win32/ruby22_32/win32/api.so +0 -0
- data/lib/win32/ruby22_64/win32/api.so +0 -0
- data/lib/win32/ruby23_32/win32/api.so +0 -0
- data/lib/win32/ruby23_64/win32/api.so +0 -0
- data/lib/win32/ruby24_32/win32/api.so +0 -0
- data/lib/win32/ruby24_64/win32/api.so +0 -0
- data/lib/win32/ruby25_32/win32/api.so +0 -0
- data/lib/win32/ruby25_64/win32/api.so +0 -0
- data/lib/win32/ruby26_32/win32/api.so +0 -0
- data/lib/win32/ruby26_64/win32/api.so +0 -0
- data/lib/win32/ruby27_32/win32/api.so +0 -0
- data/lib/win32/ruby27_64/win32/api.so +0 -0
- data/lib/win32/ruby2_32/win32/api.so +0 -0
- data/lib/win32/ruby2_64/win32/api.so +0 -0
- data/lib/win32/ruby30_32/win32/api.so +0 -0
- data/lib/win32/ruby30_64/win32/api.so +0 -0
- data/lib/win32/ruby31_32/win32/api.so +0 -0
- data/lib/win32/ruby31_64/win32/api.so +0 -0
- data/test/test_win32_api.rb +7 -1
- data/win32-api.gemspec +1 -1
- metadata +5 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0e094917b41770c3fc5a82f79b60638d3eb3dc7d5255e17e1aae7089a0070979
         | 
| 4 | 
            +
              data.tar.gz: 2e548c70a32503b0b4f3353bde818a72a4ca75975d6a972d7a570cfc48a93348
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1fb21c7689902148c217af40a432791037c9492519f84d171ac3c70225258313af9a13aef7bb2c94b3c319488256dfa3092c123d742d401f46127b9d50168018
         | 
| 7 | 
            +
              data.tar.gz: c3f81dfa40a40920cb44a9dda2e19164e8edb0c3ed41c18577b93186b8abd31cebd76b803c6a22ab82b8fe899cb2b403b8ccd1bbabb55c962552084ca816e70d
         | 
    
        data/CHANGES
    CHANGED
    
    
    
        data/Dockerfile
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            FROM mcr.microsoft.com/windows/servercore: | 
| 1 | 
            +
            FROM mcr.microsoft.com/windows/servercore:20H2
         | 
| 2 2 | 
             
            LABEL maintainer "Hiroshi Hatake <cosmo0920.wp@gmail.com>"
         | 
| 3 3 | 
             
            LABEL Description="win32-api building docker image"
         | 
| 4 4 |  | 
| @@ -80,6 +80,16 @@ RUN powershell \ | |
| 80 80 | 
             
            	Invoke-WebRequest -OutFile C:\rubyinstaller-2.7.0-1-x64.exe https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-2.7.0-1/rubyinstaller-2.7.0-1-x64.exe
         | 
| 81 81 | 
             
            RUN cmd /c "C:\rubyinstaller-2.7.0-1-x64.exe" /silent /dir=c:\ruby27-x64
         | 
| 82 82 |  | 
| 83 | 
            +
            # Ruby 3.0
         | 
| 84 | 
            +
            RUN powershell \
         | 
| 85 | 
            +
            	[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
         | 
| 86 | 
            +
            	Invoke-WebRequest -OutFile C:\rubyinstaller-3.0.0-1-x86.exe https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x86.exe
         | 
| 87 | 
            +
            RUN cmd /c "C:\rubyinstaller-3.0.0-1-x86.exe" /silent /dir=c:\ruby30
         | 
| 88 | 
            +
            RUN powershell \
         | 
| 89 | 
            +
            	[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
         | 
| 90 | 
            +
            	Invoke-WebRequest -OutFile C:\rubyinstaller-3.0.0-1-x64.exe https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.0.0-1/rubyinstaller-3.0.0-1-x64.exe
         | 
| 91 | 
            +
            RUN cmd /c "C:\rubyinstaller-3.0.0-1-x64.exe" /silent /dir=c:\ruby30-x64
         | 
| 92 | 
            +
             | 
| 83 93 | 
             
            # DevKit
         | 
| 84 94 | 
             
            RUN powershell \
         | 
| 85 95 | 
             
            	[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
         | 
| @@ -92,8 +102,12 @@ RUN cmd /c C:\DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe -o"c:\DevKit64" -y | |
| 92 102 |  | 
| 93 103 | 
             
            RUN choco install -y git \
         | 
| 94 104 | 
             
                && choco install -y msys2 --params "'/NoPath /NoUpdate /InstallDir:C:\msys64'"
         | 
| 105 | 
            +
            # pacman -Syu --noconfirm is needed for downloading ucrt64 repo.
         | 
| 106 | 
            +
            # They should be removed after using Ruby 2.5.9, 2.6.7, and 2.7.3 installers.
         | 
| 95 107 | 
             
            RUN refreshenv \
         | 
| 108 | 
            +
                && C:\ruby27\bin\ridk exec pacman -Syu --noconfirm \
         | 
| 96 109 | 
             
                && C:\ruby27\bin\ridk install 2 3 \
         | 
| 110 | 
            +
                && C:\ruby27-x64\bin\ridk exec pacman -Syu --noconfirm \
         | 
| 97 111 | 
             
                && C:\ruby27-x64\bin\ridk install 2 3
         | 
| 98 112 |  | 
| 99 113 | 
             
            ENTRYPOINT ["cmd"]
         | 
    
        data/Dockerfile.trunk
    CHANGED
    
    | @@ -2,15 +2,15 @@ FROM cosmo0920/win32-api:latest | |
| 2 2 | 
             
            LABEL maintainer "Hiroshi Hatake <cosmo0920.wp@gmail.com>"
         | 
| 3 3 | 
             
            LABEL Description="win32-api building docker image"
         | 
| 4 4 |  | 
| 5 | 
            -
            # Ruby 3. | 
| 5 | 
            +
            # Ruby 3.1
         | 
| 6 6 | 
             
            RUN powershell \
         | 
| 7 7 | 
             
            	[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
         | 
| 8 | 
            -
            	Invoke-WebRequest -OutFile C:\rubyinstaller-head-x86- | 
| 9 | 
            -
            RUN cmd /c "C:\rubyinstaller-head-x86- | 
| 8 | 
            +
            	Invoke-WebRequest -OutFile C:\rubyinstaller-head-x86-20210418.exe https://ci.appveyor.com/api/buildjobs/smfh4ojkobb4duif/artifacts/packages%2Fri%2Frecipes%2Finstaller-inno%2Frubyinstaller-head-x86.exe
         | 
| 9 | 
            +
            RUN cmd /c "C:\rubyinstaller-head-x86-20210418.exe" /silent /dir=c:\ruby31
         | 
| 10 10 | 
             
            RUN powershell \
         | 
| 11 11 | 
             
            	[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \
         | 
| 12 | 
            -
            	Invoke-WebRequest -OutFile C:\rubyinstaller-head-x64- | 
| 13 | 
            -
            RUN cmd /c "C:\rubyinstaller-head-x64- | 
| 12 | 
            +
            	Invoke-WebRequest -OutFile C:\rubyinstaller-head-x64-20210418.exe https://ci.appveyor.com/api/buildjobs/hsgdg4xl5ny74k94/artifacts/packages%2Fri%2Frecipes%2Finstaller-inno%2Frubyinstaller-head-x64.exe
         | 
| 13 | 
            +
            RUN cmd /c "C:\rubyinstaller-head-x64-20210418.exe" /silent /dir=c:\ruby31-x64
         | 
| 14 14 |  | 
| 15 15 | 
             
            RUN mkdir C:\pkg
         | 
| 16 16 | 
             
            COPY build-gem.bat C:\\build-gem.bat
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -59,7 +59,7 @@ namespace 'gem' do | |
| 59 59 | 
             
              end
         | 
| 60 60 |  | 
| 61 61 | 
             
              desc 'Build a binary gem'
         | 
| 62 | 
            -
              task :binary, :ruby2_32, :ruby2_64, :ruby21, :ruby21_64, :ruby22, :ruby22_64, :ruby23_32, :ruby23_64, :ruby24_32, :ruby24_64, :ruby25_32, :ruby25_64, :ruby_26_32, :ruby26_64, :ruby27_32, :ruby27_64, :ruby30_32, :ruby30_64 do |task, args|
         | 
| 62 | 
            +
              task :binary, :ruby2_32, :ruby2_64, :ruby21, :ruby21_64, :ruby22, :ruby22_64, :ruby23_32, :ruby23_64, :ruby24_32, :ruby24_64, :ruby25_32, :ruby25_64, :ruby_26_32, :ruby26_64, :ruby27_32, :ruby27_64, :ruby30_32, :ruby30_64, :ruby31_32, :ruby31_64 do |task, args|
         | 
| 63 63 | 
             
                # These are just what's on my system at the moment. Adjust as needed.
         | 
| 64 64 | 
             
                # ri refers to RubyInstaller, ruby 2.3 and prev were built with RubyInstaller (:ri),
         | 
| 65 65 | 
             
                # 2.4 and later with RubyInstaller2 (:ri2)
         | 
| @@ -100,6 +100,8 @@ namespace 'gem' do | |
| 100 100 | 
             
                    :ruby27_64 => {:path => "#{pre}/ruby27-x64/bin",  :ri => :ri2_64, :omit => true},
         | 
| 101 101 | 
             
                    :ruby30_32 => {:path => "#{pre}/ruby30/bin",      :ri => :ri2,    :omit => true},
         | 
| 102 102 | 
             
                    :ruby30_64 => {:path => "#{pre}/ruby30-x64/bin",  :ri => :ri2_64, :omit => true},
         | 
| 103 | 
            +
                    :ruby31_32 => {:path => "#{pre}/ruby31/bin",      :ri => :ri2,    :omit => true},
         | 
| 104 | 
            +
                    :ruby31_64 => {:path => "#{pre}/ruby31-x64/bin",  :ri => :ri2_64, :omit => true},
         | 
| 103 105 | 
             
                  }
         | 
| 104 106 | 
             
                )
         | 
| 105 107 |  | 
    
        data/appveyor.yml
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            version: '{build}'
         | 
| 2 2 |  | 
| 3 | 
            +
            image: Visual Studio 2019
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            init:
         | 
| 4 6 | 
             
              # use a minimal path
         | 
| 5 7 | 
             
              - set PATH=C:\ruby%ruby_version%\bin;C:\Program Files\7-Zip;C:\Program Files\AppVeyor\BuildAgent;C:\Program Files\Git\cmd;C:\Windows\system32
         | 
| @@ -26,6 +28,10 @@ test_script: | |
| 26 28 | 
             
            environment:
         | 
| 27 29 | 
             
              matrix:
         | 
| 28 30 | 
             
                - ruby_version: _trunk
         | 
| 31 | 
            +
                - ruby_version: 30-x64
         | 
| 32 | 
            +
                - ruby_version: 30
         | 
| 33 | 
            +
                - ruby_version: 27-x64
         | 
| 34 | 
            +
                - ruby_version: 27
         | 
| 29 35 | 
             
                - ruby_version: 26-x64
         | 
| 30 36 | 
             
                - ruby_version: 26
         | 
| 31 37 | 
             
                - ruby_version: 25-x64
         | 
| @@ -34,12 +40,6 @@ environment: | |
| 34 40 | 
             
                - ruby_version: 24
         | 
| 35 41 | 
             
                - ruby_version: 23-x64
         | 
| 36 42 | 
             
                - ruby_version: 23
         | 
| 37 | 
            -
                - ruby_version: 22-x64
         | 
| 38 | 
            -
                - ruby_version: 22
         | 
| 39 | 
            -
                - ruby_version: 21-x64
         | 
| 40 | 
            -
                - ruby_version: 21
         | 
| 41 | 
            -
                - ruby_version: 200-x64
         | 
| 42 | 
            -
                - ruby_version: 200
         | 
| 43 43 |  | 
| 44 44 | 
             
            matrix:
         | 
| 45 45 | 
             
              allow_failures:
         | 
    
        data/ext/win32/api.c
    CHANGED
    
    | @@ -43,7 +43,7 @@ | |
| 43 43 |  | 
| 44 44 |  | 
| 45 45 | 
             
            #define MAX_BUF 1024
         | 
| 46 | 
            -
            #define WINDOWS_API_VERSION "1. | 
| 46 | 
            +
            #define WINDOWS_API_VERSION "1.10.0"
         | 
| 47 47 |  | 
| 48 48 | 
             
            #define _T_VOID     0
         | 
| 49 49 | 
             
            #define _T_LONG     1
         | 
| @@ -62,6 +62,35 @@ typedef struct { | |
| 62 62 | 
             
                int prototype[20];
         | 
| 63 63 | 
             
            } Win32API;
         | 
| 64 64 |  | 
| 65 | 
            +
            typedef struct ThreadData {
         | 
| 66 | 
            +
               DWORD win32api_error;
         | 
| 67 | 
            +
            } ThreadData;
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            static inline ThreadData* thread_data_get(void);
         | 
| 70 | 
            +
            static ID id_thread_data;
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            static ThreadData* thread_data_init(void)
         | 
| 73 | 
            +
            {
         | 
| 74 | 
            +
               ThreadData* td;
         | 
| 75 | 
            +
               VALUE obj;
         | 
| 76 | 
            +
             | 
| 77 | 
            +
               obj = Data_Make_Struct(rb_cObject, ThreadData, NULL, -1, td);
         | 
| 78 | 
            +
               rb_thread_local_aset(rb_thread_current(), id_thread_data, obj);
         | 
| 79 | 
            +
             | 
| 80 | 
            +
               return td;
         | 
| 81 | 
            +
            }
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            static inline ThreadData* thread_data_get()
         | 
| 84 | 
            +
            {
         | 
| 85 | 
            +
               VALUE obj = rb_thread_local_aref(rb_thread_current(), id_thread_data);
         | 
| 86 | 
            +
             | 
| 87 | 
            +
               if(obj != Qnil && TYPE(obj) == T_DATA){
         | 
| 88 | 
            +
                  return (ThreadData*) DATA_PTR(obj);
         | 
| 89 | 
            +
               }
         | 
| 90 | 
            +
             | 
| 91 | 
            +
               return thread_data_init();
         | 
| 92 | 
            +
            }
         | 
| 93 | 
            +
             | 
| 65 94 | 
             
            static void api_free(Win32API* ptr){
         | 
| 66 95 | 
             
               if(ptr->library)
         | 
| 67 96 | 
             
                  FreeLibrary(ptr->library);
         | 
| @@ -781,6 +810,7 @@ static VALUE api_call(int argc, VALUE* argv, VALUE self){ | |
| 781 810 | 
             
               uintptr_t return_value;
         | 
| 782 811 | 
             
               int i = 0;
         | 
| 783 812 | 
             
               int len;
         | 
| 813 | 
            +
               ThreadData* thread_data = thread_data_get();
         | 
| 784 814 |  | 
| 785 815 | 
             
               struct{
         | 
| 786 816 | 
             
                  uintptr_t params[20];
         | 
| @@ -975,6 +1005,8 @@ static VALUE api_call(int argc, VALUE* argv, VALUE self){ | |
| 975 1005 | 
             
                    }
         | 
| 976 1006 | 
             
               }
         | 
| 977 1007 |  | 
| 1008 | 
            +
               thread_data->win32api_error = GetLastError();
         | 
| 1009 | 
            +
             | 
| 978 1010 | 
             
               /* Return the appropriate type based on the return type specified
         | 
| 979 1011 | 
             
                * in the constructor.
         | 
| 980 1012 | 
             
                */
         | 
| @@ -1029,6 +1061,21 @@ static VALUE api_call(int argc, VALUE* argv, VALUE self){ | |
| 1029 1061 | 
             
               return v_return;
         | 
| 1030 1062 | 
             
            }
         | 
| 1031 1063 |  | 
| 1064 | 
            +
            /*
         | 
| 1065 | 
            +
             * call-seq:
         | 
| 1066 | 
            +
             *    Win32::API.last_error
         | 
| 1067 | 
            +
             *
         | 
| 1068 | 
            +
             * Return the last Win32 error code of the current executing thread.
         | 
| 1069 | 
            +
             *
         | 
| 1070 | 
            +
             * The error code shouldn't be retrieved by calling GetLastError() manually
         | 
| 1071 | 
            +
             * because Ruby's internal code may call other Win32 API and reset the error
         | 
| 1072 | 
            +
             * code before it.
         | 
| 1073 | 
            +
             */
         | 
| 1074 | 
            +
            static VALUE get_last_error(VALUE self)
         | 
| 1075 | 
            +
            {
         | 
| 1076 | 
            +
               return INT2NUM(thread_data_get()->win32api_error);
         | 
| 1077 | 
            +
            }
         | 
| 1078 | 
            +
             | 
| 1032 1079 | 
             
            /*
         | 
| 1033 1080 | 
             
             * Wraps the Windows API functions in a Ruby interface.
         | 
| 1034 1081 | 
             
             */
         | 
| @@ -1061,6 +1108,9 @@ void Init_api(){ | |
| 1061 1108 | 
             
               /* Miscellaneous */
         | 
| 1062 1109 | 
             
               rb_define_alloc_func(cAPI, api_allocate);
         | 
| 1063 1110 |  | 
| 1111 | 
            +
               /* GetLastError alternative */
         | 
| 1112 | 
            +
               rb_define_singleton_method(cAPI, "last_error", get_last_error, 0);
         | 
| 1113 | 
            +
             | 
| 1064 1114 | 
             
               /* Win32::API Instance Methods */
         | 
| 1065 1115 | 
             
               rb_define_method(cAPI, "initialize", api_init, -1);
         | 
| 1066 1116 | 
             
               rb_define_method(cAPI, "call", api_call, -1);
         | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
    
        data/test/test_win32_api.rb
    CHANGED
    
    | @@ -18,7 +18,7 @@ class TC_Win32_API < Test::Unit::TestCase | |
| 18 18 | 
             
               end
         | 
| 19 19 |  | 
| 20 20 | 
             
               def test_version
         | 
| 21 | 
            -
                  assert_equal('1. | 
| 21 | 
            +
                  assert_equal('1.10.0', API::VERSION)
         | 
| 22 22 | 
             
               end
         | 
| 23 23 |  | 
| 24 24 | 
             
               def test_constructor_basic
         | 
| @@ -43,6 +43,12 @@ class TC_Win32_API < Test::Unit::TestCase | |
| 43 43 | 
             
                  assert_equal(0xFFFFFFFF, @gfa.call('C:/foobarbazblah'))
         | 
| 44 44 | 
             
               end
         | 
| 45 45 |  | 
| 46 | 
            +
               def test_last_error
         | 
| 47 | 
            +
                  @gfa.call('C:/foobarbazblah')
         | 
| 48 | 
            +
                  error_file_not_found = 2
         | 
| 49 | 
            +
                  assert_equal(error_file_not_found, API.last_error)
         | 
| 50 | 
            +
               end
         | 
| 51 | 
            +
             | 
| 46 52 | 
             
               def test_dll_name
         | 
| 47 53 | 
             
                  assert_respond_to(@gcd, :dll_name)
         | 
| 48 54 | 
             
                  assert_equal('kernel32', @gcd.dll_name)
         | 
    
        data/win32-api.gemspec
    CHANGED
    
    | @@ -2,7 +2,7 @@ require 'rubygems' | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |spec|
         | 
| 4 4 | 
             
              spec.name       = 'win32-api'
         | 
| 5 | 
            -
              spec.version    = '1. | 
| 5 | 
            +
              spec.version    = '1.10.0'
         | 
| 6 6 | 
             
              spec.authors    = ['Daniel J. Berger', 'Park Heesob', 'Hiroshi Hatake']
         | 
| 7 7 | 
             
              spec.license    = 'Artistic-2.0'
         | 
| 8 8 | 
             
              spec.email      = 'djberg96@gmail.com'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: win32-api
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.10.0
         | 
| 5 5 | 
             
            platform: universal-mingw32
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel J. Berger
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire:
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date:  | 
| 13 | 
            +
            date: 2021-04-19 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: test-unit
         | 
| @@ -83,6 +83,8 @@ files: | |
| 83 83 | 
             
            - lib/win32/ruby2_64/win32/api.so
         | 
| 84 84 | 
             
            - lib/win32/ruby30_32/win32/api.so
         | 
| 85 85 | 
             
            - lib/win32/ruby30_64/win32/api.so
         | 
| 86 | 
            +
            - lib/win32/ruby31_32/win32/api.so
         | 
| 87 | 
            +
            - lib/win32/ruby31_64/win32/api.so
         | 
| 86 88 | 
             
            - test/test_win32_api.rb
         | 
| 87 89 | 
             
            - test/test_win32_api_callback.rb
         | 
| 88 90 | 
             
            - test/test_win32_api_function.rb
         | 
| @@ -106,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 106 108 | 
             
                - !ruby/object:Gem::Version
         | 
| 107 109 | 
             
                  version: '0'
         | 
| 108 110 | 
             
            requirements: []
         | 
| 109 | 
            -
            rubygems_version: 3. | 
| 111 | 
            +
            rubygems_version: 3.3.0.dev
         | 
| 110 112 | 
             
            signing_key:
         | 
| 111 113 | 
             
            specification_version: 4
         | 
| 112 114 | 
             
            summary: A superior replacement for Win32API
         |