nice_hash 1.6.0 → 1.7.1

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
  SHA256:
3
- metadata.gz: 11278d36028f833bcc7ef1265fb425112268758fce86f8743033b86923c7545d
4
- data.tar.gz: 6dbc2c7f4f37149b3c79dd00b78df5e411c2d4971cda3a61e79408431012c287
3
+ metadata.gz: 64a7a0508b0a8452ff40d40be3d5d947bdeb17abb33e29bcc21ab85f2d59ccb4
4
+ data.tar.gz: 17efe9a0977fbec3eb5aca744474791627daac82aac02c7db4cd99f16f9b7540
5
5
  SHA512:
6
- metadata.gz: f3b417fabc190632e5910e68ecdb1d80192e0bc25889a16546f263ba6421c675431fe7df1e74cf23e91402e78dd13467e082af1dee7c43b776a35a9e779b411d
7
- data.tar.gz: 5e5a0aa355c5552b0febe04d611622e0d57e51e68fd93eecc7bef40504548260b62ee0d159448bac5030c48347430be434bd7bda125947c028eb566ef5bcccb7
6
+ metadata.gz: 721bcb361f65bf07618a17501aa4fa62808cc87a6f824d7219fe69bf408f48d5126d8d94969438014dcfcee0590cb64916cb1858cb9a40b03ba446aa9519aa33
7
+ data.tar.gz: 686843fbedb61d5380182d0aeb18af8481d7380830cea2a701429c53b025486e606aecf059547cba4ab175fc20c74a4e2642a88d976f469533f36d77b53eca83
data/README.md CHANGED
@@ -374,7 +374,7 @@ pattern_fields_on_correct contains:
374
374
  ```
375
375
 
376
376
 
377
- #### dig and bury Hash methods
377
+ ### dig and bury Hash methods
378
378
  In case you want to access the values on a hash structure by using the key array location, you can use the 'dig' method on the Hash class:
379
379
 
380
380
  ```ruby
@@ -539,7 +539,7 @@ Take a look at a full example: https://gist.github.com/MarioRuiz/824d7a462b62fd8
539
539
 
540
540
  ### Adding other values on real time when calling `generate` method
541
541
 
542
- If you need a value to be supplied for your key on real time everytime you call the `generate` method you can use `lambda`
542
+ If you need a value to be supplied for your key on real time every time you call the `generate` method you can use `lambda`
543
543
 
544
544
  ```ruby
545
545
  my_hash = {
@@ -570,8 +570,47 @@ This is the output:
570
570
  :other=>"2019-01-02T13:41:05.536"}
571
571
  ```
572
572
 
573
+ #### Accessing other values of the hash on real time
573
574
 
574
- #### Other useful methods
575
+ If you need for example to access another value of the key to generate a value on real time you can use `NiceHash.values`
576
+
577
+ Take a look at this example:
578
+
579
+ ```ruby
580
+
581
+ my_hash = {
582
+ loginname: :"10:Ln",
583
+ send_email: :"true|false",
584
+ email: lambda {
585
+ if NiceHash.values._send_email=='true'
586
+ :"30-50:@".gen
587
+ else
588
+ ""
589
+ end
590
+ }
591
+ }
592
+
593
+ pp my_hash.gen
594
+ pp my_hash.gen
595
+ pp my_hash.gen
596
+
597
+ ```
598
+
599
+ This code will generate a hash where `send_email` can be `true` or `false`. In case it is `true` it will generate a value for the key `email` from 30 to 50 characters valid email, in case it is `false` it will contain empty string.
600
+
601
+ This is a possible output of the previous code:
602
+
603
+ ```ruby
604
+ {:loginname=>"jnazA9iGN3",
605
+ :send_email=>"true",
606
+ :email=>"aRR4SsPaA.0ilh_RW0_y.sQL@goxrssgtkp4df.nkc"}
607
+
608
+ {:loginname=>"2CjT9wLMxq", :send_email=>"false", :email=>""}
609
+
610
+ {:loginname=>"XlMpgNPlLR", :send_email=>"false", :email=>""}
611
+ ```
612
+
613
+ ### Other useful methods
575
614
 
576
615
  In case you need the time stamp, we added the method `stamp` to the `Time` class
577
616
 
@@ -118,10 +118,10 @@ end
118
118
 
119
119
 
120
120
  class Time
121
- # It will return in the format: '%Y-%m-%dT%H:%M:%S.%L'
121
+ # It will return in the format: '%Y-%m-%dT%H:%M:%S.%LZ'
122
122
  # Example: puts Time.now.stamp
123
123
  def stamp
124
- return self.strftime('%Y-%m-%dT%H:%M:%S.%L')
124
+ return self.strftime('%Y-%m-%dT%H:%M:%S.%LZ')
125
125
  end
126
126
  end
127
127
 
@@ -27,6 +27,10 @@ require 'string_pattern'
27
27
  # }
28
28
  ###########################################################################
29
29
  class NiceHash
30
+ class << self
31
+ attr_reader :values
32
+ end
33
+ @values = {}
30
34
 
31
35
  ###########################################################################
32
36
  # It will filter the hash by the key specified on select_hash_key.
@@ -44,7 +48,7 @@ class NiceHash
44
48
  # new_hash = my_hash.select_key(:wrong)
45
49
  ###########################################################################
46
50
  def NiceHash.select_key(pattern_hash, select_hash_key)
47
- hash=Hash.new()
51
+ hashv=Hash.new()
48
52
 
49
53
  if pattern_hash.kind_of?(Hash) and pattern_hash.size>0
50
54
  pattern_hash.each {|key, value|
@@ -60,7 +64,7 @@ class NiceHash
60
64
  array_pattern=false
61
65
  value.each {|v|
62
66
  if (v.kind_of?(String) or v.kind_of?(Symbol)) and StringPattern.analyze(v, silent: true).kind_of?(StringPattern::Pattern)
63
- hash[key]=value
67
+ hashv[key]=value
64
68
  array_pattern=true
65
69
  break
66
70
  end
@@ -71,16 +75,16 @@ class NiceHash
71
75
  ret=NiceHash.select_key(v, select_hash_key)
72
76
  value_ret<<ret
73
77
  }
74
- hash[key]=value_ret
78
+ hashv[key]=value_ret
75
79
  end
76
80
  else
77
- hash[key]=value
81
+ hashv[key]=value
78
82
  end
79
83
  }
80
84
  else
81
85
  return pattern_hash
82
86
  end
83
- return hash
87
+ return hashv
84
88
  end
85
89
 
86
90
  ###########################################################################
@@ -296,7 +300,7 @@ class NiceHash
296
300
  # new_hash = my_hash.generate(:correct, errors: [:min_length])
297
301
  ###########################################################################
298
302
  def NiceHash.generate(pattern_hash, select_hash_key=nil, expected_errors: [], **synonyms)
299
- hash=Hash.new()
303
+ hashv=Hash.new()
300
304
  same_values=Hash.new()
301
305
  expected_errors=synonyms[:errors] if synonyms.keys.include?(:errors)
302
306
  if expected_errors.kind_of?(Symbol)
@@ -321,45 +325,45 @@ class NiceHash
321
325
 
322
326
  if value.kind_of?(String) or value.kind_of?(Symbol)
323
327
  if ((StringPattern.optimistic and value.kind_of?(String)) or value.kind_of?(Symbol)) and value.to_s.scan(/^!?\d+-?\d*:.+/).size>0
324
- hash[key]=StringPattern.generate(value, expected_errors: expected_errors)
328
+ hashv[key]=StringPattern.generate(value, expected_errors: expected_errors)
325
329
  elsif ((StringPattern.optimistic and value.kind_of?(String)) or value.kind_of?(Symbol)) and value.to_s.scan(/^([\w\s\-]+\|)+[\w\s\-]+$/).size>0
326
330
  if expected_errors.include?(:min_length) or (expected_errors.include?(:length) and rand.round==0)
327
331
  min=value.to_s.split("|").min {|a, b| a.size <=> b.size}
328
- hash[key]=min[0..-2] unless min==""
332
+ hashv[key]=min[0..-2] unless min==""
329
333
  end
330
- if !hash.keys.include?(key) and (expected_errors.include?(:max_length) or expected_errors.include?(:length))
334
+ if !hashv.keys.include?(key) and (expected_errors.include?(:max_length) or expected_errors.include?(:length))
331
335
  max=value.to_s.split("|").max {|a, b| a.size <=> b.size}
332
- hash[key]=max+max[-1]
336
+ hashv[key]=max+max[-1]
333
337
  end
334
338
  if expected_errors.include?(:value) or
335
339
  expected_errors.include?(:string_set_not_allowed) or
336
340
  expected_errors.include?(:required_data)
337
- if hash.keys.include?(key)
338
- v=hash[key]
341
+ if hashv.keys.include?(key)
342
+ v=hashv[key]
339
343
  else
340
344
  v=value.to_s.split("|").sample
341
345
  end
342
346
  unless expected_errors.include?(:string_set_not_allowed)
343
347
  v=StringPattern.generate(:"#{v.size}:[#{value.to_s.split("|").join.split(//).uniq.join}]")
344
- hash[key]=v unless value.to_s.split("|").include?(v)
348
+ hashv[key]=v unless value.to_s.split("|").include?(v)
345
349
  end
346
- unless hash.keys.include?(key)
350
+ unless hashv.keys.include?(key)
347
351
  one_wrong_letter=StringPattern.generate(:"1:LN$[%#{value.to_s.split("|").join.split(//).uniq.join}%]")
348
352
  v[rand(v.size)]=one_wrong_letter
349
- hash[key]=v unless value.to_s.split("|").include?(v)
353
+ hashv[key]=v unless value.to_s.split("|").include?(v)
350
354
  end
351
355
  end
352
- unless hash.keys.include?(key)
353
- hash[key]=value.to_s.split("|").sample
356
+ unless hashv.keys.include?(key)
357
+ hashv[key]=value.to_s.split("|").sample
354
358
  end
355
359
  else
356
- hash[key]=value
360
+ hashv[key]=value
357
361
  end
358
362
  elsif value.kind_of?(Array)
359
363
  array_pattern=false
360
364
  value.each {|v|
361
365
  if (v.kind_of?(String) or v.kind_of?(Symbol)) and StringPattern.analyze(v, silent: true).kind_of?(StringPattern::Pattern)
362
- hash[key]=StringPattern.generate(value, expected_errors: expected_errors)
366
+ hashv[key]=StringPattern.generate(value, expected_errors: expected_errors)
363
367
  array_pattern=true
364
368
  break
365
369
  end
@@ -371,24 +375,26 @@ class NiceHash
371
375
  ret=v if ret.kind_of?(Hash) and ret.size==0
372
376
  value_ret<<ret
373
377
  }
374
- hash[key]=value_ret
378
+ hashv[key]=value_ret
375
379
  end
376
380
  elsif value.kind_of?(Proc)
377
- hash[key]=value.call
381
+ hashv[key]=value.call
378
382
  else
379
- hash[key]=value
383
+ hashv[key]=value
380
384
  end
381
385
 
382
386
  if same_values.include?(key)
383
387
  same_values[key].each {|k|
384
- hash[k]=hash[key]
388
+ hashv[k]=hashv[key]
385
389
  }
386
390
  end
387
391
 
392
+ @values = hashv
393
+
388
394
  }
389
395
  end
390
396
 
391
- return hash
397
+ return hashv
392
398
  end
393
399
 
394
400
 
@@ -586,7 +592,7 @@ class NiceHash
586
592
  # Get values from the Hash structure (array of Hashes allowed)
587
593
  # In case the key supplied doesn't exist in the hash then it will be return nil for that one
588
594
  # input:
589
- # hash: a simple hash or a hash containing arrays. Example:
595
+ # hashv: a simple hash or a hash containing arrays. Example:
590
596
  # example={"id"=>344,
591
597
  # "customer"=>{
592
598
  # "name"=>"Peter Smith",
@@ -607,7 +613,7 @@ class NiceHash
607
613
  # {"idt"=>[345,3123,3145]}
608
614
  #
609
615
  ####################################################
610
- def NiceHash.get_values(hash,keys)
616
+ def NiceHash.get_values(hashv,keys)
611
617
  if keys.kind_of?(String) or keys.kind_of?(Symbol) then
612
618
  keys=[keys]
613
619
  end
@@ -616,8 +622,8 @@ class NiceHash
616
622
  keys.each {|key|
617
623
  number_of_results[key]=0
618
624
  }
619
- if hash.kind_of?(Array) then
620
- hash.each {|tmp|
625
+ if hashv.kind_of?(Array) then
626
+ hashv.each {|tmp|
621
627
  if tmp.kind_of?(Array) or tmp.kind_of?(Hash) then
622
628
  n_result=get_values(tmp, keys)
623
629
  if n_result!=:error then
@@ -644,8 +650,8 @@ class NiceHash
644
650
  end
645
651
  end
646
652
  }
647
- elsif hash.kind_of?(Hash) then
648
- hash.each {|key, value|
653
+ elsif hashv.kind_of?(Hash) then
654
+ hashv.each {|key, value|
649
655
  #if keys.include?(key) then
650
656
  #added to be able to access the keys with symbols to strings and opposite
651
657
  if keys.include?(key) or keys.include?(key.to_s) or keys.include?(key.to_sym) then
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.6.0
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-02 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: string_pattern
@@ -52,7 +52,7 @@ homepage: https://github.com/MarioRuiz/nice_hash
52
52
  licenses:
53
53
  - MIT
54
54
  metadata: {}
55
- post_install_message:
55
+ post_install_message: Thanks for installing! Visit us on https://github.com/MarioRuiz/nice_hash
56
56
  rdoc_options: []
57
57
  require_paths:
58
58
  - lib