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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7517ed283f406c8fbb2beec11d2795031284b2bc
4
- data.tar.gz: 4143aba120fab75d4519656b6a61969ad3b2296b
3
+ metadata.gz: 2d5de22578058d9e633d5c12720a35433e748fa8
4
+ data.tar.gz: 41c11727465906e49ea615d7f7b53cb723ca6c85
5
5
  SHA512:
6
- metadata.gz: 971ffebffff92c8f8902f4459393e6c3dd9690126e4dc929850e577e34f2ac1616add0f35688fe55fc5f86d93aa986686d78decc1789aeedd930d422749ece57
7
- data.tar.gz: cb1d3f82277709ec8b5e0130b3cc810ba9ad58a59b4b8383a03ff3b81470889030c97258e69e41c80740b5a1f35bc96dcd50240cd9b720868d6ab88d8ef67d19
6
+ metadata.gz: aa92bbb86def5c97a1661ce9179b49715a9ce23733f0f08a472e317491c2d0dbe7e25c9742399243193780b077e00f9dc8a19d6ba3e3b98fd203e080216f90e1
7
+ data.tar.gz: a019fbd0d57cd1f4e811877d36e6c034a1cb64b52c27b6a468b35daef507ee9ad1b5ef66c0a51b784f50a1eead90679f2f21b322553fddc3196723509beca686
Binary file
@@ -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
- # all values types
6
- $TYPE = ["JsonRander::JObject",
7
- "JsonRander::JArray",
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
- # json special value: true/false/nil
107
- class JSpecialValue
108
- def initialize
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 JObject.new
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
@@ -143,4 +143,14 @@ module JsonRander
143
143
  end
144
144
  end
145
145
 
146
+ # json num: build from JNumBuilder
147
+ class JNum
148
+ def initialize
149
+ @builder = JNumBuilder.instance
150
+ end
151
+
152
+ def to_s
153
+ return @builder.get_num.to_s
154
+ end
155
+ end
146
156
  end #module
@@ -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
@@ -1,3 +1,3 @@
1
1
  module JsonRander
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
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.1
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: