nice_hash 1.15.6 → 1.16.0
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/README.md +23 -8
- data/lib/nice/hash/generate.rb +15 -4
- data/lib/nice/hash/validate.rb +25 -6
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4894f796091ce28510214b7758d52d40f40547a781c81b9d75a57b8e3c50bcfa
|
|
4
|
+
data.tar.gz: a6656db5d796ad0366421036bd5bd7a1646bbe6226b3bd53500e2a214fd7d3c3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c75cefbfbabbe7d018c53ba333a5fe88b525c8ec4c094ae876edc9fd6bee94e593f5ccce4896407c25be009c427bf2af0f2ee2b86ce23720b3fe0766254a11fb
|
|
7
|
+
data.tar.gz: f1e6b4ccfa0706728962c55d2e928bf16690dff926d512cc658729b57ae6e21b7c470019c96897eae3f39935353c9d9f2e1291578a92b898da8aa8ee37a60701
|
data/README.md
CHANGED
|
@@ -116,7 +116,8 @@ my_hash={
|
|
|
116
116
|
country: {default: 'Spain', correct: ["Spain", "Iceland", "Serbia", "Denmark", "Canada", "Italy", "Austria"].join("|")}, #one of these values
|
|
117
117
|
mobilePhone: {default: '(987)654321', correct: ['(', :'3:N', ')', :'6-8:N']},
|
|
118
118
|
sex: :"male|female|other", #any of these values
|
|
119
|
-
display: true
|
|
119
|
+
display: true,
|
|
120
|
+
user_names: [ :'3-10:L' ]
|
|
120
121
|
}
|
|
121
122
|
```
|
|
122
123
|
|
|
@@ -138,6 +139,7 @@ Explanations of the different fields:
|
|
|
138
139
|
country: correct: one of these values "Spain", "Iceland", "Serbia", "Denmark", "Canada", "Italy", "Austria"
|
|
139
140
|
mobilePhone: correct: a sting pattern with one of the next: "(nnn) nnnnnn", "(nnn) nnnnnnn", "(nnn) nnnnnnnn"
|
|
140
141
|
sex: 'male' or 'female' or 'other'
|
|
142
|
+
user_names: array of strings from 3 to 10 letters
|
|
141
143
|
|
|
142
144
|
So in case you want to assign to a key a string pattern value like for example in loginame, you need to specify the string pattern as a symbol :"5-10:/xn/"
|
|
143
145
|
|
|
@@ -303,7 +305,8 @@ On this example new_hash will contain:
|
|
|
303
305
|
country: ["Spain", "Iceland", "Serbia", "Denmark", "Canada", "Italy", "Austria"].join("|"), #one of these values
|
|
304
306
|
mobilePhone: ['(', :'3:N', ')', :'6-8:N'],
|
|
305
307
|
sex: :"male|female|other", #any of these values
|
|
306
|
-
display: true
|
|
308
|
+
display: true,
|
|
309
|
+
user_names: [ :'3-10:L' ]
|
|
307
310
|
}
|
|
308
311
|
```
|
|
309
312
|
|
|
@@ -383,7 +386,9 @@ In case of filtering by :correct new_hash would have a value like this for examp
|
|
|
383
386
|
:country=>"Denmark",
|
|
384
387
|
:mobilePhone=>"(707)8782080",
|
|
385
388
|
:sex=>"male",
|
|
386
|
-
:display=>true
|
|
389
|
+
:display=>true,
|
|
390
|
+
:user_names=>["FFrriNdw", "ACc"]
|
|
391
|
+
}
|
|
387
392
|
```
|
|
388
393
|
|
|
389
394
|
In case no filtering you will get all the values for all keys
|
|
@@ -438,7 +443,9 @@ On this example wrong_min_length will contain something like:
|
|
|
438
443
|
:country=>"Spai",
|
|
439
444
|
:mobilePhone=>"(237)17640431",
|
|
440
445
|
:sex=>"mal",
|
|
441
|
-
:display=>true
|
|
446
|
+
:display=>true,
|
|
447
|
+
:user_names=>["FF"]
|
|
448
|
+
}
|
|
442
449
|
```
|
|
443
450
|
|
|
444
451
|
### Return the select_fields or the pattern_fields
|
|
@@ -488,7 +495,8 @@ all_pattern_fields contains:
|
|
|
488
495
|
[:draws, 1, :drawName],
|
|
489
496
|
[:draws, 1, :owner, :correct],
|
|
490
497
|
[:zip, :correct],
|
|
491
|
-
[:mobilePhone, :correct]]
|
|
498
|
+
[:mobilePhone, :correct]],
|
|
499
|
+
[:user_names]
|
|
492
500
|
```
|
|
493
501
|
|
|
494
502
|
pattern_fields_on_correct contains:
|
|
@@ -504,7 +512,8 @@ pattern_fields_on_correct contains:
|
|
|
504
512
|
[:draws, 1, :drawName],
|
|
505
513
|
[:draws, 1, :owner],
|
|
506
514
|
[:zip],
|
|
507
|
-
[:mobilePhone]]
|
|
515
|
+
[:mobilePhone]],
|
|
516
|
+
[:user_names]
|
|
508
517
|
```
|
|
509
518
|
|
|
510
519
|
|
|
@@ -582,7 +591,9 @@ After using the bury method default_values will contain:
|
|
|
582
591
|
:country=>"Spain",
|
|
583
592
|
:mobilePhone=>"(987)654321",
|
|
584
593
|
:sex=>"male",
|
|
585
|
-
:display=>true
|
|
594
|
+
:display=>true,
|
|
595
|
+
:user_names=>["FFrriNdw", "ACc"]
|
|
596
|
+
}
|
|
586
597
|
```
|
|
587
598
|
|
|
588
599
|
### Validating hashes
|
|
@@ -620,7 +631,9 @@ values = {
|
|
|
620
631
|
:country=>"Iceland",
|
|
621
632
|
:mobilePhone=>"(441)97037845",
|
|
622
633
|
:sex=>"male",
|
|
623
|
-
:display=>true
|
|
634
|
+
:display=>true,
|
|
635
|
+
:user_names=>['ddfdsa']
|
|
636
|
+
}
|
|
624
637
|
```
|
|
625
638
|
|
|
626
639
|
To validate those values against the patterns defined on my_hash:
|
|
@@ -801,6 +814,8 @@ The last parameter (patterns) allow you to add verification of data values follo
|
|
|
801
814
|
Valid patterns:
|
|
802
815
|
- a regular expression
|
|
803
816
|
- any string_pattern, more info: string_pattern project: https://github.com/MarioRuiz/string_pattern
|
|
817
|
+
- array of a string_pattern:
|
|
818
|
+
- [ :'10-20:L' ]
|
|
804
819
|
- Boolean: specifying Boolean will check if the value is TrueClass or FalseClass
|
|
805
820
|
- ranges: Any kind of numeric ranges, for example:
|
|
806
821
|
- 10..400
|
data/lib/nice/hash/generate.rb
CHANGED
|
@@ -111,13 +111,24 @@ class NiceHash
|
|
|
111
111
|
end
|
|
112
112
|
elsif value.kind_of?(Array)
|
|
113
113
|
array_pattern = false
|
|
114
|
-
value.
|
|
114
|
+
if value.size == 1
|
|
115
|
+
v = value[0]
|
|
115
116
|
if (v.kind_of?(String) or v.kind_of?(Symbol)) and StringPattern.analyze(v, silent: true).kind_of?(StringPattern::Pattern)
|
|
116
|
-
hashv[key] =
|
|
117
|
+
hashv[key] = []
|
|
118
|
+
(rand(5)+1).times do
|
|
119
|
+
hashv[key]<<StringPattern.generate(v, expected_errors: expected_errors)
|
|
120
|
+
end
|
|
117
121
|
array_pattern = true
|
|
118
|
-
break
|
|
119
122
|
end
|
|
120
|
-
|
|
123
|
+
else
|
|
124
|
+
value.each { |v|
|
|
125
|
+
if (v.kind_of?(String) or v.kind_of?(Symbol)) and StringPattern.analyze(v, silent: true).kind_of?(StringPattern::Pattern)
|
|
126
|
+
hashv[key] = StringPattern.generate(value, expected_errors: expected_errors)
|
|
127
|
+
array_pattern = true
|
|
128
|
+
break
|
|
129
|
+
end
|
|
130
|
+
}
|
|
131
|
+
end
|
|
121
132
|
unless array_pattern
|
|
122
133
|
value_ret = Array.new
|
|
123
134
|
value.each { |v|
|
data/lib/nice/hash/validate.rb
CHANGED
|
@@ -93,10 +93,18 @@ class NiceHash
|
|
|
93
93
|
results[key] = false unless value.to_s == values[key].to_s
|
|
94
94
|
end
|
|
95
95
|
elsif value.kind_of?(Range)
|
|
96
|
-
if
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
if value.size.to_s == 'Infinity'
|
|
97
|
+
if values[key].class != value.first.class
|
|
98
|
+
results[key] = false
|
|
99
|
+
elsif values[key] < value.first
|
|
100
|
+
results[key] = false
|
|
101
|
+
end
|
|
102
|
+
else
|
|
103
|
+
if values[key].class != value.first.class or values[key].class != value.last.class
|
|
104
|
+
results[key] = false
|
|
105
|
+
elsif values[key] < value.first or values[key] > value.last
|
|
106
|
+
results[key] = false
|
|
107
|
+
end
|
|
100
108
|
end
|
|
101
109
|
elsif value.kind_of?(Class) and value == DateTime
|
|
102
110
|
if values[key].is_a?(String) and values[key].size == 24
|
|
@@ -118,8 +126,19 @@ class NiceHash
|
|
|
118
126
|
complex_data = false
|
|
119
127
|
value.each { |v|
|
|
120
128
|
if (v.kind_of?(String) or v.kind_of?(Symbol)) and StringPattern.analyze(v, silent: true).kind_of?(StringPattern::Pattern)
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
if value.is_a?(Array) and value.size == 1 and values[key].is_a?(Array)
|
|
130
|
+
results[key] ||= []
|
|
131
|
+
values[key].each do |vk|
|
|
132
|
+
res = StringPattern.validate(pattern: value[0], text: vk)
|
|
133
|
+
results[key] << res
|
|
134
|
+
end
|
|
135
|
+
if results[key].flatten.size == 0
|
|
136
|
+
results.delete(key)
|
|
137
|
+
end
|
|
138
|
+
else
|
|
139
|
+
res = StringPattern.validate(pattern: value, text: values[key])
|
|
140
|
+
results[key] = res if res == false
|
|
141
|
+
end
|
|
123
142
|
array_pattern = true
|
|
124
143
|
break
|
|
125
144
|
elsif v.kind_of?(Hash) or v.kind_of?(Array) or v.kind_of?(Struct)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nice_hash
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.16.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mario Ruiz
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-05-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: string_pattern
|
|
@@ -19,7 +19,7 @@ dependencies:
|
|
|
19
19
|
version: '2.2'
|
|
20
20
|
- - ">="
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: 2.2.
|
|
22
|
+
version: 2.2.2
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -29,7 +29,7 @@ dependencies:
|
|
|
29
29
|
version: '2.2'
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 2.2.
|
|
32
|
+
version: 2.2.2
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
34
|
name: rspec
|
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|