memory_record 0.0.17 → 0.0.18
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/.ruby-version +1 -0
- data/README.md +20 -0
- data/examples/0100_basic.rb +10 -0
- data/examples/0370_valid_key.rb +15 -0
- data/lib/memory_record/memory_record.rb +23 -4
- data/lib/memory_record/version.rb +1 -1
- data/spec/memory_record_spec.rb +15 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 398cef71aad0b7039708dc1384634c230d52686183cfdc97f4b89fc9eac151c1
|
4
|
+
data.tar.gz: 246e934baa307893bf03ca5bf9784f1dc33fb8171f489956c736820ab4665cd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ccc73b6b361000a2225f2f5afe0c1e311379ac176da62678fc1b08e6897dfb6c981d3baa830b52deee9b47917a4b41d2ea471d8ab8c2c2ba3522cd20697a112
|
7
|
+
data.tar.gz: 97f19afba6b7455bf82779794338d97a457028802ca093cd1b0aa766a1a62c8e1596ae9aa536834946bd0c47c7c63d5ffe04da9bd99cb866017d983eb0f05881
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.6.5
|
data/README.md
CHANGED
@@ -165,6 +165,26 @@ Palette.fetch_if(:tomato) # => #<Palette:... @attributes={...}>
|
|
165
165
|
Palette.fetch_if(:xxx) # => <KeyError: ...>
|
166
166
|
```
|
167
167
|
|
168
|
+
### Key validation
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
Palette.valid_key(:tomato) # => :tomato
|
172
|
+
Palette.valid_key("tomato") # => :tomato
|
173
|
+
Palette.valid_key(1) # => :tomato
|
174
|
+
Palette.valid_key(:xxx) # => nil
|
175
|
+
Palette.valid_key(:xxx, :tomato) # => :tomato
|
176
|
+
Palette.valid_key(:xxx) { :tomato } # => :tomato
|
177
|
+
|
178
|
+
Palette.valid_key(:xxx, :tomato) # => :tomato
|
179
|
+
Palette.valid_key(:xxx, :black) rescue $! # => #<KeyError: Palette.fetch(:black) does not match anything
|
180
|
+
```
|
181
|
+
|
182
|
+
#### A common example in Rails
|
183
|
+
|
184
|
+
```ruby
|
185
|
+
palette_key = Palette.valid_key(params[:palette_key], :tomato)
|
186
|
+
```
|
187
|
+
|
168
188
|
### How to refer to other keys
|
169
189
|
|
170
190
|
```ruby
|
data/examples/0100_basic.rb
CHANGED
@@ -27,3 +27,13 @@ Palette[:tomato].name # => "Tomato"
|
|
27
27
|
Palette[:tomato].rgb # => [255, 99, 71]
|
28
28
|
Palette[:tomato].hex # => "#FF6347"
|
29
29
|
Palette.collect(&:hex) # => ["#FF7F00", "#FF6347", "#FFD700"]
|
30
|
+
|
31
|
+
Palette.valid_key(:tomato) # => :tomato
|
32
|
+
Palette.valid_key("tomato") # => :tomato
|
33
|
+
Palette.valid_key(1) # => :tomato
|
34
|
+
Palette.valid_key(:xxx) # => nil
|
35
|
+
Palette.valid_key(:xxx, :tomato) # => :tomato
|
36
|
+
Palette.valid_key(:xxx) { :tomato } # => :tomato
|
37
|
+
|
38
|
+
Palette.valid_key(:xxx, :tomato) # => :tomato
|
39
|
+
Palette.valid_key(:xxx, :black) rescue $! # => #<KeyError: Palette.fetch(:black) does not match anything
|
@@ -0,0 +1,15 @@
|
|
1
|
+
$LOAD_PATH.unshift '../lib'
|
2
|
+
require 'memory_record'
|
3
|
+
|
4
|
+
class Color
|
5
|
+
include MemoryRecord
|
6
|
+
memory_record [
|
7
|
+
{ key: :blue },
|
8
|
+
]
|
9
|
+
end
|
10
|
+
|
11
|
+
Color.valid_key(:blue) # => :blue
|
12
|
+
Color.valid_key(:unknown) # => nil
|
13
|
+
Color.valid_key(:unknown, :blue) # => :blue
|
14
|
+
Color.valid_key(:unknown) { :blue } # => :blue
|
15
|
+
Color.valid_key(:unknown) { :xxx } rescue $! # => #<KeyError: Color.fetch(:xxx) does not match anything
|
@@ -15,16 +15,16 @@ module MemoryRecord
|
|
15
15
|
# Example
|
16
16
|
#
|
17
17
|
# memory_record [
|
18
|
-
# {id: 1, name: "alice"},
|
19
|
-
# {id: 2, name: "bob"
|
18
|
+
# { id: 1, name: "alice" },
|
19
|
+
# { id: 2, name: "bob" },
|
20
20
|
# ], attr_reader: false
|
21
21
|
#
|
22
22
|
# or
|
23
23
|
#
|
24
24
|
# memory_record(attr_reader: false) do
|
25
25
|
# [
|
26
|
-
# {id: 1, name: "alice"},
|
27
|
-
# {id: 2, name: "bob"
|
26
|
+
# { id: 1, name: "alice" },
|
27
|
+
# { id: 2, name: "bob" },
|
28
28
|
# ]
|
29
29
|
# end
|
30
30
|
#
|
@@ -152,6 +152,25 @@ module MemoryRecord
|
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
155
|
+
# Color.valid_key(:blue) # => :blue
|
156
|
+
# Color.valid_key(:unknown) # => nil
|
157
|
+
# Color.valid_key(:unknown, :blue) # => :blue
|
158
|
+
# Color.valid_key(:unknown) { :blue } # => :blue
|
159
|
+
# Color.valid_key(:unknown) { :xxx } # => KeyError Exception
|
160
|
+
def valid_key(key, default = nil, &block)
|
161
|
+
if block_given? && default
|
162
|
+
raise ArgumentError, "Can't use default and block together"
|
163
|
+
end
|
164
|
+
|
165
|
+
if e = lookup(key)
|
166
|
+
e.key
|
167
|
+
elsif block_given?
|
168
|
+
fetch(yield).key
|
169
|
+
elsif default
|
170
|
+
fetch(default).key
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
155
174
|
delegate :each, to: :values
|
156
175
|
|
157
176
|
def keys
|
data/spec/memory_record_spec.rb
CHANGED
@@ -317,4 +317,19 @@ RSpec.describe MemoryRecord do
|
|
317
317
|
# assert { ActiveModelSerializers::SerializableResource.new(ColorInfo.first).as_json == {:key => :blue} }
|
318
318
|
# end
|
319
319
|
# end
|
320
|
+
|
321
|
+
describe "valid_key" do
|
322
|
+
it do
|
323
|
+
model = class_new [
|
324
|
+
{ key: :blue },
|
325
|
+
]
|
326
|
+
assert { model.valid_key(:blue) == :blue }
|
327
|
+
assert { model.valid_key(:unknown) == nil }
|
328
|
+
assert { model.valid_key(:unknown, :blue) == :blue }
|
329
|
+
assert { model.valid_key(:unknown) { :blue } == :blue }
|
330
|
+
assert { model.valid_key(:unknown) { :blue } == :blue }
|
331
|
+
assert_raises(KeyError) { model.valid_key(:unknown) { :xxx } }
|
332
|
+
assert_raises(KeyError) { model.valid_key(:unknown, :xxx) }
|
333
|
+
end
|
334
|
+
end
|
320
335
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: memory_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akicho8
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -103,6 +103,7 @@ extra_rdoc_files: []
|
|
103
103
|
files:
|
104
104
|
- ".gitignore"
|
105
105
|
- ".rspec"
|
106
|
+
- ".ruby-version"
|
106
107
|
- ".travis.yml"
|
107
108
|
- Gemfile
|
108
109
|
- LICENSE.txt
|
@@ -135,6 +136,7 @@ files:
|
|
135
136
|
- examples/0340_comparable.rb
|
136
137
|
- examples/0350_power_assert.rb
|
137
138
|
- examples/0360_sub_class.rb
|
139
|
+
- examples/0370_valid_key.rb
|
138
140
|
- lib/memory_record.rb
|
139
141
|
- lib/memory_record/memory_record.rb
|
140
142
|
- lib/memory_record/memory_record/serialization.rb
|