json_rander 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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: