iron-settings 1.0.3 → 1.0.4

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: 30675b76476bbdbc880ba503df09e58edaabce5a
4
- data.tar.gz: e4f5b24d064e9ce607a645fe786834d779487e06
3
+ metadata.gz: 3ff3ceb048486b314e176cb0a6c7733f2bf50c3c
4
+ data.tar.gz: 706357ea7822e59582d9e049d9c3cd4ab8e28ac4
5
5
  SHA512:
6
- metadata.gz: 85fbd26e319de40c6d1e11e14bdb1d99ec028bef8ddaf039c3f9525809a6507f2b398a940a30c06f9ec08fa8af75589f4e66b7d74e890052b1cde976f06d3b3e
7
- data.tar.gz: ba83a460b831a995f11bf53d3550d0ddbbe40e9bea4f3f2207144d59c793e74ba7584059c44955272d1e47ce9fd4eb5a254f133f386f0a35d5a7909877eb8c15
6
+ metadata.gz: f28ef71c9d33a6fa6b3c3dcfa212b049585dd584c9e4861de91f0f590e173df8745ba64a08d2d8c2a63784c94b91f6fc2a472e0ca6e7231b73d0aec953692d8f
7
+ data.tar.gz: fdb528d297029f1684812e8dc76dd5daa99b859d5d5e65cb827cb979ca86888a4e5302fa0cab6591d1366d2c823e7185a48a691079c375d8dea75d8a50e6ead0
@@ -1,3 +1,9 @@
1
+ == 1.0.4 / 2018-01-03
2
+
3
+ * Update docs to show group setting for static values
4
+ * Add Cursor#entry_values to allow getting a hash of all values for a given group
5
+ * Update Cursor#method_missing to return false if querying for a missing entry
6
+
1
7
  == 1.0.3 / 2015-01-27
2
8
 
3
9
  * Update to use new 1.2 version of iron-extensions and add dependency on iron-dsl gem
@@ -72,6 +72,10 @@ configuration info.
72
72
  class_settings(:file => '~/.mytool') do
73
73
  string('api_key')
74
74
  string('base_path', '~')
75
+ group('options') do
76
+ bool('debug', false)
77
+ bool('verbose', false)
78
+ end
75
79
  end
76
80
 
77
81
  def initialize
@@ -85,10 +89,15 @@ configuration info.
85
89
 
86
90
  end
87
91
 
88
- Now, your users could create a .mytool file like so:
92
+ Now, your users could create a .mytool file like so. Notice how there are no equals signs,
93
+ and the group settings can be accessed in a block:
89
94
 
90
95
  api_key '1234ASDF'
91
96
  base_path '~/code'
97
+ options do
98
+ debug true
99
+ verbose true
100
+ end
92
101
 
93
102
  On calling MyTool.settings, this file would be loaded and override the settings defaults.
94
103
 
@@ -127,7 +136,7 @@ RVM users can skip the sudo:
127
136
 
128
137
  Then use
129
138
 
130
- require 'iron/settings'
139
+ require 'iron-settings'
131
140
 
132
141
  to require the library code.
133
142
 
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.4
@@ -0,0 +1 @@
1
+ require 'iron/settings'
@@ -122,6 +122,7 @@ class Settings
122
122
 
123
123
  def self.classes
124
124
  @classes ||= []
125
+ @classes
125
126
  end
126
127
 
127
128
  def self.default_timestamp_file(class_name)
@@ -37,6 +37,7 @@ class Settings #:nodoc:
37
37
  # of need to reload automatically. Useful for testing, but not generally needed in production use
38
38
  def reload_settings
39
39
  @settings_values.load
40
+ true
40
41
  end
41
42
 
42
43
  end
@@ -29,6 +29,14 @@ class Settings
29
29
  keys
30
30
  end
31
31
 
32
+ # Returns a hash of all entry keys to their values at the cursor's current
33
+ # position, and optionally including all child keys. If the cursor is at
34
+ # a sub-group node, keys will be relative to that node.
35
+ def entry_values(include_all = true)
36
+ keys = entry_keys(include_all)
37
+ keys.convert_to_hash {|k| item_value(find_item(k)) }
38
+ end
39
+
32
40
  # Returns all group keys
33
41
  def group_keys(include_all = false)
34
42
  keys = @group.entries(include_all).collect {|e| e.key }
@@ -93,7 +101,13 @@ class Settings
93
101
  item = @group.find_item(method)
94
102
  if item.nil?
95
103
  # Unknown item name, whoops.
96
- raise RuntimeError.new("Unknown settings group or entry '#{method}' for settings path #{@group.key}")
104
+ if query
105
+ # Querying for existence of key is fine if it's missing
106
+ return false
107
+ else
108
+ # Setting or getting, GTFO
109
+ raise RuntimeError.new("Unknown settings group or entry '#{method}' for settings path #{@group.key}")
110
+ end
97
111
 
98
112
  elsif item.group?
99
113
  if query
@@ -91,5 +91,20 @@ describe Settings::Cursor do
91
91
  it 'should eval lambda defaults in the context of the root cursor' do
92
92
  CursorTest.settings.top.middle.bottom.lamby.should == 6
93
93
  end
94
+
95
+ it 'should return a hash of keys to vals' do
96
+ CursorTest.settings.invalid_default = 'hi'
97
+ CursorTest.settings.entry_values.should == {
98
+ 'val1' => 5,
99
+ 'val2' => nil,
100
+ 'top.middle.bottom.lamby' => 6,
101
+ 'top.middle.bottom.leaf' => nil,
102
+ 'invalid_default' => 'hi'
103
+ }
104
+ end
105
+
106
+ it 'should return false on interrogating a missing key' do
107
+ CursorTest.settings.bob?.should be_false
108
+ end
94
109
 
95
110
  end
@@ -38,6 +38,11 @@ RSpec.configure do |config|
38
38
  config.color = true
39
39
  config.add_formatter 'documentation'
40
40
  config.backtrace_exclusion_patterns = [/rspec/]
41
+ # Allow us to use: it '...', :focus do ... end
42
+ # rather than needing: it '...', :focus => true do ... end
43
+ config.treat_symbols_as_metadata_keys_with_true_values = true
44
+ # If everything is filtered, run everything - used if no :focus element is present
45
+ config.run_all_when_everything_filtered = true
41
46
  end
42
47
 
43
48
  module SpecHelper
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Morris
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-28 00:00:00.000000000 Z
11
+ date: 2018-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: iron-extensions
@@ -66,6 +66,7 @@ files:
66
66
  - README.rdoc
67
67
  - Version.txt
68
68
  - db/settings_migration.rb
69
+ - lib/iron-settings.rb
69
70
  - lib/iron/rake_loader.rb
70
71
  - lib/iron/settings.rb
71
72
  - lib/iron/settings/builder.rb