confmaker 0.0.1 → 0.0.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: 534f3991463e68b2d66789040ff5cf9695c186a7
4
- data.tar.gz: 12c6f1b4f3254983b77a4622a9a75f573e54bdb2
3
+ metadata.gz: 4cb6afaa64af62710ff04a2e4ddffc46ec102a23
4
+ data.tar.gz: 4ba93a34edf2119d2235c3d79ae2f42762c1b2ad
5
5
  SHA512:
6
- metadata.gz: 87186cc6880ccbafb8f239cc0f1dfbbde7a5b56465bc78bc9894e570bebcb557b9d79ed32af6bba7157ee985cced3d2292fab17a5fa9ae08dda296964af0d548
7
- data.tar.gz: d318623fd286aaba1f3ed7e6b0f0f024fccfa393fec56fe4d8fbc32b4938c3c401c6147bb5c3dab48cc1840c418fa293274338726e6e06036f43e45d46772e5a
6
+ metadata.gz: 8480e97698069eae0eeaa900cc464483a65546c5f8552f23158c0f04720ab52f458ad304a462f3f898d81b3e9d622c87c23bc7568a782fd0f6f488c67c6b31a7
7
+ data.tar.gz: 91b736ad29e7b153925389757471a32df77621f56347db96500f80ae0749408581041a4007351c6a24ec3d65e2c0dee3e93b8f6da18d717d511eb83da9beb08d
data/lib/confoptions.rb CHANGED
@@ -1,25 +1,37 @@
1
1
  module ConfOptions
2
+ #Most common option. Only custom validator and getter supports
2
3
  class Standard < Hash
3
4
  def initialize init_hash
4
5
  merge! init_hash
5
6
  end
7
+ #return [name, value] pair
6
8
  def to_pair
7
9
  [self[:name],self[:value]]
8
10
  end
11
+ #parse otion into some (hash most likely) by using getter Proc
9
12
  def get
10
13
  if self[:getter].is_a? Proc
11
14
  self[:getter].call self
12
- else
15
+ elsif (private_methods + methods).include? :default_getter
13
16
  default_getter
17
+ else
18
+ fallback_getter
14
19
  end
15
20
  end
21
+ #human readable representation
16
22
  def to_s
17
23
  get.collect { |k,v|
18
24
  k.to_s.capitalize.gsub('_',' ') + ': ' + v.to_s
19
25
  }.join "\n"
20
26
  end
27
+ private
28
+ #getter in noone defined
29
+ def fallback_getter
30
+ [to_pair].to_h
31
+ end
21
32
  end
22
33
  class String < Standard
34
+ #Validate :value by :validator Proc + default validator for String
23
35
  def validate! context = ConfSources::Default.new
24
36
  self[:validator].call(self,context) if self[:validator].is_a? Proc
25
37
  default_validator if self[:check_regexp]
@@ -30,13 +42,15 @@ module ConfOptions
30
42
  elsif self[:env_names].is_a? ::Array and self[:check_regexp].is_a? Regexp
31
43
  default_getter
32
44
  else
33
- [ to_pair ].to_h
45
+ fallback_getter
34
46
  end
35
47
  end
36
48
  private
49
+ #split value into matches by using check_regexp and map it into env_names if both defined
37
50
  def default_getter
38
51
  (self[:env_names].zip (self[:check_regexp].match self[:value]).to_a).to_h
39
52
  end
53
+ #Basic class and check_regexp checks
40
54
  def default_validator
41
55
  raise RuntimeError, "Option #{self[:name]} become #{self[:value].class} during validation" unless self[:value].is_a? ::String or self[:value].kind_of? Numeric
42
56
  raise ArgumentError, "#{self[:desc]} (#{self[:value].to_s}) must satisfy #{self[:check_regexp].to_s}" unless
@@ -48,9 +62,6 @@ module ConfOptions
48
62
  default_validator
49
63
  self[:validator].call(self,context) if self[:validator].is_a? Proc
50
64
  end
51
- def to_s
52
- (self[:env_name] ? self[:env_name] : self[:name] ).to_s.capitalize.gsub('_',' ') + ': ' + self[:value].to_s
53
- end
54
65
  private
55
66
  def default_getter
56
67
  { (self[:env_name] ? self[:env_name] : self[:name] ) => (self[:value] ? "true" : "") }
data/lib/confsources.rb CHANGED
@@ -41,9 +41,15 @@ module ConfSources
41
41
  el.validate! Clone.new(self)
42
42
  }
43
43
  end
44
+ #array of option hashes (including names, desc and so on)
44
45
  def to_a
45
46
  @options.collect{ |opt| opt.to_h }
46
47
  end
48
+ #hash with parsed values
49
+ def to_h
50
+ @options.inject({}){|rez,opt| rez.merge opt.get}
51
+ end
52
+ #:name => :value hash
47
53
  def to_pairs
48
54
  @options.collect{ |opt| opt.to_pair }.to_h
49
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confmaker
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
  - nothing
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-28 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -55,5 +55,5 @@ rubyforge_project:
55
55
  rubygems_version: 2.5.2
56
56
  signing_key:
57
57
  specification_version: 4
58
- summary: Your utility configuration maker
58
+ summary: Configuration maker for your utility
59
59
  test_files: []