ure 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ure.rb +15 -8
  3. data/lib/ure/version.rb +1 -1
  4. data/ure.gemspec +2 -0
  5. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96e9d1b4b013ec862b3445c67061dc0cb3fa2c23
4
- data.tar.gz: 3b15783e3f05950b654260d2d54b84822f19f227
3
+ metadata.gz: 07b4b26f3281fc716ce5068916f52bb219e9b1bb
4
+ data.tar.gz: 96ac0815b786b4fbf623d57952668397835b4545
5
5
  SHA512:
6
- metadata.gz: 26af1bbca303e5eae011aa8df8918277d7116ea4e8dca2691deb015a3fd2b032e451635cdd97892a1aea9bb4c3186fde512874661e9ffae1146fffea7422ca7e
7
- data.tar.gz: 5ae7b9033f77fdf42852c304d8ab75a317fa223ecd0c68ddc4199ffab12abdee9563a7412a466d218ddb993924e7aa7b864a3d878189481b803d4bc0fe2e7b73
6
+ metadata.gz: 32b40cb6ef7961271d12140c9d560ab3ec10c44c0d201f322f0dd607e4cb2a2b7be4d4b8d421e3a04b914f97d4aa0b940569fa9926d8d199d387f193e4984f94
7
+ data.tar.gz: 2f3b0346f8a25aa39bccff9b5607c0dae6ae78f0ed497138512aa9ed311c91c09d840b73f0c036999ef928394d63a3335477a4641a9f3003e01daa5d92d807ec
data/lib/ure.rb CHANGED
@@ -3,7 +3,7 @@ require "json"
3
3
  class Ure < BasicObject
4
4
  include ::Enumerable
5
5
  def self.members
6
- @members
6
+ @members.freeze
7
7
  end
8
8
 
9
9
  def self.new(*members, &body)
@@ -20,6 +20,16 @@ class Ure < BasicObject
20
20
  @members ||= members
21
21
  end
22
22
 
23
+ members.each do |member|
24
+ define_method member.to_sym do
25
+ fields[member.to_sym]
26
+ end
27
+
28
+ define_method :"#{member}=" do |_|
29
+ ::Kernel.fail "can't modify frozen #{self}"
30
+ end
31
+ end
32
+
23
33
  parent_class = self
24
34
 
25
35
  define_method(:class) do
@@ -33,23 +43,20 @@ class Ure < BasicObject
33
43
  def initialize(fields = {})
34
44
  ::Kernel.fail ::ArgumentError, "'fields' must be a 'Hash'" unless fields.is_a?(::Hash)
35
45
 
46
+ members.freeze
47
+
36
48
  members.each do |member|
37
49
  ::Kernel.fail ::ArgumentError, "missing keyword: #{member}" unless fields.include?(member)
38
- instance_eval <<-END_RUBY
39
- def #{member}
40
- fields[#{member.inspect}]
41
- end
42
- END_RUBY
43
50
  end
44
51
 
45
52
  unless (extra = fields.keys - members).empty?
46
53
  ::Kernel.fail ::ArgumentError, "unknown keyword#{'s' if extra.size > 1}: #{extra.join(', ')}"
47
54
  end
48
55
 
49
- @fields = fields
56
+ @fields = fields.freeze
50
57
  end
51
58
 
52
- attr_reader :fields, :class
59
+ attr_reader :fields
53
60
 
54
61
  def ==(arg)
55
62
  if self.class == arg.class
@@ -1,3 +1,3 @@
1
1
  class Ure < BasicObject
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -14,6 +14,8 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://github.com/Calvyn82/ure"
15
15
  spec.license = "MIT"
16
16
 
17
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.0")
18
+
17
19
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
20
  # delete this section to allow pushing this gem to any host.
19
21
  if spec.respond_to?(:metadata)
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.1.2
4
+ version: 0.1.3
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-16 00:00:00.000000000 Z
12
+ date: 2015-11-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -86,7 +86,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '2.0'
90
90
  required_rubygems_version: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - ">="