rsettings 0.5.0 → 0.6.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.
@@ -1,14 +1,14 @@
1
- class EnvironmentSettings
2
- require "audible"; include Audible;
3
-
4
- def get(name)
5
- v = ENV[name.value.to_s]
6
- Setting.new(v).tap{|it| notify_missing(name) if it.missing?}
7
- end
8
-
9
- private
10
-
11
- def notify_missing(name)
12
- notify :missing, name
13
- end
14
- end
1
+ class EnvironmentSettings
2
+ require "audible"; include Audible;
3
+
4
+ def get(name)
5
+ v = ENV[name.value.to_s]
6
+ Setting.new(v).tap{|it| notify_missing(name) if it.missing?}
7
+ end
8
+
9
+ private
10
+
11
+ def notify_missing(name)
12
+ notify :missing, name
13
+ end
14
+ end
@@ -1,20 +1,26 @@
1
- class Defaults
2
- def initialize(names)
3
- @names = names
4
- end
5
-
6
- def get(setting)
7
- real_name = @names.reverse_for setting
8
- Setting.new defaults[real_name]
9
- end
10
-
11
- def add(name, value)
12
- defaults[name] = value
13
- end
14
-
15
- def any?; false == defaults.empty? end
16
-
17
- private
18
-
19
- def defaults; @defaults ||= {}; end
20
- end
1
+ class Defaults
2
+ def initialize(names)
3
+ @names = names
4
+ end
5
+
6
+ def get(setting)
7
+ real_name = @names.reverse_for setting
8
+ Setting.new defaults[real_name]
9
+ end
10
+
11
+ def add(name, value)
12
+ defaults[name] = value
13
+ end
14
+
15
+ def any?; false == defaults.empty? end
16
+
17
+ def inspect
18
+ defaults.map do |k,v|
19
+ "setting <#{k}> defaults to <#{v}>"
20
+ end.join "\n"
21
+ end
22
+
23
+ private
24
+
25
+ def defaults; @defaults ||= {}; end
26
+ end
@@ -1,18 +1,18 @@
1
- class SettingsChain
2
- def initialize(*links)
3
- @settings = *links.flatten
4
- end
5
-
6
- def link(link)
7
- @settings << link
8
- end
9
-
10
- def get(name)
11
- @settings.each do |setting|
12
- result = setting.get(name)
13
- return result unless result.missing?
14
- end
15
-
16
- Setting.new nil
17
- end
18
- end
1
+ class SettingsChain
2
+ def initialize(*links)
3
+ @settings = *links.flatten
4
+ end
5
+
6
+ def link(link)
7
+ @settings << link
8
+ end
9
+
10
+ def get(name)
11
+ @settings.each do |setting|
12
+ result = setting.get(name)
13
+ return result unless result.missing?
14
+ end
15
+
16
+ Setting.new nil
17
+ end
18
+ end
@@ -1,41 +1,45 @@
1
- class SettingsConfiguration
2
- attr_reader :missing, :settings, :names
3
-
4
- def initialize(&block)
5
- @names = Names.new
6
- @defaults = Defaults.new @names
7
- @settings = EnvironmentSettings.new
8
-
9
- instance_exec &block if block_given?
10
-
11
- @settings = SettingsChain.new(@settings).tap do |it|
12
- it.link @defaults if defaults?
13
- it.link tail
14
- end
15
- end
16
-
17
- def let(opts = {})
18
- @names.add opts
19
- end
20
-
21
- def default(name, opts = {})
22
- fail "Expected the :to option so I can tell what the default value is" unless opts[:to]
23
- @defaults.add name, opts[:to]
24
- end
25
-
26
- def when_missing(type)
27
- @tail = IgnoreMissing if type === :ignore
28
- end
29
-
30
- def with_settings(opts={})
31
- @settings = opts.is_a?(Hash) ? SettingsChain.new(opts[:chain].map{|it| it.new}) : opts.new
32
- end
33
-
34
- private
35
-
36
- def tail
37
- @tail || FailOnMissing
38
- end
39
-
40
- def defaults?; @defaults.any? end
41
- end
1
+ class SettingsConfiguration
2
+ attr_reader :missing, :settings, :names
3
+
4
+ def initialize(&block)
5
+ @names = Names.new
6
+ @defaults = Defaults.new @names
7
+ @settings = EnvironmentSettings.new
8
+
9
+ instance_exec &block if block_given?
10
+
11
+ @settings = SettingsChain.new(@settings).tap do |it|
12
+ it.link @defaults if defaults?
13
+ it.link tail
14
+ end
15
+ end
16
+
17
+ def inspect
18
+ [@defaults.inspect, @names.inspect].join "\n"
19
+ end
20
+
21
+ def let(opts = {})
22
+ @names.add opts
23
+ end
24
+
25
+ def default(name, opts = {})
26
+ fail "Expected the :to option so I can tell what the default value is" unless opts[:to]
27
+ @defaults.add name, opts[:to]
28
+ end
29
+
30
+ def when_missing(type)
31
+ @tail = IgnoreMissing if type === :ignore
32
+ end
33
+
34
+ def with_settings(opts={})
35
+ @settings = opts.is_a?(Hash) ? SettingsChain.new(opts[:chain].map{|it| it.new}) : opts.new
36
+ end
37
+
38
+ private
39
+
40
+ def tail
41
+ @tail || FailOnMissing
42
+ end
43
+
44
+ def defaults?; @defaults.any? end
45
+ end
@@ -1,15 +1,15 @@
1
- module Missing
2
- def get(name)
3
- Setting.new nil
4
- end
5
- end
6
-
7
- class IgnoreMissing
8
- extend Missing
9
- end
10
-
11
- class FailOnMissing
12
- class << self
13
- def get(name); fail "Setting <#{name.value}> not found"; end
14
- end
15
- end
1
+ module Missing
2
+ def get(name)
3
+ Setting.new nil
4
+ end
5
+ end
6
+
7
+ class IgnoreMissing
8
+ extend Missing
9
+ end
10
+
11
+ class FailOnMissing
12
+ class << self
13
+ def get(name); fail "Setting <#{name.value}> not found"; end
14
+ end
15
+ end
@@ -1,21 +1,27 @@
1
- class Names
2
- require "audible"; include Audible
3
-
4
- def initialize
5
- @opts = {}
6
- end
7
-
8
- def add(opts={})
9
- notify :adding, opts
10
- @opts.merge!(opts.invert)
11
- end
12
-
13
- def for(setting)
14
- notify :finding, setting
15
- @opts[setting.to_s] || @opts[setting.to_sym] || setting
16
- end
17
-
18
- def reverse_for(name)
19
- @opts.invert[name.value] || name.value
20
- end
21
- end
1
+ class Names
2
+ require "audible"; include Audible
3
+
4
+ def initialize
5
+ @opts = {}
6
+ end
7
+
8
+ def add(opts={})
9
+ notify :adding, opts
10
+ @opts.merge!(opts.invert)
11
+ end
12
+
13
+ def for(setting)
14
+ notify :finding, setting
15
+ @opts[setting.to_s] || @opts[setting.to_sym] || setting
16
+ end
17
+
18
+ def reverse_for(name)
19
+ @opts.invert[name.value] || name.value
20
+ end
21
+
22
+ def inspect
23
+ @opts.map do |k,v|
24
+ "setting <#{k}> is translated from <#{v}>"
25
+ end.join "\n"
26
+ end
27
+ end
@@ -1,29 +1,29 @@
1
- class RSettings
2
- require "audible"; include Audible
3
-
4
- def initialize(opts={})
5
- @settings,@names = opts[:settings],opts[:names]
6
- end
7
-
8
- def find(m)
9
- query = m.to_s.end_with? "?"
10
-
11
- m = m.to_s.delete "?" if query
12
-
13
- name = ConvertibleSettingName.new(@names, m)
14
-
15
- if query
16
- value = @settings.get(name)
17
-
18
- fail "Unable to convert setting <#{name.value}> to flag" unless value.truthy?
19
-
20
- return value.true?
21
- end
22
-
23
- notify :finding, m, name
24
-
25
- result = @settings.get(name)
26
-
27
- result.missing? ? nil : result.to_s
28
- end
29
- end
1
+ class RSettings
2
+ require "audible"; include Audible
3
+
4
+ def initialize(opts={})
5
+ @settings,@names = opts[:settings],opts[:names]
6
+ end
7
+
8
+ def find(m)
9
+ query = m.to_s.end_with? "?"
10
+
11
+ m = m.to_s.delete "?" if query
12
+
13
+ name = ConvertibleSettingName.new(@names, m)
14
+
15
+ if query
16
+ value = @settings.get(name)
17
+
18
+ fail "Unable to convert setting <#{name.value}> to flag" unless value.truthy?
19
+
20
+ return value.true?
21
+ end
22
+
23
+ notify :finding, m, name
24
+
25
+ result = @settings.get(name)
26
+
27
+ result.missing? ? nil : result.to_s
28
+ end
29
+ end
@@ -1,16 +1,16 @@
1
- class Setting
2
- def truthy?; @truthy; end
3
-
4
- def initialize(text="")
5
- @text = text
6
- @truthy = (text||"").downcase.match /(yes|no|on|off)/
7
- end
8
-
9
- def missing?; @text.nil?; end
10
-
11
- def to_s; @text.to_s; end
12
-
13
- def true?
14
- (@text||"").downcase.match /(yes|on)/
15
- end
16
- end
1
+ class Setting
2
+ def truthy?; @truthy; end
3
+
4
+ def initialize(text="")
5
+ @text = text
6
+ @truthy = (text||"").downcase.match /(yes|no|on|off)/
7
+ end
8
+
9
+ def missing?; @text.nil?; end
10
+
11
+ def to_s; @text.to_s; end
12
+
13
+ def true?
14
+ (@text||"").downcase.match /(yes|on)/
15
+ end
16
+ end
@@ -1,15 +1,15 @@
1
- class SettingName
2
- attr_reader :value
3
-
4
- def initialize(name)
5
- @value = name
6
- end
7
- end
8
-
9
- class ConvertibleSettingName
10
- def initialize(names, name)
11
- @name,@names = name,names
12
- end
13
-
14
- def value; @names.for @name; end
15
- end
1
+ class SettingName
2
+ attr_reader :value
3
+
4
+ def initialize(name)
5
+ @value = name
6
+ end
7
+ end
8
+
9
+ class ConvertibleSettingName
10
+ def initialize(names, name)
11
+ @name,@names = name,names
12
+ end
13
+
14
+ def value; @names.for @name; end
15
+ end
data/rsettings.gemspec CHANGED
@@ -1,79 +1,79 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
- # stub: rsettings 0.5.0 ruby lib
6
-
7
- Gem::Specification.new do |s|
8
- s.name = "rsettings"
9
- s.version = "0.5.0"
10
-
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.authors = ["Ben Biddington"]
13
- s.date = "2013-12-23"
14
- s.description = "Settings"
15
- s.email = "ben.biddington@gmail.com"
16
- s.extra_rdoc_files = [
17
- "LICENSE.txt",
18
- "README.md"
19
- ]
20
- s.files = [
21
- ".travis.yml",
22
- "Gemfile",
23
- "Gemfile.lock",
24
- "LICENSE.txt",
25
- "README.md",
26
- "Rakefile",
27
- "VERSION",
28
- "lib/rsettings.rb",
29
- "lib/rsettings/adapters/basic_disk_settings.rb",
30
- "lib/rsettings/adapters/environment_settings.rb",
31
- "lib/rsettings/core/internal/defaults.rb",
32
- "lib/rsettings/core/internal/settings_chain.rb",
33
- "lib/rsettings/core/internal/settings_configuration.rb",
34
- "lib/rsettings/core/missing.rb",
35
- "lib/rsettings/core/names.rb",
36
- "lib/rsettings/core/rsettings.rb",
37
- "lib/rsettings/core/setting.rb",
38
- "lib/rsettings/core/setting_name.rb",
39
- "rsettings.gemspec",
40
- "spec/integration.tests/adapters/basic_disk_settings_spec.rb",
41
- "spec/spec_helper.rb",
42
- "spec/system.tests/can_fall_back_to_file_settings_spec.rb",
43
- "spec/system.tests/can_provide_translations_spec.rb",
44
- "spec/system.tests/can_specify_flags_spec.rb",
45
- "spec/system.tests/can_supply_defaults_for_missing_settings_spec.rb",
46
- "spec/system.tests/can_use_env_spec.rb",
47
- "spec/system.tests/options_spec.rb"
48
- ]
49
- s.homepage = "http://github.com/ben-biddington/rsettings"
50
- s.licenses = ["MIT"]
51
- s.require_paths = ["lib"]
52
- s.rubygems_version = "2.1.11"
53
- s.summary = "Settings for ruby programs"
54
-
55
- if s.respond_to? :specification_version then
56
- s.specification_version = 4
57
-
58
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
- s.add_runtime_dependency(%q<audible>, [">= 0"])
60
- s.add_development_dependency(%q<rake>, [">= 0"])
61
- s.add_development_dependency(%q<rspec>, [">= 0"])
62
- s.add_development_dependency(%q<bundler>, [">= 0"])
63
- s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
64
- else
65
- s.add_dependency(%q<audible>, [">= 0"])
66
- s.add_dependency(%q<rake>, [">= 0"])
67
- s.add_dependency(%q<rspec>, [">= 0"])
68
- s.add_dependency(%q<bundler>, [">= 0"])
69
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
70
- end
71
- else
72
- s.add_dependency(%q<audible>, [">= 0"])
73
- s.add_dependency(%q<rake>, [">= 0"])
74
- s.add_dependency(%q<rspec>, [">= 0"])
75
- s.add_dependency(%q<bundler>, [">= 0"])
76
- s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
77
- end
78
- end
79
-
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "rsettings"
8
+ s.version = "0.6.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ben Biddington"]
12
+ s.date = "2014-05-07"
13
+ s.description = "Settings"
14
+ s.email = "ben.biddington@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".travis.yml",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/rsettings.rb",
28
+ "lib/rsettings/adapters/basic_disk_settings.rb",
29
+ "lib/rsettings/adapters/environment_settings.rb",
30
+ "lib/rsettings/core/internal/defaults.rb",
31
+ "lib/rsettings/core/internal/settings_chain.rb",
32
+ "lib/rsettings/core/internal/settings_configuration.rb",
33
+ "lib/rsettings/core/missing.rb",
34
+ "lib/rsettings/core/names.rb",
35
+ "lib/rsettings/core/rsettings.rb",
36
+ "lib/rsettings/core/setting.rb",
37
+ "lib/rsettings/core/setting_name.rb",
38
+ "rsettings.gemspec",
39
+ "spec/integration.tests/adapters/basic_disk_settings_spec.rb",
40
+ "spec/spec_helper.rb",
41
+ "spec/system.tests/can_fall_back_to_file_settings_spec.rb",
42
+ "spec/system.tests/can_list_settings_spec.rb",
43
+ "spec/system.tests/can_provide_translations_spec.rb",
44
+ "spec/system.tests/can_specify_flags_spec.rb",
45
+ "spec/system.tests/can_supply_defaults_for_missing_settings_spec.rb",
46
+ "spec/system.tests/can_use_env_spec.rb",
47
+ "spec/system.tests/options_spec.rb"
48
+ ]
49
+ s.homepage = "http://github.com/ben-biddington/rsettings"
50
+ s.licenses = ["MIT"]
51
+ s.require_paths = ["lib"]
52
+ s.rubygems_version = "1.8.23"
53
+ s.summary = "Settings for ruby programs"
54
+
55
+ if s.respond_to? :specification_version then
56
+ s.specification_version = 3
57
+
58
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
+ s.add_runtime_dependency(%q<audible>, [">= 0"])
60
+ s.add_development_dependency(%q<rake>, [">= 0"])
61
+ s.add_development_dependency(%q<rspec>, [">= 0"])
62
+ s.add_development_dependency(%q<bundler>, [">= 0"])
63
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
64
+ else
65
+ s.add_dependency(%q<audible>, [">= 0"])
66
+ s.add_dependency(%q<rake>, [">= 0"])
67
+ s.add_dependency(%q<rspec>, [">= 0"])
68
+ s.add_dependency(%q<bundler>, [">= 0"])
69
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
70
+ end
71
+ else
72
+ s.add_dependency(%q<audible>, [">= 0"])
73
+ s.add_dependency(%q<rake>, [">= 0"])
74
+ s.add_dependency(%q<rspec>, [">= 0"])
75
+ s.add_dependency(%q<bundler>, [">= 0"])
76
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
77
+ end
78
+ end
79
+