soap4r-ng 2.0.2 → 2.0.3

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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NGUzYWNmZGNlNjY4N2IxODlkNmJmMjU5ZGE5ZjFhOGQzMTc3MWI1Zg==
5
- data.tar.gz: !binary |-
6
- NWMxMzE3YzQ4Yjk1MmFmMzIzYTIzNDc2ODQzNjdlNTc1NGRkNjJmOA==
2
+ SHA1:
3
+ metadata.gz: feac1a1b6c95487a81f512a6140b042fb412fece
4
+ data.tar.gz: 07fd71acfbc506dd522a151d6ac450927452b3e7
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YTU4OTNmOGMyMzgwNjdiMmI5NzZjNzY4OThjY2NhZjhiNTcxYTZhNDJiMWQ0
10
- ZjRjZTdmNDBmMGNiM2RhYmM3Y2Q4MTk5ZWJkMGNhZWRkOTJhZmY5YWVhNDNj
11
- NDY1YzNiMTQ3ZTExYzdlMDQ5OTNlY2NiMzBkNzE4YTkwYWQxYWE=
12
- data.tar.gz: !binary |-
13
- NzJkOWY3YjE3MGM5OTc2OTU5MDg1YTY2OGNhMzA2MzhlM2UyMTk1MDFkZDhl
14
- YmQxYTI3MTQwYjg1N2JjZWMwMTU1Mjc0ZjVhMTA2NzYzZDU2YWVlN2M5N2Ni
15
- Mjg3NmMxZmQzNWEyMGI3ZjdhZDZiOGFmNDUzMWVjMTE1ODVjNGU=
6
+ metadata.gz: ea80f755cd8d36451727d5a572ce9e509efe93d562e3fa463fd1e379bf8b5a1f02c59466d3ba90aa64309e83417688c6e0b0004b9d31b0872b1aa3b68d329d82
7
+ data.tar.gz: 109b4f5fcdc2b3c98412c5e3ee1a8ae921eec1345e170681a1052afe04e82eba47656bcec78956e886bb3cc7f3b023d777b01a869f7028037667c734bd1f4599
data/lib/soap/element.rb CHANGED
@@ -104,7 +104,7 @@ class SOAPBody < SOAPStruct
104
104
  if data
105
105
  if data.respond_to?(:to_xmlpart)
106
106
  data = SOAP::SOAPRawData.new(data)
107
- elsif defined?(::REXML::Element) and data.is_a?(::REXML::Element)
107
+ elsif defined?(::REXML) && defined?(::REXML::Element) && data.is_a?(::REXML::Element)
108
108
  data = SOAP::SOAPRawData.new(SOAP::SOAPREXMLElementWrap.new(data))
109
109
  end
110
110
  if data.respond_to?(:elename)
@@ -127,7 +127,7 @@ module Mapping
127
127
  def self._obj2soap(obj, registry, type = nil)
128
128
  if obj.respond_to?(:to_xmlpart)
129
129
  SOAPRawData.new(obj)
130
- elsif defined?(::REXML::Element) and obj.is_a?(::REXML::Element)
130
+ elsif defined?(::REXML) && defined?(::REXML::Element) && obj.is_a?(::REXML::Element)
131
131
  SOAPRawData.new(SOAPREXMLElementWrap.new(obj))
132
132
  elsif referent = Thread.current[:SOAPMapping][:MarshalKey][obj.__id__] and
133
133
  !Thread.current[:SOAPMapping][:NoReference]
data/lib/soap/soap.rb CHANGED
@@ -16,8 +16,7 @@ require 'soap/version'
16
16
  module SOAP
17
17
 
18
18
 
19
- # VERSION = Version = SOAP::VERSION::STRING # '1.5.8-HEAD'
20
- Version = SOAP::VERSION::STRING # '1.5.8-HEAD'
19
+ Version = SOAP::VERSION::STRING # evaluates to 'SOAP4R-NG 2.0.2' or later
21
20
  PropertyName = 'soap/property'
22
21
 
23
22
  EnvelopeNamespace = 'http://schemas.xmlsoap.org/soap/envelope/'
@@ -152,3 +151,13 @@ unless Kernel.respond_to?(:warn)
152
151
  end
153
152
  end
154
153
  end
154
+
155
+
156
+ # For Ruby 1.8 and below
157
+ unless Kernel.respond_to?(:require_relative)
158
+ module Kernel
159
+ def require_relative(path)
160
+ require File.join(File.dirname(caller[0]), path.to_str)
161
+ end
162
+ end
163
+ end
@@ -143,7 +143,7 @@ public
143
143
 
144
144
  def initialize(options)
145
145
  super()
146
- @client = Client.new(nil, "RUBYJEDI-SOAP4R/#{ Version }")
146
+ @client = Client.new(nil, SOAP::VERSION::FORK_STRING)
147
147
  if @client.respond_to?(:request_filter)
148
148
  @client.request_filter << HttpPostRequestFilter.new(@filterchain)
149
149
  end
data/lib/soap/version.rb CHANGED
@@ -3,7 +3,10 @@ module SOAP
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 2
5
5
  MINOR = 0
6
- TINY = 2
6
+ TINY = 3
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
+
9
+ FORK = "SOAP4R-NG"
10
+ FORK_STRING = "#{SOAP::VERSION::FORK}/#{SOAP::VERSION::STRING}"
8
11
  end
9
12
  end
@@ -77,6 +77,7 @@ private
77
77
  check_file(@classdef_filename) or return
78
78
  write_file(@classdef_filename) do |f|
79
79
  f.puts "# encoding: UTF-8"
80
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
80
81
  f << WSDL::SOAP::ClassDefCreator.new(@wsdl, @name_creator, @modulepath).dump
81
82
  end
82
83
  end
@@ -87,7 +88,8 @@ private
87
88
  check_file(@mr_filename) or return
88
89
  write_file(@mr_filename) do |f|
89
90
  f.puts "# encoding: UTF-8"
90
- f << "require '#{@classdef_filename}'\n" if @classdef_filename
91
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
92
+ f << "require_relative '#{@classdef_filename}'\n" if @classdef_filename
91
93
  f << WSDL::SOAP::MappingRegistryCreator.new(@wsdl, @name_creator, @modulepath).dump
92
94
  end
93
95
  end
@@ -101,7 +103,8 @@ private
101
103
  write_file(@client_skelton_filename) do |f|
102
104
  f << shbang << "\n"
103
105
  f.puts "# encoding: UTF-8"
104
- f << "require '#{@driver_filename}'\n\n" if @driver_filename
106
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
107
+ f << "require_relative '#{@driver_filename}'\n\n" if @driver_filename
105
108
  f << WSDL::SOAP::ClientSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
106
109
  end
107
110
  end
@@ -112,7 +115,8 @@ private
112
115
  check_file(@servant_skelton_filename) or return
113
116
  write_file(@servant_skelton_filename) do |f|
114
117
  f.puts "# encoding: UTF-8"
115
- f << "require '#{@classdef_filename}'\n\n" if @classdef_filename
118
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
119
+ f << "require_relative '#{@classdef_filename}'\n\n" if @classdef_filename
116
120
  f << WSDL::SOAP::ServantSkeltonCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(porttypename))
117
121
  end
118
122
  end
@@ -125,8 +129,9 @@ private
125
129
  write_file(@cgi_stubFilename) do |f|
126
130
  f << shbang << "\n"
127
131
  f.puts "# encoding: UTF-8"
128
- f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
129
- f << "require '#{@mr_filename}'\n" if @mr_filename
132
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
133
+ f << "require_relative '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
134
+ f << "require_relative '#{@mr_filename}'\n" if @mr_filename
130
135
  f << WSDL::SOAP::CGIStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
131
136
  end
132
137
  end
@@ -139,8 +144,9 @@ private
139
144
  write_file(@standalone_server_stub_filename) do |f|
140
145
  f << shbang << "\n"
141
146
  f.puts "# encoding: UTF-8"
142
- f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
143
- f << "require '#{@mr_filename}'\n" if @mr_filename
147
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
148
+ f << "require_relative '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
149
+ f << "require_relative '#{@mr_filename}'\n" if @mr_filename
144
150
  f << WSDL::SOAP::StandaloneServerStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
145
151
  end
146
152
  end
@@ -153,8 +159,9 @@ private
153
159
  write_file(@servlet_stub_filename) do |f|
154
160
  f << shbang << "\n"
155
161
  f.puts "# encoding: UTF-8"
156
- f << "require '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
157
- f << "require '#{@mr_filename}'\n" if @mr_filename
162
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
163
+ f << "require_relative '#{@servant_skelton_filename}'\n" if @servant_skelton_filename
164
+ f << "require_relative '#{@mr_filename}'\n" if @mr_filename
158
165
  f << WSDL::SOAP::ServletStubCreator.new(@wsdl, @name_creator, @modulepath).dump(create_name(servicename))
159
166
  end
160
167
  end
@@ -167,8 +174,9 @@ private
167
174
  check_file(@driver_filename) or return
168
175
  write_file(@driver_filename) do |f|
169
176
  f.puts "# encoding: UTF-8"
170
- f << "require '#{@classdef_filename}'\n" if @classdef_filename
171
- f << "require '#{@mr_filename}'\n" if @mr_filename
177
+ f.puts "# Generated by wsdl2ruby (#{::SOAP::VERSION::FORK_STRING})\n"
178
+ f << "require_relative '#{@classdef_filename}'\n" if @classdef_filename
179
+ f << "require_relative '#{@mr_filename}'\n" if @mr_filename
172
180
  f << creator.dump(create_name(porttypename))
173
181
  end
174
182
  end
@@ -25,6 +25,7 @@ class LibXMLParser < XSD::XMLParser::Parser
25
25
  include ::LibXML::XML::SaxParser::Callbacks
26
26
 
27
27
  def do_parse(string_or_readable)
28
+ $stderr.puts "XSD::XMLParser::LibXMLParser.do_parse" if $DEBUG
28
29
  # string = string_or_readable.respond_to?(:read) ? string_or_readable.read : string_or_readable
29
30
 
30
31
  @charset = 'utf-8'
@@ -13,12 +13,18 @@ module XMLParser
13
13
 
14
14
  class NokogiriParser < XSD::XMLParser::Parser
15
15
  def do_parse(string_or_readable)
16
+ $stderr.puts "XSD::XMLParser::NokogiriParser.do_parse" if $DEBUG
16
17
  handler = NokoDocHandler.new(self)
17
18
  parser = Nokogiri::XML::SAX::Parser.new(handler)
18
19
  parser.parse(string_or_readable)
19
20
  end
20
21
 
21
22
  add_factory(self)
23
+
24
+ public :start_element
25
+ public :end_element
26
+ public :characters
27
+ public :xmldecl_encoding=
22
28
  end
23
29
 
24
30
 
@@ -27,29 +33,28 @@ class NokoDocHandler < Nokogiri::XML::SAX::Document
27
33
  @owner = (owner)
28
34
  end
29
35
 
36
+ def xmldecl(version, encoding, standalone)
37
+ @owner.xmldecl_encoding= encoding
38
+ end
39
+
30
40
  def start_element(name,attrs)
31
- attr_hash = Hash.new
32
- attrs.each do |kv_array|
33
- attr_hash[kv_array[0]] = kv_array[1]
34
- end
35
- @owner.send(:start_element, name, attr_hash)
41
+ @owner.start_element(name,Hash[*attrs.flatten])
36
42
  end
37
43
 
38
44
  def end_element(name)
39
- @owner.send(:end_element, name)
45
+ @owner.end_element(name)
40
46
  end
41
47
 
42
-
43
48
  def cdata_block(t)
44
- @owner.send(:characters, t)
49
+ @owner.characters(t)
45
50
  end
46
51
 
47
52
  def characters(t)
48
- @owner.send(:characters, t)
53
+ @owner.characters(t)
49
54
  end
50
55
 
51
56
  def comment(t)
52
- @owner.send(:characters,t)
57
+ @owner.characters(t)
53
58
  end
54
59
  end
55
60
 
@@ -6,7 +6,6 @@
6
6
  # redistribute it and/or modify it under the same terms of Ruby's license;
7
7
  # either the dual license version in 2003, or any later version.
8
8
 
9
- require 'pp'
10
9
  require 'oga'
11
10
 
12
11
 
@@ -16,7 +15,7 @@ module XMLParser
16
15
  class OgaParser < XSD::XMLParser::Parser
17
16
 
18
17
  def do_parse(string_or_readable)
19
- # Oga::XML::SaxParser.new(self, string_or_readable)
18
+ $stderr.puts "XSD::XMLParser::OgaParser.do_parse" if $DEBUG
20
19
  Oga.sax_parse_xml(self, string_or_readable)
21
20
  end
22
21
 
@@ -29,26 +28,17 @@ class OgaParser < XSD::XMLParser::Parser
29
28
  end_element(node_name(namespace, name))
30
29
  end
31
30
 
32
-
33
- def on_cdata(t)
34
- characters(t)
35
- end
36
-
37
- def on_comment(t)
38
- characters(t)
39
- end
40
-
41
31
  def on_text(t)
42
32
  characters(t)
43
33
  end
44
34
 
45
-
35
+ alias_method :on_cdata, :on_text
36
+ alias_method :on_comment, :on_text
37
+
46
38
  def on_xml_decl(attr_hash)
47
- # attr_hash['version'] = '1.0'; attr_hash['encoding'] = 'utf-8' (usually)
48
- # $stderr.puts "XML Document #{attr_hash['version']} in #{attr_hash['encoding']} encoding."
39
+ send :xmldecl_encoding=,attr_hash['encoding']
49
40
  end
50
41
 
51
-
52
42
  private
53
43
 
54
44
  def node_name(namespace, name)
@@ -8,93 +8,89 @@
8
8
 
9
9
  require 'ox'
10
10
 
11
-
12
11
  module XSD
13
12
  module XMLParser
14
13
 
15
14
  class OxParser < XSD::XMLParser::Parser
16
15
  def do_parse(string_or_readable)
17
- @element_stack = []
16
+ $stderr.puts "XSD::XMLParser::OxParser.do_parse" if $DEBUG
18
17
  begin
19
18
  require 'htmlentities' # Used to unescape html-escaped chars, if available
20
19
  @decoder = ::HTMLEntities.new(:expanded)
21
20
  rescue LoadError
22
21
  @decoder = nil
23
22
  end
23
+ handler = OxDocHandler.new(self, @decoder)
24
24
 
25
25
  string = string_or_readable.respond_to?(:read) ? string_or_readable.read : StringIO.new(string_or_readable)
26
26
  if @decoder.nil?
27
27
  # Use the built-in conversion with Ox.
28
- ::Ox.sax_parse(self, string, {:symbolize=> false, :convert_special=> true, :skip=> :skip_return} )
28
+ ::Ox.sax_parse(handler, string, {:symbolize=> false, :convert_special=> true, :skip=> :skip_return} )
29
29
  else
30
30
  # Use HTMLEntities Decoder. Leave the special-character conversion alone and let HTMLEntities decode it for us.
31
- ::Ox.sax_parse(self, string, {})
31
+ ::Ox.sax_parse(handler, string, {})
32
32
  end
33
33
  end
34
+
35
+ public :start_element
36
+ public :end_element
37
+ public :characters
38
+ public :xmldecl_encoding=
34
39
 
40
+ add_factory(self)
41
+ end
35
42
 
36
- alias_method :base_start_element, :start_element
37
- def start_element(n)
38
- # $stderr.puts "OxParser.start_element INVOKED [#{n}]"
39
- @element_stack.push n.to_s # Push the Element Name
40
- @element_stack.push Hash.new
43
+ class OxDocHandler
44
+
45
+ def initialize(owner, decoder)
46
+ @owner = owner
47
+ @decoder = decoder
48
+ reset_for_next_element
41
49
  end
42
-
43
- alias_method :base_end_element, :end_element
44
- def end_element(n)
45
- # $stderr.puts "OxParser.end_element INVOKED [#{n}]"
46
- if @element_stack[-2].to_s == n.to_s
47
- attr_hash = @element_stack.pop
48
- attr_key = @element_stack.pop
49
- else
50
- $stderr.puts "!!!! OxParser.end_element FAILED TO FIND STACK PAIR [#{n}] IN STACK [#{PP.pp(@element_stack,'')}]"
50
+
51
+ def attr(key, val)
52
+ @attr_hash[key.to_s]=val
53
+ end
54
+
55
+ def attrs_done
56
+ unless @element_name.nil?
57
+ @owner.start_element(@element_name, @attr_hash)
58
+ reset_for_next_element
51
59
  end
52
- base_end_element(n.to_s)
53
60
  end
54
-
55
-
56
- def text(t)
57
- @decoder.nil? ? characters(t) : characters(@decoder.decode(t))
61
+
62
+ def start_element(name)
63
+ @element_name = name.to_s
64
+ end
65
+
66
+ def end_element(name)
67
+ name = name.to_s
68
+ @owner.end_element(name) unless @element_name.nil?
58
69
  end
59
70
 
60
- def cdata(t)
61
- ## CAUTION: Ox Parser removes leading/trailing whitespace or blank lines. ##
62
- ## This behavior is evident if you run the regression test:
63
- ##
64
- ## SOAP4R_PARSERS=oxparser bundle exec rake test:single test/soap/test_response_as_xml.rb
65
- ##
66
- @decoder.nil? ? characters(t) : characters(@decoder.decode(t))
71
+ def text(t)
72
+ @decoder.nil? ? @owner.characters(t) : @owner.characters(@decoder.decode(t))
67
73
  end
68
74
 
69
- def comment(t)
70
- @decoder.nil? ? characters(t) : characters(@decoder.decode(t))
71
- end
75
+ alias_method :cdata, :text
72
76
 
73
77
 
74
78
  def instruct(n)
75
- # Do nothing. This is the outer "XML" tag.
79
+ # Set @element_name to nil so DocHandler does nothing with attrs or element name. This is the outer "XML" tag.
80
+ @element_name = nil
76
81
  end
77
82
 
78
83
  def end_instruct(n)
79
- # Do nothing.
84
+ @owner.xmldecl_encoding= @attr_hash['encoding']
85
+ reset_for_next_element
80
86
  end
81
87
 
82
-
83
- def attr(key,val)
84
- return if @element_stack[-1].nil?
85
-
86
- attr_hash = @element_stack[-1]
87
- attr_hash[key.to_s] = val
88
- end
88
+ private
89
89
 
90
- def attrs_done
91
- attr_hash = @element_stack[-1]
92
- name = @element_stack[-2]
93
-
94
- base_start_element(name, attr_hash) unless attr_hash.nil?
95
- end
96
-
97
- add_factory(self)
90
+ def reset_for_next_element
91
+ @attr_hash = {}
92
+ @element_name = ""
93
+ end
98
94
  end
99
95
 
100
96
  end
@@ -11,7 +11,6 @@ require 'xsd/qname'
11
11
  require 'xsd/ns'
12
12
  require 'xsd/charset'
13
13
 
14
-
15
14
  module XSD
16
15
  module XMLParser
17
16
 
@@ -89,6 +88,7 @@ private
89
88
  def xmldecl_encoding=(charset)
90
89
  if @charset.nil?
91
90
  @charset = charset
91
+ p "encoding definition: #{ charset } is configured." if $DEBUG
92
92
  else
93
93
  # Definition in a stream (like HTTP) has a priority.
94
94
  p "encoding definition: #{ charset } is ignored." if $DEBUG
@@ -19,12 +19,8 @@ class REXMLParser < XSD::XMLParser::Parser
19
19
  include REXML::StreamListener
20
20
 
21
21
  def do_parse(string_or_readable)
22
- source = nil
23
- source = REXML::SourceFactory.create_from(string_or_readable)
24
- source.encoding = charset if charset
25
- # Listener passes a String in utf-8.
26
- @charset = 'utf-8'
27
- REXML::Document.parse_stream(source, self)
22
+ $stderr.puts "XSD::XMLParser::REXMLParser.do_parse" if $DEBUG
23
+ REXML::Document.parse_stream(string_or_readable, self)
28
24
  end
29
25
 
30
26
  def epilogue
@@ -47,7 +43,7 @@ class REXMLParser < XSD::XMLParser::Parser
47
43
  end
48
44
 
49
45
  def xmldecl(version, encoding, standalone)
50
- # Version should be checked.
46
+ send :xmldecl_encoding=, encoding
51
47
  end
52
48
 
53
49
  add_factory(self)
metadata CHANGED
@@ -1,44 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soap4r-ng
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurence A. Lee, Hiroshi NAKAMURA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-19 00:00:00.000000000 Z
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpclient
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: logger-application
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.0.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.0.2
41
- description:
41
+ description: Soap4R NextGen (as maintained by RubyJedi) for Ruby 1.8 thru 2.1 and
42
+ beyond
42
43
  email: rubyjedi@gmail.com, nahi@ruby-lang.org
43
44
  executables:
44
45
  - wsdl2ruby.rb
@@ -209,7 +210,8 @@ files:
209
210
  - lib/xsd/xmlparser/parser.rb
210
211
  - lib/xsd/xmlparser/rexmlparser.rb
211
212
  homepage: http://rubyjedi.github.io/soap4r/
212
- licenses: []
213
+ licenses:
214
+ - Ruby
213
215
  metadata: {}
214
216
  post_install_message:
215
217
  rdoc_options: []
@@ -217,12 +219,12 @@ require_paths:
217
219
  - lib
218
220
  required_ruby_version: !ruby/object:Gem::Requirement
219
221
  requirements:
220
- - - ! '>='
222
+ - - ">="
221
223
  - !ruby/object:Gem::Version
222
224
  version: '0'
223
225
  required_rubygems_version: !ruby/object:Gem::Requirement
224
226
  requirements:
225
- - - ! '>='
227
+ - - ">="
226
228
  - !ruby/object:Gem::Version
227
229
  version: '0'
228
230
  requirements: