nuggets 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f7723ca18083a47b25d3966ee9dfed33adc7380
4
- data.tar.gz: 7d73e368f7e5818b7c83ec4ffb35d3e3fea5a0c0
3
+ metadata.gz: 89f2d47d5e501cd0800f31bd572cdd1c20c6e98c
4
+ data.tar.gz: c69f1ac6fc489329f61e96fb419c63f5180bf5c4
5
5
  SHA512:
6
- metadata.gz: 46812ac2321ae75968d8937b45b325b71e541939b77af029caa3bd3749874a34c4981a8acfa07140325a1262d3f3cffd3898bd14c18a3dda7e8072818ea1c1b9
7
- data.tar.gz: ccd5781ae98ea86765115ba317be282405a96f132d1666a7bb6070276c5de64ea52206e3fcc53320389e71df632b486c7e7b99aa2fb3f1aba7eb5bb96be50cca
6
+ metadata.gz: 24d1c8c645c8d9ef912e30a82dea599744d986ea5254947cfea0598457f9943328f239cb59264fb43dfab9148f2627a40ca7648cdd9b7a756c1aa66acac32233
7
+ data.tar.gz: c503ac3652caedcf02c85353a4098ddfaa26a933af2fd5ac73ac3e53be5c71022cbf2498bd48b3654247db36c05b710b5dfae762343347dffbfc6248fd5be9be
data/ChangeLog CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  = Revision history for nuggets
4
4
 
5
+ == 1.3.0 [2015-07-07]
6
+
7
+ * Added <tt>Hash.{identity,array}</tt>.
8
+
5
9
  == 1.2.1 [2015-04-14]
6
10
 
7
11
  * Ruby Core compatibility for Enumerable#minmax etc. Issue #4 by @codez.
@@ -10,7 +14,7 @@
10
14
 
11
15
  * Extracted Nuggets::RubyMixin from Nuggets::Ruby.
12
16
  * Added Net::SSH::Connection::Session#exec_sudo.
13
- * Added Hash.deproc.
17
+ * Added Hash#deproc.
14
18
 
15
19
  == 1.1.0 [2014-11-26]
16
20
 
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to nuggets version 1.2.1.
5
+ This documentation refers to nuggets version 1.3.0.
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -3,7 +3,7 @@
3
3
  # #
4
4
  # nuggets -- Extending Ruby #
5
5
  # #
6
- # Copyright (C) 2007-2011 Jens Wille #
6
+ # Copyright (C) 2007-2015 Jens Wille #
7
7
  # #
8
8
  # Authors: #
9
9
  # Jens Wille <jens.wille@gmail.com> #
@@ -44,7 +44,7 @@ module Nuggets
44
44
  #
45
45
  # Example:
46
46
  #
47
- # hash = Hash.nest(3)
47
+ # hash = Hash.nest(2)
48
48
  # hash[:foo][:bar][:a] = { :x => 1, :y => 2 }
49
49
  # hash[:foo][:bar][:b] = { :x => 0, :y => 3 }
50
50
  # hash
@@ -73,6 +73,40 @@ module Nuggets
73
73
  end
74
74
  end
75
75
 
76
+ # call-seq:
77
+ # Hash.identity([depth]) => aHash
78
+ #
79
+ # Creates a nested hash, +depth+ levels deep, that yields the keys
80
+ # themselves at the last level.
81
+ #
82
+ # Example:
83
+ #
84
+ # hash = Hash.identity(2)
85
+ # hash[:foo][:bar][:a] #=> :a
86
+ # hash[:foo][:bar][:b] #=> :b
87
+ # hash
88
+ # #=> {:foo=>{:bar=>{:a=>:a, :b=>:b}}}
89
+ def identity(depth = 0)
90
+ nest(depth) { |key| key }
91
+ end
92
+
93
+ # call-seq:
94
+ # Hash.array([depth]) => aHash
95
+ #
96
+ # Creates a nested hash, +depth+ levels deep, that yields arrays
97
+ # at the last level.
98
+ #
99
+ # Example:
100
+ #
101
+ # hash = Hash.array(2)
102
+ # hash[:foo][:bar][:a] << 1 << 2
103
+ # hash[:foo][:bar][:b] << 3 << 4
104
+ # hash
105
+ # #=> {:foo=>{:bar=>{:a=>[1, 2], :b=>[3, 4]}}}
106
+ def array(depth = 0)
107
+ nest(depth) { [] }
108
+ end
109
+
76
110
  end
77
111
  end
78
112
  end
@@ -3,8 +3,8 @@ module Nuggets
3
3
  module Version
4
4
 
5
5
  MAJOR = 1
6
- MINOR = 2
7
- TINY = 1
6
+ MINOR = 3
7
+ TINY = 0
8
8
 
9
9
  class << self
10
10
 
@@ -99,4 +99,47 @@ describe_extended Hash, Nuggets::Hash::NestMixin, true do
99
99
  hash[:a][:b][:c].should have_key(:e)
100
100
  end
101
101
 
102
+ example do
103
+ hash = Hash.identity
104
+ hash.should be_an_instance_of(Hash)
105
+
106
+ hash[:a].should == :a
107
+ hash[:b].should == :b
108
+
109
+ hash.should == { a: :a, b: :b }
110
+ end
111
+
112
+ example do
113
+ hash = Hash.identity(2)
114
+ hash.should be_an_instance_of(Hash)
115
+
116
+ hash[:foo][:bar][:a].should == :a
117
+ hash[:foo][:bar][:b].should == :b
118
+
119
+ hash.should == { foo: { bar: { a: :a, b: :b } } }
120
+ end
121
+
122
+ example do
123
+ hash = Hash.array
124
+ hash.should be_an_instance_of(Hash)
125
+
126
+ hash[:a].should be_an_instance_of(Array)
127
+ hash[:a].push(1).push(2).should == [1, 2]
128
+
129
+ hash[:b].should be_an_instance_of(Array)
130
+ hash[:b].push(3).push(4).should == [3, 4]
131
+
132
+ hash.should == { a: [1, 2], b: [3, 4] }
133
+ end
134
+
135
+ example do
136
+ hash = Hash.array(2)
137
+ hash.should be_an_instance_of(Hash)
138
+
139
+ hash[:foo][:bar][:a].push(1).push(2).should == [1, 2]
140
+ hash[:foo][:bar][:b].push(3).push(4).should == [3, 4]
141
+
142
+ hash.should == { foo: { bar: { a: [1, 2], b: [3, 4] } } }
143
+ end
144
+
102
145
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nuggets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-14 00:00:00.000000000 Z
11
+ date: 2015-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -349,13 +349,13 @@ licenses:
349
349
  metadata: {}
350
350
  post_install_message: |2+
351
351
 
352
- nuggets-1.2.1 [2015-04-14]:
352
+ nuggets-1.3.0 [2015-07-07]:
353
353
 
354
- * Ruby Core compatibility for Enumerable#minmax etc. Issue #4 by @codez.
354
+ * Added <tt>Hash.{identity,array}</tt>.
355
355
 
356
356
  rdoc_options:
357
357
  - "--title"
358
- - nuggets Application documentation (v1.2.1)
358
+ - nuggets Application documentation (v1.3.0)
359
359
  - "--charset"
360
360
  - UTF-8
361
361
  - "--line-numbers"
@@ -376,7 +376,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
376
376
  version: '0'
377
377
  requirements: []
378
378
  rubyforge_project:
379
- rubygems_version: 2.4.6
379
+ rubygems_version: 2.4.8
380
380
  signing_key:
381
381
  specification_version: 4
382
382
  summary: Extending Ruby.