ure 0.0.3 → 0.0.4

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/lib/ure/version.rb +1 -1
  4. data/lib/ure.rb +6 -11
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 620259e61624fa445a4b967fd99b159929c57d4e
4
- data.tar.gz: 8b29a4a3afc5f2e820271594194bf3eeb02ab48a
3
+ metadata.gz: 6e305b2b62fb6e0eaafd86a42f25ff8169148fcd
4
+ data.tar.gz: 47343ec4a7598eedc31b04be9d5d08df753c25c3
5
5
  SHA512:
6
- metadata.gz: bee981eb0139843dd3a7a697d02916ae6476079228c91261d36731bece8721b3725708a53544783d1c0556ec36279d7c485e06e110ff41c2118cfbf83210a89f
7
- data.tar.gz: 62b78837053a4db29687215702ca45d17bff8bc3a9c0f392a0d1fa588bf62f17dbc481e39bf804fd2fcffd2329357b0bb566a37a7cff56939b5b2163ccca7c7e
6
+ metadata.gz: 35e48315ac3bb2d73e4897c33458acf4c579d02c901a8bce0afc6e86a82fd774b9a7e20301cb0077a69a89fa115975f209e999b2c2c8161e685df6866b682013
7
+ data.tar.gz: 7ba18a3abe315b0aaabea54cc11d98eb69cd0b2f5002f0a7b30c37e9188c6ded11dc49d34904310cfbfca843078fa053446cae45a37953d6596afa2ba4496404
data/README.md CHANGED
@@ -14,7 +14,7 @@ scooby_van = Car.new
14
14
  Even worse, what if we include one argument and forget the other?
15
15
 
16
16
  ```ruby
17
- myster_machine = Car.new(:mural)
17
+ mystery_machine = Car.new(:mural)
18
18
  => #<struct Car paint=:mural, year=nil>
19
19
  ```
20
20
  Fixing it with Struct's built-in accessors after the fact isn't great, either. What we want is a Struct that has required arguments, and then throws a useful error if we give it the wrong thing.
@@ -37,7 +37,7 @@ But that's not all.
37
37
 
38
38
  ```ruby
39
39
  mystery_machine = Car.new
40
- NameError: uninitialized constant Ure::ArgumentError
40
+ ArgumentError: missing keyword: paint
41
41
  ```
42
42
 
43
43
  We get a useful error message, instead of a data object populated with `nil`'s.
@@ -78,7 +78,7 @@ Ure's current public methods are:
78
78
 
79
79
  `#[]` - Because Ure doesn't care about indexing, this allows users to treat instances of Ure as a hash.
80
80
 
81
- `#each(&block) - Converts the fields into a hash and calls each on them.
81
+ `#each(&block)` - Converts the fields into a hash and calls each on them.
82
82
 
83
83
  `#to_s` - Returns a string describing the object and its fields.
84
84
 
data/lib/ure/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Ure < BasicObject
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/ure.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "ure/version"
2
2
  class Ure < BasicObject
3
+ include ::Enumerable
3
4
  def self.members
4
5
  @members
5
6
  end
@@ -23,10 +24,10 @@ class Ure < BasicObject
23
24
  end
24
25
 
25
26
  def initialize(fields = {})
26
- fail "'fields' must be a 'Hash'" unless fields.is_a?(::Hash)
27
+ ::Kernel.fail ::ArgumentError, "'fields' must be a 'Hash'" unless fields.is_a?(::Hash)
27
28
 
28
29
  members.each do |member|
29
- fail ArgumentError, "missing keyword: #{member}" unless fields.include?(member)
30
+ ::Kernel.fail ::ArgumentError, "missing keyword: #{member}" unless fields.include?(member)
30
31
  instance_eval <<-END_RUBY
31
32
  def #{member}
32
33
  i = members.index(#{member.inspect})
@@ -35,9 +36,8 @@ class Ure < BasicObject
35
36
  END_RUBY
36
37
  end
37
38
 
38
- unless (extra = fields.keys - members).empty?
39
- fail ArgumentError,
40
- "unknown keyword#{'s' if extra.size > 1}: #{extra.join(', ')}"
39
+ unless (extra = fields.keys - members).empty?
40
+ ::Kernel.fail ::ArgumentError, "unknown keyword#{'s' if extra.size > 1}: #{extra.join(', ')}"
41
41
  end
42
42
 
43
43
  @values = fields
@@ -75,11 +75,6 @@ class Ure < BasicObject
75
75
  end
76
76
 
77
77
  def values_at(name, *args)
78
- list = []
79
- list << fields[name]
80
- args.each do |arg|
81
- list << fields[arg]
82
- end
83
- list
78
+ [fields[name]] + args.map { |arg| fields[arg] }
84
79
  end
85
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clayton Flesher
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-11-09 00:00:00.000000000 Z
12
+ date: 2015-11-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler