datastruct 0.0.7 → 0.0.9

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 (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/datastruct.rb +8 -5
  3. metadata +4 -103
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8586b78a00a992565165d8302c2a05eab5e0efce
4
- data.tar.gz: ba8064a0cc5803ca41de9ad332437e1dd4fad641
2
+ SHA256:
3
+ metadata.gz: b51c076f8c802f2a12cd89fcc2af06b92f3053162ab921740add779a7e4309f8
4
+ data.tar.gz: 34a738845f300ad3adfdcade00be8d4aaca1a40570bdaf0333ee8e6837eed321
5
5
  SHA512:
6
- metadata.gz: 3e6fff90d7f9a74ab5155367cb78ecb72ff5c4789e014cb9b4d558b846edc360fa269d071f998b0ebab09ef5222ac7e097f3e786f1149c6f8761719d2fa1261e
7
- data.tar.gz: 69af720cb5c40f90e03441bfc7a1226cc46f079d4ee0783d0ab575e1575d1918ae4e881d95be079c7482ed2e1994cbad2ff0bf0bee90164fe2f89237fc8b6de2
6
+ metadata.gz: f0fd224d50f9ac1be0aa52e3a884a3941855ed5a50ced72f48eea91370a8b98f4e48d8171380378c0d435b164ed76d18e18229b21704bf91f585bdd715a439e4
7
+ data.tar.gz: 2da68207c31897bb736b4729c720ae6f5ff25a4a123a6f40d17c6bfa171eeaa33dd28534d08e80e447670affb0e8b8378532f56187f5bb8d4ad512bd1e0efb97
@@ -178,7 +178,9 @@ class DataStruct
178
178
  # @return [Hash]
179
179
  #
180
180
  def to_hash(string_keys: false, deep: false)
181
- return @data.dup if not string_keys and not deep
181
+ # Builds a hash using property getters. This allows getters to override the
182
+ # output of this function.
183
+ data = Hash[self.class::PROPERTIES.map { |key| [key, self.get(key)] }]
182
184
 
183
185
  hashify = lambda { |obj|
184
186
  if obj.is_a? DataStruct and deep
@@ -190,7 +192,7 @@ class DataStruct
190
192
  obj.each_pair { |key, value|
191
193
  # Only stringify the keys of the *top level* of the structure. We have
192
194
  # no business messing with the keys of nested hashes.
193
- key = key.to_s if string_keys and obj.equal? @data
195
+ key = key.to_s if string_keys and obj.equal? data
194
196
 
195
197
  out[key] = hashify[value]
196
198
  }
@@ -205,7 +207,8 @@ class DataStruct
205
207
  end
206
208
  }
207
209
 
208
- return hashify[@data]
210
+ return data if not string_keys and not deep
211
+ return hashify[data]
209
212
  end
210
213
 
211
214
  alias_method :to_h, :to_hash
@@ -218,7 +221,7 @@ class DataStruct
218
221
  # @return [String]
219
222
  #
220
223
  def to_json(*args)
221
- @data.to_json(*args)
224
+ self.to_hash.to_json(*args)
222
225
  end
223
226
 
224
227
  ##
@@ -229,7 +232,7 @@ class DataStruct
229
232
  # @return [String]
230
233
  #
231
234
  def to_yaml(*args)
232
- @data.to_yaml(*args)
235
+ self.to_hash.to_yaml(*args)
233
236
  end
234
237
 
235
238
  ##
metadata CHANGED
@@ -1,113 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datastruct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Sandven
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-18 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '5'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '5'
41
- - !ruby/object:Gem::Dependency
42
- name: mocha
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1'
55
- - !ruby/object:Gem::Dependency
56
- name: pry
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: byebug
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: yard
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: redcarpet
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3'
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
+ dependencies: []
111
13
  description: |2
112
14
  Datastruct is made to be a more feature rich alternative to Ruby's Struct
113
15
  class. It defines several methods common for data structures, like hash
@@ -138,9 +40,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
40
  version: '0'
139
41
  requirements: []
140
42
  rubyforge_project:
141
- rubygems_version: 2.5.1
43
+ rubygems_version: 2.7.4
142
44
  signing_key:
143
45
  specification_version: 4
144
46
  summary: A great base class for data structures
145
47
  test_files: []
146
- has_rdoc: