ostruct 0.3.3 → 0.4.0

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/Rakefile +10 -3
  3. data/lib/ostruct.rb +13 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed2da7f517c77c1e08ec0927885068879a2d304aebb6c804d5a28937d96ee272
4
- data.tar.gz: a4f0bfd0ffd31eec0fb1bd54e0037738758dee9026e6f847713cc35019fdfcb2
3
+ metadata.gz: 275ddcb1c14c6e9ce329eab097a2c56eb09b6a1b3a2c108bbccdf8a2d02013a1
4
+ data.tar.gz: 3dec8898394fb32823c69f28645cedd248da69f7371156553a24820c87b62e90
5
5
  SHA512:
6
- metadata.gz: 0bd53f08d2b20e753ad004948b2a22ff47956d3fb33424d826e77f672686027bcca16de8e81336dcc0d44233eb6bdb1885e2b5e5467d2d279333f9b98b241e2b
7
- data.tar.gz: 1ff610eb44962ec773f04cb1c3ba158b257d1c08a0bd18af5e17d0da2c5036d7c1e1aea56104a25a089c2d820a043069a925f084cc61058211249f94ee28837e
6
+ metadata.gz: a9afae5a172d6bb18e5cf6f55bcd48c822ea07a22f3edb2197629e2434b6af83609eb4c01f9f12bb6343be2f74585dd1945a75a063200babccfc80293cd85c25
7
+ data.tar.gz: eaa9370db72e1832db832a0b7f52763a226879e70e6f9ede84084fd9bf103389db454ce1944b915ae509746012d326d01df6ff24305ef25a0f305e42ccb417e1
data/Rakefile CHANGED
@@ -10,9 +10,16 @@ require "bundler/gem_tasks"
10
10
  require "rake/testtask"
11
11
 
12
12
  Rake::TestTask.new(:test) do |t|
13
- t.libs << "test" << "test/lib"
14
- t.libs << "lib"
15
- t.test_files = FileList['test/**/test_*.rb']
13
+ t.libs << "test/lib"
14
+ t.ruby_opts << "-rhelper"
15
+ t.test_files = FileList["test/**/test_*.rb"]
16
+ end
17
+
18
+ task :sync_tool do
19
+ require 'fileutils'
20
+ FileUtils.cp "../ruby/tool/lib/test/unit/core_assertions.rb", "./test/lib"
21
+ FileUtils.cp "../ruby/tool/lib/envutil.rb", "./test/lib"
22
+ FileUtils.cp "../ruby/tool/lib/find_executable.rb", "./test/lib"
16
23
  end
17
24
 
18
25
  task :default => [:test]
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.3.3"
110
+ VERSION = "0.4.0"
111
111
 
112
112
  #
113
113
  # Creates a new OpenStruct object. By default, the resulting OpenStruct
@@ -197,7 +197,7 @@ class OpenStruct
197
197
  # data.each_pair.to_a # => [[:country, "Australia"], [:capital, "Canberra"]]
198
198
  #
199
199
  def each_pair
200
- return to_enum(__method__) { @table.size } unless block_given?
200
+ return to_enum(__method__) { @table.size } unless block_given!
201
201
  @table.each_pair{|p| yield p}
202
202
  self
203
203
  end
@@ -326,8 +326,10 @@ class OpenStruct
326
326
  end
327
327
 
328
328
  #
329
- # Removes the named field from the object. Returns the value that the field
330
- # contained if it was defined.
329
+ # Removes the named field from the object and returns the value the field
330
+ # contained if it was defined. You may optionally provide a block.
331
+ # If the field is not defined, the result of the block is returned,
332
+ # or a NameError is raised if no block was given.
331
333
  #
332
334
  # require "ostruct"
333
335
  #
@@ -341,6 +343,10 @@ class OpenStruct
341
343
  # person.pension = nil
342
344
  # person # => #<OpenStruct name="John", pension=nil>
343
345
  #
346
+ # person.delete_field('number') # => NameError
347
+ #
348
+ # person.delete_field('number') { 8675_309 } # => 8675309
349
+ #
344
350
  def delete_field(name)
345
351
  sym = name.to_sym
346
352
  begin
@@ -348,6 +354,7 @@ class OpenStruct
348
354
  rescue NameError
349
355
  end
350
356
  @table.delete(sym) do
357
+ return yield if block_given!
351
358
  raise! NameError.new("no field `#{sym}' in #{self}", sym)
352
359
  end
353
360
  end
@@ -446,5 +453,6 @@ class OpenStruct
446
453
  end
447
454
  # Other builtin private methods we use:
448
455
  alias_method :raise!, :raise
449
- private :raise!
456
+ alias_method :block_given!, :block_given?
457
+ private :raise!, :block_given!
450
458
  end
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.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc-Andre Lafortune
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler