config_layers 0.1.1 → 0.1.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: ba7a432fca427d87b73206a452f4cad5e646de09
4
- data.tar.gz: 86ec483949c57c2c33a5cd5f13c6ddf3904e7f91
3
+ metadata.gz: 09de39566647f0ec53aeb3241730de770fbe6991
4
+ data.tar.gz: b72fa67b9d02647fac54bd0cc21dafbc8161d511
5
5
  SHA512:
6
- metadata.gz: 788f88c57145a06f88637d15bc71bb8f21a507921233c9ce52c2a1e6abf84956ed50c2e956311cba38a52a001301a609302df0c8c30cded68376d83547548f02
7
- data.tar.gz: 196d113fb3f9b70e2a9023be54e1c6ecce4a7077fc5564a66b30dc87fe7cf98c172e3248c0fc3663e75bdd9122b71f3a6b4592bace9039377eeff5cc5b8dd50b
6
+ metadata.gz: a4e778e5a67f2674a065927caea04b9c48006168065da28bfc8d421a8d38c49c99f31d9337966a53ae9db3fa56458fca570f87267b5cd7547b3f2010172f9bf3
7
+ data.tar.gz: 8cdd444889903b37247d4d0127e56736846d10a6b78124637b14e0766b147d29ccc6879a0c3b01e66aa30f74f3dc836bc4e5e796b8e2259f5af52f684e03cc0a
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_runtime_dependency "subhash", '~> 0.1.0'
22
+ spec.add_runtime_dependency "subhash", '~> 0.1.1'
23
23
  spec.add_runtime_dependency "pry"
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.9"
@@ -1,5 +1,5 @@
1
1
  # Config Layers
2
2
  module ConfigLayers
3
- VERSION = '0.1.1'
4
- DATE = '2015-04-21'
3
+ VERSION = '0.1.2'
4
+ DATE = '2015-05-11'
5
5
  end
@@ -211,7 +211,10 @@ module PRC
211
211
 
212
212
  result = result.rh_merge(layer[:config][keys[0..-2]])
213
213
  end
214
- result[keys[-1]]
214
+
215
+ res = result[keys[-1]]
216
+ return res.merge_cleanup if [Array, Hash].include?(res.class)
217
+ res
215
218
  end
216
219
 
217
220
  # Return true if at least the first key value found is of type Hash/Array,
@@ -600,6 +603,72 @@ module PRC
600
603
 
601
604
  config_layers[0][:config].save
602
605
  end
606
+
607
+ # This function add a config layer at runtime.
608
+ # The new layer added at runtime, can be removed at runtime
609
+ # with layer_remove
610
+ # The name MUST be different than other existing config layer names
611
+ # This function is typically used by a Child Class or #layer_add.
612
+ #
613
+ # *Args*
614
+ # - +options+ : Hash data
615
+ # - :name : Required. Name of the layer to add
616
+ # - :index : Config position to use. 0 is the default. 0 is the first
617
+ # Config layer use by get.
618
+ # - :config : A Config instance of class type PRC::BaseConfig
619
+ # - :set : Boolean. True if is authorized to set a variable.
620
+ # - :load : Boolean. True if is authorized to load from a file.
621
+ # - :save : Boolean. True if is authorized to save to a file.
622
+ # - :file_set : Boolean. True if is authorized to change the file name.
623
+ #
624
+ # *returns*
625
+ # - true if layer is added.
626
+ # OR
627
+ # - nil : if layer name already exist
628
+ def p_layer_add(options)
629
+ layer = CoreConfig.define_layer(options)
630
+
631
+ layer[:init] = false # Runtime layer
632
+
633
+ index = 0
634
+ index = options[:index] if options[:index].is_a?(Fixnum)
635
+ names = []
636
+ @config_layers.each { |alayer| names << alayer[:name] }
637
+
638
+ return nil if names.include?(layer[:name])
639
+ @config_layers.insert(index, layer)
640
+ true
641
+ end
642
+
643
+ # Function to remove a runtime layer.
644
+ # You cannot remove a predefined layer, created during CoreConfig
645
+ # instanciation.
646
+ # This function is typically used by a Child Class or #layer_remove.
647
+ #
648
+ # *Args*
649
+ # - +options+ : Hash data
650
+ # - +:name+ : Name of the layer to remove.
651
+ # - +:index+: Index of the layer to remove.
652
+ #
653
+ # At least, :name or :index is required.
654
+ # If both; :name and :index are set, :name is used.
655
+ # *return*
656
+ # - true if layer name is removed.
657
+ # OR
658
+ # - nil : if not found or invalid.
659
+ def p_layer_remove(options)
660
+ index = layer_index(options[:name])
661
+ index = options[:index] if index.nil?
662
+
663
+ return nil if index.nil?
664
+
665
+ layer = @config_layers[index]
666
+
667
+ return nil if layer.nil? || layer[:init]
668
+
669
+ @config_layers.delete_at(index)
670
+ true
671
+ end
603
672
  end
604
673
 
605
674
  # private functions usable by child classes
@@ -662,66 +731,23 @@ module PRC
662
731
  end
663
732
 
664
733
  # This function add a config layer at runtime.
665
- # The new layer added at runtime, can be removed at runtime
666
- # with layer_remove
667
- # The name MUST be different than other existing config layer names
668
734
  #
669
- # *Args*
670
- # - +options+ : Hash data
671
- # - :name : Required. Name of the layer to add
672
- # - :index : Config position to use. 0 is the default. 0 is the first
673
- # Config layer use by get.
674
- # - :config : A Config instance of class type PRC::BaseConfig
675
- # - :set : Boolean. True if is authorized to set a variable.
676
- # - :load : Boolean. True if is authorized to load from a file.
677
- # - :save : Boolean. True if is authorized to save to a file.
678
- # - :file_set : Boolean. True if is authorized to change the file name.
735
+ # It call an internal private function #p_layer_add
736
+ # which can be used by redefined in Child class.
679
737
  #
680
- # *returns*
681
- # - true if layer is added.
682
- # OR
683
- # - nil : if layer name already exist
738
+ # For options and details, see #p_layer_add
684
739
  def layer_add(options)
685
- layer = CoreConfig.define_layer(options)
686
-
687
- layer[:init] = false # Runtime layer
688
-
689
- index = 0
690
- index = options[:index] if options[:index].is_a?(Fixnum)
691
- names = []
692
- @config_layers.each { |alayer| names << alayer[:name] }
693
-
694
- return nil if names.include?(layer[:name])
695
- @config_layers.insert(index, layer)
696
- true
740
+ p_layer_add(options)
697
741
  end
698
742
 
699
743
  # Function to remove a runtime layer.
700
- # You cannot remove a predefined layer, created during CoreConfig
701
- # instanciation.
702
- # *Args*
703
- # - +options+ : Hash data
704
- # - +:name+ : Name of the layer to remove.
705
- # - +:index+: Index of the layer to remove.
706
744
  #
707
- # At least, :name or :index is required.
708
- # If both; :name and :index are set, :name is used.
709
- # *return*
710
- # - true if layer name is removed.
711
- # OR
712
- # - nil : if not found or invalid.
745
+ # It call an internal private function #p_layer_remove
746
+ # which can be used by redefined in Child class.
747
+ #
748
+ # For options and details, see #p_layer_remove
713
749
  def layer_remove(options)
714
- index = layer_index(options[:name])
715
- index = options[:index] if index.nil?
716
-
717
- return nil if index.nil?
718
-
719
- layer = @config_layers[index]
720
-
721
- return nil if layer.nil? || layer[:init]
722
-
723
- @config_layers.delete_at(index)
724
- true
750
+ p_layer_remove(options)
725
751
  end
726
752
 
727
753
  # Function to define layer options.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config_layers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christophe Larsonneur
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-21 00:00:00.000000000 Z
11
+ date: 2015-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: subhash
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.0
19
+ version: 0.1.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.0
26
+ version: 0.1.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry
29
29
  requirement: !ruby/object:Gem::Requirement