jsondoc 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -10
- data/Rakefile +6 -5
- data/lib/jsondoc.rb +2 -2
- data/lib/jsondoc/document.rb +59 -75
- data/test/test_base.rb +1 -1
- data/test/test_setup.rb +7 -7
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c654bdf353b981573a429df4c118bd4fd063e94
|
4
|
+
data.tar.gz: bd60cca64677d5810f68975d39de4a65c460cb1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e04c5cbde046644d5787950015328a5632fd3c56351ea74fb53a8192bf692439c952b371c4103d9da488d86d430bc33f020869d559adb2aca558eb9a11cb3132
|
7
|
+
data.tar.gz: e041d19abc0ca4c18d18aedba3e9e9a9b6be21a4204275537c2c7657264e48755037944bbe574291c7011d321afe3eaca446a7094c0ad7472bd469534795329f
|
data/CHANGELOG.md
CHANGED
@@ -1,26 +1,28 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
---------
|
3
|
+
- **2016-08-23**: 0.1.3
|
4
|
+
- Remove hard coded `require 'json'`
|
5
|
+
- **2016-02-05**: 0.1.2
|
6
|
+
- Add missing test file
|
7
|
+
- **2016-02-04**: 0.1.1
|
8
|
+
- Add initialize opts hash
|
9
|
+
- Add `attr_reader :dDocument`
|
10
|
+
- Add `bUseDeepKeys` to make deep key splitting optional
|
3
11
|
- **2014-08-14**: 0.1.0
|
4
12
|
- Support retrieval of properties from nested objects using period delmiter
|
5
|
-
|
6
13
|
- **2014-06-05**: 0.0.6
|
7
|
-
- Return self from loadHash()
|
8
|
-
|
14
|
+
- Return self from `loadHash()`
|
9
15
|
- **2014-04-17**: 0.0.5
|
10
|
-
|
11
16
|
- **2014-03-16**: 0.0.4
|
12
17
|
- Changed Attr methods to Prop methods to represent JSON schema property
|
13
18
|
- Added Attr methods as aliases
|
14
19
|
- Added ability to load initial values hash
|
15
20
|
- Added key validation for #getProp() in strict mode
|
16
|
-
- Added attr_accessor
|
21
|
+
- Added `attr_accessor :bIsStrict`
|
17
22
|
- #push(Prop\Attr) will now only act on arrays
|
18
|
-
|
19
23
|
- **2014-02-12**: 0.0.3
|
20
24
|
- Added cpAttr() method
|
21
|
-
|
22
25
|
- **2014-01-31**: 0.0.2
|
23
|
-
- README bugfix
|
24
|
-
|
26
|
+
- `README` bugfix
|
25
27
|
- **2014-01-28**: 0.0.1
|
26
|
-
- Initial release
|
28
|
+
- Initial release
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rake'
|
|
2
2
|
require 'rake/testtask'
|
3
3
|
|
4
4
|
desc 'Default: run unit tests.'
|
5
|
-
task :
|
5
|
+
task default: :test
|
6
6
|
|
7
7
|
desc 'Test the library.'
|
8
8
|
Rake::TestTask.new do |t|
|
@@ -13,7 +13,8 @@ end
|
|
13
13
|
|
14
14
|
desc 'Generate YARD documentation.'
|
15
15
|
task :gendoc do
|
16
|
-
#puts 'yard doc generation disabled until JRuby build
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
# puts 'yard doc generation disabled until JRuby build \
|
17
|
+
# native extensions for redcarpet or yard removes the dependency.'
|
18
|
+
system 'yardoc'
|
19
|
+
system 'yard stats --list-undoc'
|
20
|
+
end
|
data/lib/jsondoc.rb
CHANGED
data/lib/jsondoc/document.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
1
|
class Symbol
|
4
2
|
def split(separator)
|
5
3
|
to_s.split(separator).map(&:to_sym)
|
@@ -17,36 +15,35 @@ module JsonDoc
|
|
17
15
|
def initialize(dValues=nil,dSchema=nil,bDefaultifyDoc=false,bIsStrict=true,opts={})
|
18
16
|
@dSchema = dSchema || self.getDefaultSchema()
|
19
17
|
@bDefaultifyDoc = bDefaultifyDoc ? true : false
|
20
|
-
@bIsStrict = bIsStrict
|
18
|
+
@bIsStrict = bIsStrict ? true : false
|
21
19
|
@bUseKeyAsDesc = false
|
22
20
|
@bUseDeepKeys = opts.key?(:bUseDeepKeys) ? opts[:bUseDeepKeys] : true
|
23
21
|
@dDocument = self.getDefaultDocument()
|
24
22
|
self.loadHash(dValues) if dValues.is_a?(Hash)
|
25
23
|
end
|
26
24
|
|
27
|
-
def getDefaultSchema
|
28
|
-
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
25
|
+
def getDefaultSchema
|
26
|
+
{
|
27
|
+
type: '',
|
28
|
+
properties: {
|
29
|
+
id: {default: '', description: 'Doc Id', type: 'string'}
|
32
30
|
}
|
33
31
|
}
|
34
|
-
return dSchema
|
35
32
|
end
|
36
33
|
|
37
|
-
def getDefaultDocument
|
34
|
+
def getDefaultDocument
|
38
35
|
dDocument = {}
|
39
36
|
if @bDefaultifyDoc && @dSchema.key?(:properties)
|
40
37
|
@dSchema[:properties].keys.each do |yKey|
|
41
38
|
dProperty = @dSchema[:properties][yKey]
|
42
|
-
xxVal
|
39
|
+
xxVal = dProperty.key?(:default) ? dProperty[:default] : ''
|
43
40
|
dDocument[yKey] = xxVal
|
44
41
|
end
|
45
42
|
end
|
46
|
-
|
43
|
+
dDocument
|
47
44
|
end
|
48
45
|
|
49
|
-
def loadHash(dValues=nil)
|
46
|
+
def loadHash(dValues = nil)
|
50
47
|
if dValues.nil?
|
51
48
|
return
|
52
49
|
elsif ! dValues.is_a?(Hash)
|
@@ -55,18 +52,16 @@ module JsonDoc
|
|
55
52
|
dValues.each do |yKey,xxVal|
|
56
53
|
self.setProp(yKey,xxVal)
|
57
54
|
end
|
58
|
-
|
55
|
+
self
|
59
56
|
end
|
60
57
|
|
61
|
-
def getProp(yKey=nil)
|
62
|
-
if yKey.nil?
|
63
|
-
|
64
|
-
|
65
|
-
yKey = yKey.to_sym if yKey.kind_of?(String)
|
58
|
+
def getProp(yKey = nil)
|
59
|
+
raise ArgumentError, 'E_BAD_KEY__IS_NIL' if yKey.nil?
|
60
|
+
|
61
|
+
yKey = yKey.to_sym if yKey.is_a?(String)
|
66
62
|
|
67
63
|
if @bUseDeepKeys
|
68
|
-
aKeys = yKey.split('.')
|
69
|
-
#aKeys = yKey.to_s.split('.').map(&:to_sym)
|
64
|
+
aKeys = yKey.split('.') # = yKey.to_s.split('.').map(&:to_sym)
|
70
65
|
|
71
66
|
dDoc = @dDocument
|
72
67
|
xxVal = getPropRecurse(aKeys.clone,dDoc)
|
@@ -75,7 +70,7 @@ module JsonDoc
|
|
75
70
|
return @dDocument.key?(yKey) ? @dDocument[yKey] : nil
|
76
71
|
end
|
77
72
|
|
78
|
-
def getPropRecurse(aKeys=[],dDoc=nil)
|
73
|
+
def getPropRecurse(aKeys = [], dDoc = nil)
|
79
74
|
yKey = aKeys.shift
|
80
75
|
if ! yKey.is_a?(Symbol) || yKey.length<1 || ! dDoc.key?( yKey )
|
81
76
|
return nil
|
@@ -90,50 +85,44 @@ module JsonDoc
|
|
90
85
|
end
|
91
86
|
end
|
92
87
|
|
93
|
-
def getPropSingle(yKey=nil)
|
94
|
-
if yKey.nil?
|
95
|
-
|
96
|
-
end
|
97
|
-
yKey = yKey.to_sym if yKey.kind_of?(String)
|
88
|
+
def getPropSingle(yKey = nil)
|
89
|
+
raise ArgumentError, 'E_BAD_KEY__IS_NIL' if yKey.nil?
|
90
|
+
yKey = yKey.to_sym if yKey.is_a?(String)
|
98
91
|
xxVal = @dDocument.key?(yKey) ? @dDocument[yKey] : nil
|
99
92
|
if xxVal.nil? && @bIsStrict
|
100
93
|
self.validateKey(yKey)
|
101
94
|
end
|
102
|
-
|
95
|
+
xxVal
|
103
96
|
end
|
104
97
|
|
105
|
-
def validateKey(yKey=nil)
|
106
|
-
if yKey.nil?
|
107
|
-
raise ArgumentError, "E_BAD_KEY__IS_NIL [#{yKey.to_s}]"
|
108
|
-
end
|
98
|
+
def validateKey(yKey = nil)
|
99
|
+
raise ArgumentError, "E_BAD_KEY__IS_NIL [#{yKey.to_s}]" if yKey.nil?
|
109
100
|
|
110
101
|
return true unless @bIsStrict
|
111
102
|
|
112
|
-
bKeyExists = @dSchema.key?(:properties)
|
103
|
+
bKeyExists = @dSchema.key?(:properties) \
|
104
|
+
&& @dSchema[:properties].key?(yKey) ? true : false
|
113
105
|
|
114
|
-
unless bKeyExists
|
115
|
-
raise ArgumentError, "E_UNKNOWN_KEY__STRICT #{yKey.to_s}"
|
116
|
-
end
|
106
|
+
raise ArgumentError, "E_UNKNOWN_KEY__STRICT #{yKey.to_s}" unless bKeyExists
|
117
107
|
|
118
108
|
return true
|
119
109
|
end
|
120
110
|
|
121
|
-
def setProp(yKey=nil,xxVal=nil)
|
122
|
-
yKey = yKey.to_sym if yKey.
|
111
|
+
def setProp(yKey = nil, xxVal = nil)
|
112
|
+
yKey = yKey.to_sym if yKey.is_a?(String)
|
123
113
|
|
124
114
|
self.validateKey(yKey)
|
125
115
|
|
126
116
|
@dDocument[yKey] = xxVal
|
127
117
|
end
|
128
118
|
|
129
|
-
def pushProp(yKey=nil,xxVal=nil)
|
130
|
-
yKey = yKey.to_sym if yKey.
|
131
|
-
|
119
|
+
def pushProp(yKey = nil, xxVal = nil)
|
120
|
+
yKey = yKey.to_sym if yKey.is_a?(String)
|
132
121
|
self.validateKey(yKey)
|
133
122
|
|
134
123
|
if @dDocument.key?(yKey)
|
135
|
-
if @dDocument[yKey].
|
136
|
-
@dDocument[yKey].push
|
124
|
+
if @dDocument[yKey].is_a?(Array)
|
125
|
+
@dDocument[yKey].push xxVal
|
137
126
|
else
|
138
127
|
raise RuntimeError, 'E_PROPERTY_IS_NOT_ARRAY'
|
139
128
|
end
|
@@ -142,43 +131,42 @@ module JsonDoc
|
|
142
131
|
end
|
143
132
|
end
|
144
133
|
|
145
|
-
def cpProp(yKeySrc=nil,yKeyDest=nil)
|
146
|
-
yKeySrc
|
147
|
-
yKeyDest = yKeyDest.to_sym if yKeyDest.
|
134
|
+
def cpProp(yKeySrc = nil, yKeyDest = nil)
|
135
|
+
yKeySrc = yKeySrc.to_sym if yKeySrc.is_a?(String)
|
136
|
+
yKeyDest = yKeyDest.to_sym if yKeyDest.is_a?(String)
|
148
137
|
self.setAttr(yKeyDest, self.getAttr(yKeySrc))
|
149
138
|
end
|
150
139
|
|
151
|
-
def sortKeys
|
140
|
+
def sortKeys
|
152
141
|
@dDocument.keys.sort!
|
153
142
|
end
|
154
143
|
|
155
|
-
def fromJson(jDocument=nil)
|
156
|
-
if jDocument.
|
144
|
+
def fromJson(jDocument = nil)
|
145
|
+
if jDocument.is_a?(String)
|
157
146
|
@dDocument = JSON.load(jDocument)
|
158
147
|
end
|
159
148
|
return self
|
160
149
|
end
|
161
150
|
|
162
|
-
def fromDict(dDocument=nil)
|
151
|
+
def fromDict(dDocument = nil)
|
163
152
|
@dDocument = dDocument if dDocument.is_a?(Hash)
|
164
153
|
end
|
165
154
|
|
166
|
-
def asHash
|
167
|
-
|
155
|
+
def asHash
|
156
|
+
@dDocument
|
168
157
|
end
|
169
158
|
|
170
|
-
def asJson
|
171
|
-
|
159
|
+
def asJson
|
160
|
+
JSON.dump( self.asHash() )
|
172
161
|
end
|
173
162
|
|
174
|
-
def getValStringForProperties(aCols=nil,sDelimiter="\t")
|
175
|
-
sDelimiter = "\t" unless sDelimiter.
|
163
|
+
def getValStringForProperties(aCols = nil, sDelimiter = "\t")
|
164
|
+
sDelimiter = "\t" unless sDelimiter.is_a?(String) && sDelimiter.length>0
|
176
165
|
aVals = self.getValArrayForProperties(aCols)
|
177
|
-
|
178
|
-
return sVals
|
166
|
+
return aVals.join(sDelimiter)
|
179
167
|
end
|
180
168
|
|
181
|
-
def getValArrayForProperties(aCols=nil,xxNil='')
|
169
|
+
def getValArrayForProperties(aCols = nil, xxNil = '')
|
182
170
|
aVals = []
|
183
171
|
return aVals if aCols.nil?
|
184
172
|
|
@@ -187,30 +175,26 @@ module JsonDoc
|
|
187
175
|
end
|
188
176
|
|
189
177
|
aCols.each do |yKey|
|
190
|
-
|
191
|
-
yKey = yKey.to_sym if yKey.kind_of?(String)
|
178
|
+
yKey = yKey.to_sym if yKey.is_a? String
|
192
179
|
xxVal = getProp( yKey )
|
193
180
|
#xVal = @dDocument.key?(yKey) ? @dDocument[yKey] : nil
|
194
181
|
xxVal = xxNil if xxVal.nil?
|
195
|
-
aVals.push
|
196
|
-
|
182
|
+
aVals.push xxVal
|
197
183
|
end
|
198
|
-
|
184
|
+
aVals
|
199
185
|
end
|
200
186
|
|
201
|
-
def getDescStringForProperties(aCols=nil,sDelimiter="\t")
|
202
|
-
sDelimiter = "\t" unless sDelimiter.
|
187
|
+
def getDescStringForProperties(aCols = nil,sDelimiter = "\t")
|
188
|
+
sDelimiter = "\t" unless sDelimiter.is_a?(String) && sDelimiter.length>0
|
203
189
|
aVals = self.getDescArrayForProperties(aCols)
|
204
|
-
|
205
|
-
return sVals
|
190
|
+
aVals.join(sDelimiter)
|
206
191
|
end
|
207
192
|
|
208
|
-
def getDescArrayForProperties(aCols=nil)
|
193
|
+
def getDescArrayForProperties(aCols = nil)
|
209
194
|
aVals = []
|
210
195
|
return aVals if aCols.nil?
|
211
196
|
aCols.each do |yKey|
|
212
|
-
|
213
|
-
yKey = yKey.to_sym if yKey.kind_of?(String)
|
197
|
+
yKey = yKey.to_sym if yKey.is_a? String
|
214
198
|
xxVal = (
|
215
199
|
@dSchema.key?(:properties) \
|
216
200
|
&& @dSchema[:properties].key?(yKey) \
|
@@ -219,11 +203,11 @@ module JsonDoc
|
|
219
203
|
) \
|
220
204
|
? @dSchema[:properties][yKey][:description] : yKey.to_s
|
221
205
|
|
222
|
-
xxVal = xxVal.to_s unless xxVal.is_a?
|
206
|
+
xxVal = xxVal.to_s unless xxVal.is_a? String
|
223
207
|
|
224
|
-
aVals.push
|
208
|
+
aVals.push xxVal
|
225
209
|
end
|
226
|
-
|
210
|
+
aVals
|
227
211
|
end
|
228
212
|
|
229
213
|
alias_method :setAttr , :setProp
|
@@ -231,4 +215,4 @@ module JsonDoc
|
|
231
215
|
alias_method :pushAttr, :pushProp
|
232
216
|
alias_method :cpAttr , :cpProp
|
233
217
|
end
|
234
|
-
end
|
218
|
+
end
|
data/test/test_base.rb
CHANGED
data/test/test_setup.rb
CHANGED
@@ -3,13 +3,13 @@ require './test/test_base.rb'
|
|
3
3
|
class JsonDocTest < Test::Unit::TestCase
|
4
4
|
def testSetup
|
5
5
|
|
6
|
-
schemaTest
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
6
|
+
schemaTest = {
|
7
|
+
type: 'TestDocument',
|
8
|
+
properties: {
|
9
|
+
id: { default: 'abc', type: 'string', description: 'Id' },
|
10
|
+
foo: { default: 'bar', type: 'string', description: 'Foo' },
|
11
|
+
hello: { default: 'world', type: 'string', description: 'Hello' },
|
12
|
+
array: { default: ['foo'], type: 'array', description: 'Array' }
|
13
13
|
}
|
14
14
|
}
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsondoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A base document object
|
14
14
|
email: johncwang@gmail.com
|
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
47
|
rubyforge_project:
|
48
|
-
rubygems_version: 2.
|
48
|
+
rubygems_version: 2.5.1
|
49
49
|
signing_key:
|
50
50
|
specification_version: 4
|
51
51
|
summary: JsonDoc
|