rubysl-ostruct 2.0.4 → 2.1.0
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/.travis.yml +10 -2
- data/MRI_LICENSE +56 -0
- data/lib/rubysl/ostruct/ostruct.rb +77 -50
- data/lib/rubysl/ostruct/version.rb +1 -1
- data/rubysl-ostruct.gemspec +1 -0
- data/spec/each_pair_spec.rb +19 -0
- data/spec/element_reference_spec.rb +5 -10
- data/spec/element_set_spec.rb +19 -13
- data/spec/eql_spec.rb +22 -0
- data/spec/hash_spec.rb +19 -0
- metadata +39 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c12ce42389ead852a5244a59e2fe7d438d304cf8
|
4
|
+
data.tar.gz: 4b56e31554e57999035e36558074638397ac0468
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f05918ea27221e21c2a35c65a0583b0bcbc969270b1345cf5685a45efd122c55a5ecf2f4a4dd1deda9a0de90f9df25a67600a0f2b512ca44f93c568b4b8ea83e
|
7
|
+
data.tar.gz: 04ab76f6dadd4019e8b9ca33b5fc7e049368fa67ca8cc3cf63b26c61876f165956f0f4dfb03de562ecd33aba9b81612944011e74c3038cdda0ff8bba6815bd56
|
data/.travis.yml
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
language: ruby
|
2
2
|
env:
|
3
3
|
- RUBYLIB=lib
|
4
|
-
|
4
|
+
- RUBYLIB=
|
5
|
+
script: mspec spec
|
5
6
|
rvm:
|
6
|
-
-
|
7
|
+
- 2.0.0
|
8
|
+
- rbx-2.2.1
|
9
|
+
matrix:
|
10
|
+
exclude:
|
11
|
+
- rvm: 2.0.0
|
12
|
+
env: RUBYLIB=lib
|
13
|
+
- rvm: rbx-2.2.1
|
14
|
+
env: RUBYLIB=
|
data/MRI_LICENSE
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
2
|
+
You can redistribute it and/or modify it under either the terms of the
|
3
|
+
2-clause BSDL (see the file BSDL), or the conditions below:
|
4
|
+
|
5
|
+
1. You may make and give away verbatim copies of the source form of the
|
6
|
+
software without restriction, provided that you duplicate all of the
|
7
|
+
original copyright notices and associated disclaimers.
|
8
|
+
|
9
|
+
2. You may modify your copy of the software in any way, provided that
|
10
|
+
you do at least ONE of the following:
|
11
|
+
|
12
|
+
a) place your modifications in the Public Domain or otherwise
|
13
|
+
make them Freely Available, such as by posting said
|
14
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
15
|
+
the author to include your modifications in the software.
|
16
|
+
|
17
|
+
b) use the modified software only within your corporation or
|
18
|
+
organization.
|
19
|
+
|
20
|
+
c) give non-standard binaries non-standard names, with
|
21
|
+
instructions on where to get the original software distribution.
|
22
|
+
|
23
|
+
d) make other distribution arrangements with the author.
|
24
|
+
|
25
|
+
3. You may distribute the software in object code or binary form,
|
26
|
+
provided that you do at least ONE of the following:
|
27
|
+
|
28
|
+
a) distribute the binaries and library files of the software,
|
29
|
+
together with instructions (in the manual page or equivalent)
|
30
|
+
on where to get the original distribution.
|
31
|
+
|
32
|
+
b) accompany the distribution with the machine-readable source of
|
33
|
+
the software.
|
34
|
+
|
35
|
+
c) give non-standard binaries non-standard names, with
|
36
|
+
instructions on where to get the original software distribution.
|
37
|
+
|
38
|
+
d) make other distribution arrangements with the author.
|
39
|
+
|
40
|
+
4. You may modify and include the part of the software into any other
|
41
|
+
software (possibly commercial). But some files in the distribution
|
42
|
+
are not written by the author, so that they are not under these terms.
|
43
|
+
|
44
|
+
For the list of those files and their copying conditions, see the
|
45
|
+
file LEGAL.
|
46
|
+
|
47
|
+
5. The scripts and library files supplied as input to or produced as
|
48
|
+
output from the software do not automatically fall under the
|
49
|
+
copyright of the software, but belong to whomever generated them,
|
50
|
+
and may be sold commercially, and may be aggregated with this
|
51
|
+
software.
|
52
|
+
|
53
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
54
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
55
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
56
|
+
PURPOSE.
|
@@ -30,12 +30,6 @@
|
|
30
30
|
# An OpenStruct employs a Hash internally to store the methods and values and
|
31
31
|
# can even be initialized with one:
|
32
32
|
#
|
33
|
-
# country_data = { :country => "Australia", :population => 20_000_000 }
|
34
|
-
# australia = OpenStruct.new(country_data)
|
35
|
-
# p australia # -> <OpenStruct country="Australia" population=20000000>
|
36
|
-
#
|
37
|
-
# You may also define the hash in the initialization call:
|
38
|
-
#
|
39
33
|
# australia = OpenStruct.new(:country => "Australia", :population => 20_000_000)
|
40
34
|
# p australia # -> <OpenStruct country="Australia" population=20000000>
|
41
35
|
#
|
@@ -67,8 +61,8 @@
|
|
67
61
|
#
|
68
62
|
# == Implementation:
|
69
63
|
#
|
70
|
-
# An OpenStruct utilizes Ruby's method lookup structure to
|
71
|
-
#
|
64
|
+
# An OpenStruct utilizes Ruby's method lookup structure to find and define the
|
65
|
+
# necessary methods for properties. This is accomplished through the method
|
72
66
|
# method_missing and define_method.
|
73
67
|
#
|
74
68
|
# This should be a consideration if there is a concern about the performance of
|
@@ -80,7 +74,8 @@ class OpenStruct
|
|
80
74
|
# Creates a new OpenStruct object. By default, the resulting OpenStruct
|
81
75
|
# object will have no attributes.
|
82
76
|
#
|
83
|
-
# The optional +hash+, if given, will generate attributes and values
|
77
|
+
# The optional +hash+, if given, will generate attributes and values
|
78
|
+
# (can be a Hash, an OpenStruct or a Struct).
|
84
79
|
# For example:
|
85
80
|
#
|
86
81
|
# require 'ostruct'
|
@@ -89,16 +84,10 @@ class OpenStruct
|
|
89
84
|
#
|
90
85
|
# p data # -> <OpenStruct country="Australia" population=20000000>
|
91
86
|
#
|
92
|
-
# You may also define the hash in the initialization call:
|
93
|
-
#
|
94
|
-
# australia = OpenStruct.new(:country => "Australia",
|
95
|
-
# :population => 20_000_000)
|
96
|
-
# p australia # -> <OpenStruct country="Australia" population=20000000>
|
97
|
-
#
|
98
87
|
def initialize(hash=nil)
|
99
88
|
@table = {}
|
100
89
|
if hash
|
101
|
-
|
90
|
+
hash.each_pair do |k, v|
|
102
91
|
@table[k.to_sym] = v
|
103
92
|
new_ostruct_member(k)
|
104
93
|
end
|
@@ -115,37 +104,39 @@ class OpenStruct
|
|
115
104
|
#
|
116
105
|
# Converts the OpenStruct to a hash with keys representing
|
117
106
|
# each attribute (as symbols) and their corresponding values
|
107
|
+
# Example:
|
108
|
+
#
|
109
|
+
# require 'ostruct'
|
110
|
+
# data = OpenStruct.new("country" => "Australia", :population => 20_000_000)
|
111
|
+
# data.to_h # => {:country => "Australia", :population => 20000000 }
|
112
|
+
#
|
118
113
|
def to_h
|
119
114
|
@table.dup
|
120
115
|
end
|
121
116
|
|
122
117
|
#
|
123
|
-
#
|
124
|
-
#
|
125
|
-
#
|
118
|
+
# Yields all attributes (as a symbol) along with the corresponding values
|
119
|
+
# or returns an enumerator if not block is given.
|
120
|
+
# Example:
|
126
121
|
#
|
127
|
-
#
|
122
|
+
# require 'ostruct'
|
123
|
+
# data = OpenStruct.new("country" => "Australia", :population => 20_000_000)
|
124
|
+
# data.each_pair.to_a # => [[:country, "Australia"], [:population, 20000000]]
|
128
125
|
#
|
129
|
-
|
130
|
-
|
131
|
-
|
126
|
+
def each_pair
|
127
|
+
return to_enum __method__ unless block_given?
|
128
|
+
@table.each_pair { |p| yield p }
|
129
|
+
end
|
130
|
+
|
132
131
|
#
|
133
|
-
#
|
132
|
+
# Provides marshalling support for use by the Marshal library.
|
134
133
|
#
|
135
134
|
def marshal_dump
|
136
135
|
@table
|
137
136
|
end
|
138
137
|
|
139
138
|
#
|
140
|
-
# Provides marshalling support for use by the Marshal library.
|
141
|
-
# a Hash of keys and values which will be used to populate the internal table
|
142
|
-
#
|
143
|
-
# require 'ostruct'
|
144
|
-
#
|
145
|
-
# event = OpenStruct.new
|
146
|
-
# hash = { 'time' => Time.now, 'title' => 'Birthday Party' }
|
147
|
-
# event.marshal_load(hash)
|
148
|
-
# event.title # => 'Birthday Party'
|
139
|
+
# Provides marshalling support for use by the Marshal library.
|
149
140
|
#
|
150
141
|
def marshal_load(x)
|
151
142
|
@table = x
|
@@ -153,8 +144,8 @@ class OpenStruct
|
|
153
144
|
end
|
154
145
|
|
155
146
|
#
|
156
|
-
#
|
157
|
-
# modified before granting access to the internal Hash table to be
|
147
|
+
# Used internally to check if the OpenStruct is able to be
|
148
|
+
# modified before granting access to the internal Hash table to be modified.
|
158
149
|
#
|
159
150
|
def modifiable
|
160
151
|
begin
|
@@ -167,39 +158,58 @@ class OpenStruct
|
|
167
158
|
protected :modifiable
|
168
159
|
|
169
160
|
#
|
170
|
-
#
|
161
|
+
# Used internally to defined properties on the
|
171
162
|
# OpenStruct. It does this by using the metaprogramming function
|
172
|
-
#
|
163
|
+
# define_singleton_method for both the getter method and the setter method.
|
173
164
|
#
|
174
165
|
def new_ostruct_member(name)
|
175
166
|
name = name.to_sym
|
176
|
-
unless
|
177
|
-
|
178
|
-
|
179
|
-
define_method("#{name}=") { |x| modifiable[name] = x }
|
180
|
-
end
|
167
|
+
unless respond_to?(name)
|
168
|
+
define_singleton_method(name) { @table[name] }
|
169
|
+
define_singleton_method("#{name}=") { |x| modifiable[name] = x }
|
181
170
|
end
|
182
171
|
name
|
183
172
|
end
|
173
|
+
protected :new_ostruct_member
|
184
174
|
|
185
175
|
def method_missing(mid, *args) # :nodoc:
|
186
176
|
mname = mid.id2name
|
187
177
|
len = args.length
|
188
|
-
if mname.chomp!('=')
|
178
|
+
if mname.chomp!('=')
|
189
179
|
if len != 1
|
190
180
|
raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1)
|
191
181
|
end
|
192
182
|
modifiable[new_ostruct_member(mname)] = args[0]
|
193
|
-
elsif len == 0
|
183
|
+
elsif len == 0
|
194
184
|
@table[mid]
|
195
185
|
else
|
196
186
|
raise NoMethodError, "undefined method `#{mid}' for #{self}", caller(1)
|
197
187
|
end
|
198
188
|
end
|
199
189
|
|
190
|
+
# Returns the value of a member.
|
200
191
|
#
|
201
|
-
#
|
202
|
-
#
|
192
|
+
# person = OpenStruct.new('name' => 'John Smith', 'age' => 70)
|
193
|
+
# person[:age] # => 70, same as ostruct.age
|
194
|
+
#
|
195
|
+
def [](name)
|
196
|
+
@table[name.to_sym]
|
197
|
+
end
|
198
|
+
|
199
|
+
#
|
200
|
+
# Sets the value of a member.
|
201
|
+
#
|
202
|
+
# person = OpenStruct.new('name' => 'John Smith', 'age' => 70)
|
203
|
+
# person[:age] = 42 # => equivalent to ostruct.age = 42
|
204
|
+
# person.age # => 42
|
205
|
+
#
|
206
|
+
def []=(name, value)
|
207
|
+
modifiable[new_ostruct_member(name)] = value
|
208
|
+
end
|
209
|
+
|
210
|
+
#
|
211
|
+
# Remove the named field from the object. Returns the value that the field
|
212
|
+
# contained if it was defined.
|
203
213
|
#
|
204
214
|
# require 'ostruct'
|
205
215
|
#
|
@@ -209,8 +219,8 @@ class OpenStruct
|
|
209
219
|
#
|
210
220
|
def delete_field(name)
|
211
221
|
sym = name.to_sym
|
212
|
-
@table.delete sym
|
213
222
|
singleton_class.__send__(:remove_method, sym, "#{name}=")
|
223
|
+
@table.delete sym
|
214
224
|
end
|
215
225
|
|
216
226
|
InspectKey = :__inspect_key__ # :nodoc:
|
@@ -246,11 +256,28 @@ class OpenStruct
|
|
246
256
|
|
247
257
|
#
|
248
258
|
# Compares this object and +other+ for equality. An OpenStruct is equal to
|
249
|
-
# +other+ when +other+ is an OpenStruct and the two
|
259
|
+
# +other+ when +other+ is an OpenStruct and the two objects' Hash tables are
|
250
260
|
# equal.
|
251
261
|
#
|
252
262
|
def ==(other)
|
253
|
-
return false unless
|
254
|
-
|
263
|
+
return false unless other.kind_of?(OpenStruct)
|
264
|
+
@table == other.table
|
265
|
+
end
|
266
|
+
|
267
|
+
#
|
268
|
+
# Compares this object and +other+ for equality. An OpenStruct is eql? to
|
269
|
+
# +other+ when +other+ is an OpenStruct and the two objects' Hash tables are
|
270
|
+
# eql?.
|
271
|
+
#
|
272
|
+
def eql?(other)
|
273
|
+
return false unless other.kind_of?(OpenStruct)
|
274
|
+
@table.eql?(other.table)
|
275
|
+
end
|
276
|
+
|
277
|
+
# Compute a hash-code for this OpenStruct.
|
278
|
+
# Two hashes with the same content will have the same hash code
|
279
|
+
# (and will be eql?).
|
280
|
+
def hash
|
281
|
+
@table.hash
|
255
282
|
end
|
256
283
|
end
|
data/rubysl-ostruct.gemspec
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
describe "OpenStruct#each_pair" do
|
4
|
+
before :each do
|
5
|
+
@os = OpenStruct.new("a" => 1, :b => 2)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "returns an enumerator if no block given" do
|
9
|
+
enum = @os.each_pair
|
10
|
+
enum.should be_an_instance_of(enumerator_class)
|
11
|
+
enum.to_a.should == [[:a, 1], [:b, 2]]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "yields the key and value of each pair to a block expecting |key, value|" do
|
15
|
+
all_args = []
|
16
|
+
@os.each_pair { |key, value| all_args << [key, value] }
|
17
|
+
all_args.sort.should == [[:a, 1], [:b, 2]]
|
18
|
+
end
|
19
|
+
end
|
@@ -2,19 +2,14 @@ require "ostruct"
|
|
2
2
|
|
3
3
|
describe "OpenStruct#[]" do
|
4
4
|
before :each do
|
5
|
-
@os = OpenStruct.new
|
5
|
+
@os = OpenStruct.new(:foo => 42)
|
6
6
|
end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
lambda { @os[:foo] }.should raise_error(NoMethodError)
|
11
|
-
end
|
8
|
+
it "returns the associated value using a symbol" do
|
9
|
+
@os[:foo].should == 42
|
12
10
|
end
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
@os.foo = 42
|
17
|
-
@os[:foo].should == 42
|
18
|
-
end
|
12
|
+
it "returns the associated value using a string" do
|
13
|
+
@os["foo"].should == 42
|
19
14
|
end
|
20
15
|
end
|
data/spec/element_set_spec.rb
CHANGED
@@ -2,20 +2,26 @@ require "ostruct"
|
|
2
2
|
|
3
3
|
describe "OpenStruct#[]=" do
|
4
4
|
before :each do
|
5
|
-
@os = OpenStruct.new
|
5
|
+
@os = OpenStruct.new(:bar => 100)
|
6
6
|
end
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
8
|
+
it "sets the associated value using a symbol" do
|
9
|
+
@os[:foo] = 42
|
10
|
+
@os.foo.should == 42
|
11
|
+
end
|
12
|
+
|
13
|
+
it "sets the associated value using a string" do
|
14
|
+
@os["foo"] = 42
|
15
|
+
@os.foo.should == 42
|
16
|
+
end
|
17
|
+
|
18
|
+
it "updates the associated value using a symbol" do
|
19
|
+
@os[:bar] = 42
|
20
|
+
@os.bar.should == 42
|
21
|
+
end
|
22
|
+
|
23
|
+
it "updates the associated value using a string" do
|
24
|
+
@os["bar"] = 42
|
25
|
+
@os.bar.should == 42
|
20
26
|
end
|
21
27
|
end
|
data/spec/eql_spec.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
describe "OpenStruct#eql?" do
|
4
|
+
before :each do
|
5
|
+
@os = OpenStruct.new(:a => 1, :b => 2)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "returns true when the passed argument is an OpenStruct and contains the same hash table" do
|
9
|
+
os2 = OpenStruct.new(:a => 1, :b => 2)
|
10
|
+
@os.should eql(os2)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns false when the passed argument is an OpenStruct and contains a different hash table" do
|
14
|
+
os2 = OpenStruct.new(:a => 2, :b => 2)
|
15
|
+
@os.should_not eql(os2)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns false when the passed argument isn't an OpenStruct" do
|
19
|
+
h = {:a => 1, :b => 2}
|
20
|
+
@os.should_not eql(h)
|
21
|
+
end
|
22
|
+
end
|
data/spec/hash_spec.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
|
3
|
+
describe "OpenStruct#hash" do
|
4
|
+
before :each do
|
5
|
+
@os = OpenStruct.new(:a => 1)
|
6
|
+
@os2 = OpenStruct.new
|
7
|
+
end
|
8
|
+
|
9
|
+
it "returns a fixnum" do
|
10
|
+
@os.hash.should be_an_instance_of(Fixnum)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "returns the same fixnum for OpenStruct with the same content" do
|
14
|
+
@os.hash.should_not == @os2.hash
|
15
|
+
|
16
|
+
@os2.a = 1
|
17
|
+
@os.hash.should == @os2.hash
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,57 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubysl-ostruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Shirai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
+
type: :development
|
16
|
+
prerelease: false
|
15
17
|
requirement: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
|
-
- - ~>
|
19
|
+
- - "~>"
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '1.3'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
+
type: :development
|
30
|
+
prerelease: false
|
29
31
|
requirement: !ruby/object:Gem::Requirement
|
30
32
|
requirements:
|
31
|
-
- - ~>
|
33
|
+
- - "~>"
|
32
34
|
- !ruby/object:Gem::Version
|
33
35
|
version: '10.0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mspec
|
43
|
+
type: :development
|
44
|
+
prerelease: false
|
43
45
|
requirement: !ruby/object:Gem::Requirement
|
44
46
|
requirements:
|
45
|
-
- - ~>
|
47
|
+
- - "~>"
|
46
48
|
- !ruby/object:Gem::Version
|
47
49
|
version: '1.5'
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubysl-prettyprint
|
48
57
|
type: :development
|
49
58
|
prerelease: false
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '2.0'
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - ~>
|
66
|
+
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '2.0'
|
55
69
|
description: Ruby standard library ostruct.
|
56
70
|
email:
|
57
71
|
- brixen@gmail.com
|
@@ -59,10 +73,11 @@ executables: []
|
|
59
73
|
extensions: []
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .travis.yml
|
76
|
+
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
64
78
|
- Gemfile
|
65
79
|
- LICENSE
|
80
|
+
- MRI_LICENSE
|
66
81
|
- README.md
|
67
82
|
- Rakefile
|
68
83
|
- lib/ostruct.rb
|
@@ -71,11 +86,14 @@ files:
|
|
71
86
|
- lib/rubysl/ostruct/version.rb
|
72
87
|
- rubysl-ostruct.gemspec
|
73
88
|
- spec/delete_field_spec.rb
|
89
|
+
- spec/each_pair_spec.rb
|
74
90
|
- spec/element_reference_spec.rb
|
75
91
|
- spec/element_set_spec.rb
|
92
|
+
- spec/eql_spec.rb
|
76
93
|
- spec/equal_value_spec.rb
|
77
94
|
- spec/fixtures/classes.rb
|
78
95
|
- spec/frozen_spec.rb
|
96
|
+
- spec/hash_spec.rb
|
79
97
|
- spec/initialize_copy_spec.rb
|
80
98
|
- spec/initialize_spec.rb
|
81
99
|
- spec/inspect_spec.rb
|
@@ -98,27 +116,30 @@ require_paths:
|
|
98
116
|
- lib
|
99
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
118
|
requirements:
|
101
|
-
- - ~>
|
119
|
+
- - "~>"
|
102
120
|
- !ruby/object:Gem::Version
|
103
121
|
version: '2.0'
|
104
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
123
|
requirements:
|
106
|
-
- -
|
124
|
+
- - ">="
|
107
125
|
- !ruby/object:Gem::Version
|
108
126
|
version: '0'
|
109
127
|
requirements: []
|
110
128
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.4.8
|
112
130
|
signing_key:
|
113
131
|
specification_version: 4
|
114
132
|
summary: Ruby standard library ostruct.
|
115
133
|
test_files:
|
116
134
|
- spec/delete_field_spec.rb
|
135
|
+
- spec/each_pair_spec.rb
|
117
136
|
- spec/element_reference_spec.rb
|
118
137
|
- spec/element_set_spec.rb
|
138
|
+
- spec/eql_spec.rb
|
119
139
|
- spec/equal_value_spec.rb
|
120
140
|
- spec/fixtures/classes.rb
|
121
141
|
- spec/frozen_spec.rb
|
142
|
+
- spec/hash_spec.rb
|
122
143
|
- spec/initialize_copy_spec.rb
|
123
144
|
- spec/initialize_spec.rb
|
124
145
|
- spec/inspect_spec.rb
|
@@ -131,4 +152,3 @@ test_files:
|
|
131
152
|
- spec/table_spec.rb
|
132
153
|
- spec/to_h_spec.rb
|
133
154
|
- spec/to_s_spec.rb
|
134
|
-
has_rdoc:
|