json_rander 0.0.1 → 0.0.2
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/json_rander-0.0.1.gem +0 -0
- data/lib/json_rander.rb +12 -127
- data/lib/json_rander/configuration.rb +17 -0
- data/lib/json_rander/json_array_builder.rb +24 -0
- data/lib/json_rander/json_hash_builder.rb +35 -0
- data/lib/json_rander/json_num_builder.rb +10 -0
- data/lib/json_rander/json_special_builder.rb +19 -0
- data/lib/json_rander/json_string_builder.rb +36 -0
- data/lib/json_rander/version.rb +1 -1
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d5de22578058d9e633d5c12720a35433e748fa8
|
4
|
+
data.tar.gz: 41c11727465906e49ea615d7f7b53cb723ca6c85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa92bbb86def5c97a1661ce9179b49715a9ce23733f0f08a472e317491c2d0dbe7e25c9742399243193780b077e00f9dc8a19d6ba3e3b98fd203e080216f90e1
|
7
|
+
data.tar.gz: a019fbd0d57cd1f4e811877d36e6c034a1cb64b52c27b6a468b35daef507ee9ad1b5ef66c0a51b784f50a1eead90679f2f21b322553fddc3196723509beca686
|
Binary file
|
data/lib/json_rander.rb
CHANGED
@@ -1,135 +1,20 @@
|
|
1
1
|
require 'json_rander/json_num_builder'
|
2
|
+
require 'json_rander/json_array_builder'
|
3
|
+
require 'json_rander/json_hash_builder'
|
4
|
+
require 'json_rander/json_string_builder'
|
5
|
+
require 'json_rander/json_special_builder'
|
6
|
+
require 'json_rander/configuration'
|
2
7
|
|
3
8
|
module JsonRander
|
4
9
|
|
5
|
-
#
|
6
|
-
|
7
|
-
|
8
|
-
"JsonRander::JString",
|
9
|
-
"JsonRander::JNum",
|
10
|
-
"JsonRander::JSpecialValue"]
|
11
|
-
|
12
|
-
# max length of random string/array/hash
|
13
|
-
$MAX_RANDOM_LENGTH = 5
|
14
|
-
|
15
|
-
# json object: { xx : xx, yy :: yy}
|
16
|
-
class JObject
|
17
|
-
def initialize
|
18
|
-
@pairs = []
|
19
|
-
|
20
|
-
# add random json key/value pairs to json object
|
21
|
-
pair_num = Random.rand($MAX_RANDOM_LENGTH)
|
22
|
-
pair_num.times { self.add_random }
|
23
|
-
end
|
24
|
-
|
25
|
-
# get random key: string only
|
26
|
-
def rand_key
|
27
|
-
return JString.new
|
28
|
-
end
|
29
|
-
|
30
|
-
# get random value: string/num/hash/array
|
31
|
-
def rand_value
|
32
|
-
return Kernel.const_get($TYPE.sample).new
|
33
|
-
end
|
34
|
-
|
35
|
-
def add_random
|
36
|
-
@pairs << [rand_key, rand_value]
|
37
|
-
return self
|
38
|
-
end
|
39
|
-
|
40
|
-
# to json string
|
41
|
-
def to_s
|
42
|
-
key_value_strs = []
|
43
|
-
@pairs.each { | key, value | key_value_strs << "#{key.to_s} : #{value.to_s}" }
|
44
|
-
return "{ " + key_value_strs.join(", ") + " }"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# json array: [ xx, yy, zz]
|
49
|
-
class JArray
|
50
|
-
def initialize
|
51
|
-
@arrs = []
|
52
|
-
|
53
|
-
# add random json key/value pairs to json object
|
54
|
-
element_num = Random.rand($MAX_RANDOM_LENGTH)
|
55
|
-
element_num.times { self.add_random }
|
56
|
-
end
|
57
|
-
|
58
|
-
def add_random
|
59
|
-
@arrs << Kernel.const_get($TYPE.sample).new
|
60
|
-
return self
|
61
|
-
end
|
62
|
-
|
63
|
-
# to json string
|
64
|
-
def to_s
|
65
|
-
strs = []
|
66
|
-
@arrs.each { |value| strs << value.to_s}
|
67
|
-
return "[ " + strs.join(", ") + " ]"
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
# json string: 0..9a..zA..z\n\r\t\b\f etc
|
72
|
-
class JString
|
73
|
-
def initialize
|
74
|
-
chars = ("a".."z").to_a +
|
75
|
-
("A".."Z").to_a +
|
76
|
-
("0".."9").to_a +
|
77
|
-
["\\\\", "\\\"", "\\/", "\\n", "\\t", "\\b", "\\f", "\\r"].to_a
|
78
|
-
|
79
|
-
unicode_chars = ("0".."9").to_a +
|
80
|
-
("a".."f").to_a +
|
81
|
-
("A".."F").to_a
|
82
|
-
|
83
|
-
@string = ""
|
84
|
-
|
85
|
-
# get random string with max length limited
|
86
|
-
string_length = Random.rand($MAX_RANDOM_LENGTH)
|
87
|
-
string_length.times do
|
88
|
-
case Random.rand(2)
|
89
|
-
when 0
|
90
|
-
# num/alp
|
91
|
-
@string << chars.sample
|
92
|
-
when 1
|
93
|
-
# unicode
|
94
|
-
@string << "\\u"
|
95
|
-
4.times { @string << unicode_chars.sample}
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
# to json string
|
101
|
-
def to_s
|
102
|
-
return '"' + @string + '"'
|
103
|
-
end
|
10
|
+
# set configuration
|
11
|
+
def self.configuration
|
12
|
+
@configuration ||= Configuration.new
|
104
13
|
end
|
105
14
|
|
106
|
-
#
|
107
|
-
|
108
|
-
|
109
|
-
value = [true, false, nil].sample
|
110
|
-
end
|
111
|
-
|
112
|
-
def to_s
|
113
|
-
case @value
|
114
|
-
when true
|
115
|
-
return 'true'
|
116
|
-
when false
|
117
|
-
return 'false'
|
118
|
-
when nil
|
119
|
-
return 'null'
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# json num: build from JNumBuilder
|
125
|
-
class JNum
|
126
|
-
def initialize
|
127
|
-
@builder = JNumBuilder.instance
|
128
|
-
end
|
129
|
-
|
130
|
-
def to_s
|
131
|
-
return @builder.get_num.to_s
|
132
|
-
end
|
15
|
+
# get random type
|
16
|
+
def self.random_type
|
17
|
+
TYPE.sample
|
133
18
|
end
|
134
19
|
|
135
20
|
# correct json format builer
|
@@ -137,7 +22,7 @@ module JsonRander
|
|
137
22
|
# object({ xx : yy}) or array[xx, yy]
|
138
23
|
case Random.rand(2)
|
139
24
|
when 0
|
140
|
-
return
|
25
|
+
return JHash.new
|
141
26
|
when 1
|
142
27
|
return JArray.new
|
143
28
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module JsonRander
|
2
|
+
# all values types
|
3
|
+
TYPE = ["JsonRander::JHash",
|
4
|
+
"JsonRander::JArray",
|
5
|
+
"JsonRander::JString",
|
6
|
+
"JsonRander::JNum",
|
7
|
+
"JsonRander::JSpecialValue"]
|
8
|
+
|
9
|
+
class Configuration
|
10
|
+
attr_accessor :string_max_length, :array_max_length, :hash_max_length
|
11
|
+
def initialize
|
12
|
+
@string_max_length = 5
|
13
|
+
@array_max_length = 5
|
14
|
+
@hash_max_length = 5
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module JsonRander
|
2
|
+
# json array: [ xx, yy, zz]
|
3
|
+
class JArray
|
4
|
+
def initialize
|
5
|
+
@arrs = []
|
6
|
+
|
7
|
+
# add random json key/value pairs to json object
|
8
|
+
element_num = Random.rand(JsonRander::configuration.array_max_length)
|
9
|
+
element_num.times { self.add_random }
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_random
|
13
|
+
@arrs << Kernel.const_get(JsonRander.random_type).new
|
14
|
+
return self
|
15
|
+
end
|
16
|
+
|
17
|
+
# to json string
|
18
|
+
def to_s
|
19
|
+
strs = []
|
20
|
+
@arrs.each { |value| strs << value.to_s}
|
21
|
+
return "[ " + strs.join(", ") + " ]"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module JsonRander
|
2
|
+
|
3
|
+
# json object: { xx : xx, yy :: yy}
|
4
|
+
class JHash
|
5
|
+
def initialize
|
6
|
+
@pairs = []
|
7
|
+
|
8
|
+
# add random json key/value pairs to json object
|
9
|
+
pair_num = Random.rand(JsonRander::configuration.hash_max_length)
|
10
|
+
pair_num.times { self.add_random }
|
11
|
+
end
|
12
|
+
|
13
|
+
# get random key: string only
|
14
|
+
def rand_key
|
15
|
+
return JString.new
|
16
|
+
end
|
17
|
+
|
18
|
+
# get random value: string/num/hash/array
|
19
|
+
def rand_value
|
20
|
+
return Kernel.const_get(JsonRander.random_type).new
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_random
|
24
|
+
@pairs << [rand_key, rand_value]
|
25
|
+
return self
|
26
|
+
end
|
27
|
+
|
28
|
+
# to json string
|
29
|
+
def to_s
|
30
|
+
key_value_strs = []
|
31
|
+
@pairs.each { | key, value | key_value_strs << "#{key.to_s} : #{value.to_s}" }
|
32
|
+
return "{ " + key_value_strs.join(", ") + " }"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module JsonRander
|
2
|
+
#special value: true/false/nil
|
3
|
+
class JSpecialValue
|
4
|
+
def initialize
|
5
|
+
value = [true, false, nil].sample
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
case @value
|
10
|
+
when true
|
11
|
+
return 'true'
|
12
|
+
when false
|
13
|
+
return 'false'
|
14
|
+
when nil
|
15
|
+
return 'null'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module JsonRander
|
2
|
+
# json string: 0..9a..zA..z\n\r\t\b\f etc
|
3
|
+
class JString
|
4
|
+
def initialize
|
5
|
+
chars = ("a".."z").to_a +
|
6
|
+
("A".."Z").to_a +
|
7
|
+
("0".."9").to_a +
|
8
|
+
["\\\\", "\\\"", "\\/", "\\n", "\\t", "\\b", "\\f", "\\r"].to_a
|
9
|
+
|
10
|
+
unicode_chars = ("0".."9").to_a +
|
11
|
+
("a".."f").to_a +
|
12
|
+
("A".."F").to_a
|
13
|
+
|
14
|
+
@string = ""
|
15
|
+
|
16
|
+
# get random string with max length limited
|
17
|
+
string_length = Random.rand(JsonRander::configuration.string_max_length)
|
18
|
+
string_length.times do
|
19
|
+
case Random.rand(2)
|
20
|
+
when 0
|
21
|
+
# num/alp
|
22
|
+
@string << chars.sample
|
23
|
+
when 1
|
24
|
+
# unicode
|
25
|
+
@string << "\\u"
|
26
|
+
4.times { @string << unicode_chars.sample}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# to json string
|
32
|
+
def to_s
|
33
|
+
return '"' + @string + '"'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/json_rander/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_rander
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wills
|
@@ -20,9 +20,15 @@ files:
|
|
20
20
|
- LICENSE
|
21
21
|
- README.md
|
22
22
|
- json.txt
|
23
|
+
- json_rander-0.0.1.gem
|
23
24
|
- json_rander.gemspec
|
24
25
|
- lib/json_rander.rb
|
26
|
+
- lib/json_rander/configuration.rb
|
27
|
+
- lib/json_rander/json_array_builder.rb
|
28
|
+
- lib/json_rander/json_hash_builder.rb
|
25
29
|
- lib/json_rander/json_num_builder.rb
|
30
|
+
- lib/json_rander/json_special_builder.rb
|
31
|
+
- lib/json_rander/json_string_builder.rb
|
26
32
|
- lib/json_rander/version.rb
|
27
33
|
homepage: https://github.com/fdwills/json_rander
|
28
34
|
licenses:
|