ostruct 0.5.1 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ostruct.rb +16 -8
  3. data/ostruct.gemspec +0 -2
  4. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2cd7835b13bb18fa62b7db22bf42fbd57785c07b4a38ccad4a1b4449d2979133
4
- data.tar.gz: b1fb70a803b08bbbaa0e07a12c6e2b0844743e1613a6c083abc4e35dbb005a59
3
+ metadata.gz: eac2df904d6f8e5f05be36be58b316b427d242d1e9d49393158c9dad9ea0b1cc
4
+ data.tar.gz: 3ce7d400c329fdd87068795d39af61573067e1823b416c7a64d3bda505e1aae8
5
5
  SHA512:
6
- metadata.gz: 1258b993e79b8feff50d4f8dfbbb1ce631421ff8ede98505dde0913d373e41dcca6005e543c2920e18849d8e0af641ac7fc215e61d96b578157619e125d1e9a4
7
- data.tar.gz: 6a957da45dfa487e5d3673c44c621972d41a33508d9fc1af83f9b540498f777dba1a658d13f155ba413d36c055ea8c1e15e23dea80b5d8d715eb3178706824af
6
+ metadata.gz: 26522368cd5bbd3c8ef3f16e64629f9a9d85b9cae1b042a184185642cf90b554e46bf499c27d0858165b5add821ef82c544d67e2a0a910708a23c6d1d88713df
7
+ data.tar.gz: 5b767ef21b4c28d0653cf8d8437a38bc3b0497bbfaf315db3d32b94f490f0b36e28330fff1bb3c0f5e67e5c2ab4d414615bc65b1426d0588e8d2b1da8ccf9b78
data/lib/ostruct.rb CHANGED
@@ -107,7 +107,7 @@
107
107
  # For all these reasons, consider not using OpenStruct at all.
108
108
  #
109
109
  class OpenStruct
110
- VERSION = "0.5.1"
110
+ VERSION = "0.5.4"
111
111
 
112
112
  #
113
113
  # Creates a new OpenStruct object. By default, the resulting OpenStruct
@@ -221,11 +221,14 @@ class OpenStruct
221
221
  #
222
222
  def new_ostruct_member!(name) # :nodoc:
223
223
  unless @table.key?(name) || is_method_protected!(name)
224
- getter_proc = Proc.new { @table[name] }
225
- setter_proc = Proc.new {|x| @table[name] = x}
226
224
  if defined?(::Ractor)
225
+ getter_proc = nil.instance_eval{ Proc.new { @table[name] } }
226
+ setter_proc = nil.instance_eval{ Proc.new {|x| @table[name] = x} }
227
227
  ::Ractor.make_shareable(getter_proc)
228
228
  ::Ractor.make_shareable(setter_proc)
229
+ else
230
+ getter_proc = Proc.new { @table[name] }
231
+ setter_proc = Proc.new {|x| @table[name] = x}
229
232
  end
230
233
  define_singleton_method!(name, &getter_proc)
231
234
  define_singleton_method!("#{name}=", &setter_proc)
@@ -243,7 +246,7 @@ class OpenStruct
243
246
  if owner.class == ::Class
244
247
  owner < ::OpenStruct
245
248
  else
246
- self.class.ancestors.any? do |mod|
249
+ self.class!.ancestors.any? do |mod|
247
250
  return false if mod == ::OpenStruct
248
251
  mod == owner
249
252
  end
@@ -353,14 +356,14 @@ class OpenStruct
353
356
  #
354
357
  # person.delete_field('number') { 8675_309 } # => 8675309
355
358
  #
356
- def delete_field(name)
359
+ def delete_field(name, &block)
357
360
  sym = name.to_sym
358
361
  begin
359
362
  singleton_class.remove_method(sym, "#{sym}=")
360
363
  rescue NameError
361
364
  end
362
365
  @table.delete(sym) do
363
- return yield if block_given!
366
+ return yield if block
364
367
  raise! NameError.new("no field `#{sym}' in #{self}", sym)
365
368
  end
366
369
  end
@@ -464,6 +467,11 @@ class OpenStruct
464
467
  end
465
468
  # Other builtin private methods we use:
466
469
  alias_method :raise!, :raise
467
- alias_method :block_given!, :block_given?
468
- private :raise!, :block_given!
470
+ private :raise!
471
+
472
+ # See https://github.com/ruby/ostruct/issues/40
473
+ if RUBY_ENGINE != 'jruby'
474
+ alias_method :block_given!, :block_given?
475
+ private :block_given!
476
+ end
469
477
  end
data/ostruct.gemspec CHANGED
@@ -20,8 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.required_ruby_version = ">= 2.5.0"
21
21
 
22
22
  spec.files = [".gitignore", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", "lib/ostruct.rb", "ostruct.gemspec"]
23
- spec.bindir = "exe"
24
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
23
  spec.require_paths = ["lib"]
26
24
 
27
25
  spec.add_development_dependency "bundler"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ostruct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-Andre Lafortune
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-07 00:00:00.000000000 Z
11
+ date: 2022-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.2.3
77
+ rubygems_version: 3.3.3
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: Class to build custom data structures, similar to a Hash.