config_layers 0.1.1 → 0.1.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: 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