iron-settings 1.0.3 → 1.0.4

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: 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