fun_with_configurations 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDQ0ZTVhMmQwOTQ1ZmQ2NWZkMTM2ZWYwMzRkNjdiZTAxNDRjOGI0ZQ==
4
+ NGQ3MzlhYzM1NWY2MDBlZTEyMzE5YTIyNDBlNzkzNDM4YmFlN2FmOQ==
5
5
  data.tar.gz: !binary |-
6
- MWRkNmYxNTNmNDRjMTJiMzhlYTE2ZDBhYTY2NDFhZGI4ODE4OTc4NQ==
6
+ NDYwNWJhNmU0MDRiMjg5NDg0MzcwMDNlMWZhYzhjM2QwM2ZhZWIwYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MWI0YWQ0MzNjZTFjMzg4ZGQxODg2N2NlN2JkMzRmY2E1ZDcwODgyMmI0ZjNl
10
- MjNiNjE3Nzk5N2E1MWU5M2YzOTdkZDQ0ZTU5ZWQwYjA2ZGM3OGMwMzZmOWQy
11
- ZmIzOWI4OThkN2JjZDVjMDcyODE2ZDc4ZDIxMDM3OGFiN2IzOWE=
9
+ MTMzOTc4ODA1MmMxMmFiZDY5ZTU3OWI5MjEzZjQyODdjNDNiNDA3MWYyM2Nl
10
+ NjJjMzIzMzY5N2QzOWU1ZGM1MzUwOGI3M2U2MDVkNDI5MjExMWY4OTBkZWUz
11
+ MmE2NmE4YTcyOTM4MDZjODZiNmFhOGU0MmQ1YzVjZjJlNWQ1MDE=
12
12
  data.tar.gz: !binary |-
13
- OGExZjIwOWUzNjE5OWQ5N2VhNTc2ODQ5NWY4ZGE1ZGE2MWFkNjI1ZmVhMWQ3
14
- OGFmZTFiYzlmNTNhNTQ3MGM2NGI1NDMyOTNiYTkyNzk3NjM2NzU5ZTkxOTNm
15
- Yjk2Mjk0ODc2NDE1Y2Q2NDZmOGIzYjIwNTYwYzg1MjdmNjdiZmQ=
13
+ OGZjMTc4ZTI5NTU1NDU5YzQyNjA4Yzg4MjIyODFjYjg5NTFjMTY0YTgxZTU4
14
+ YzdkNjZmMjA2MjY1ZWVhYjZlMmJlYzIwOWZmNDg0M2JiNmU5ODYwNzExOTIz
15
+ M2M1NmMyOTA3YTk0M2MwY2YxYWI4OTM4Mzc2MzQ2MjJiMTIwMTg=
data/Gemfile CHANGED
@@ -14,4 +14,4 @@ group :development do
14
14
  gem "fun_with_testing", "~> 0.0"
15
15
  end
16
16
 
17
- gem "fun_with_gems", "~> 0.0"
17
+ gem "fun_with_gems", "~> 0.0", ">= 0.0.2"
data/README.rdoc CHANGED
@@ -162,6 +162,34 @@ Basically, this is meant to spare you from typing the longhand form:
162
162
 
163
163
 
164
164
 
165
+
166
+
167
+ == FunWith::Patterns::Loader integration
168
+
169
+ To use configurations with the Loader pattern:
170
+
171
+ require 'fun_with_configurations'
172
+ require 'fun_with_patterns'
173
+
174
+ class Computer
175
+ attr_accessor :label
176
+
177
+ # Look up individual configurations via Computer[:bob_system]
178
+ loader_pattern_configure( :bracketwise_lookup,
179
+ :warn_on_key_change, # Warn if an existing lookup key is overwritten
180
+ { :key => :label, # Key is found by calling method label()
181
+ :style => FunWith::Configurations::LoadingStyle } ) # Interprets the file as a FWC::Config
182
+ end
183
+
184
+ Computer.loader_pattern_load_from_dir( "~/.config/computers" ) # loads all the configurations in the directory
185
+ puts Computer[:bob_system].memory # ==> "4GB"
186
+
187
+ Internally, the LoadingStyle simply offloads the loading work to Config.from_file(), so any valid configuration format will do (.rb, .yaml).
188
+
189
+
190
+
191
+
192
+
165
193
  == Contributing to fun_with_configurations
166
194
 
167
195
  [Boilerplate from Jeweler. Seems reasonable.]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -60,13 +60,6 @@ module FunWith
60
60
  end
61
61
  end
62
62
 
63
- def self.key_check( sym )
64
- @reserved_symbols ||= Config.instance_methods - self.fwc_overridden_methods
65
-
66
- raise KeyError.new("#{sym} is not a symbol") unless sym.is_a?(Symbol)
67
- raise KeyError.new("#{sym} is reserved for use by Hash") if @reserved_symbols.include?( sym )
68
- end
69
-
70
63
  def try( *keys )
71
64
  (t = TryObject.new( self )).tap do
72
65
  for key in keys
@@ -120,19 +113,6 @@ module FunWith
120
113
  end
121
114
  end
122
115
 
123
- def self.from_hash( hash )
124
- (config = self.new).tap do
125
- for k, v in hash
126
- config.send( k, v.is_a?( Hash ) ? self.from_hash( v ) : v )
127
- end
128
- end
129
- config
130
- end
131
-
132
- def self.fwc_overridden_methods
133
- ConfigOverriddenMethods.instance_methods.grep( /[^=]$/ )
134
- end
135
-
136
116
  def fwc_overridden_methods
137
117
  self.class.fwc_overridden_methods
138
118
  end
@@ -0,0 +1,47 @@
1
+ module FunWith
2
+ module Configurations
3
+ # methods on the FunWith::Configurations::Config class itself.
4
+ module ConfigAPI
5
+ def key_check( sym )
6
+ @reserved_symbols ||= Config.instance_methods - self.fwc_overridden_methods
7
+
8
+ raise KeyError.new("#{sym} is not a symbol") unless sym.is_a?(Symbol)
9
+ raise KeyError.new("#{sym} is reserved for use by Hash") if @reserved_symbols.include?( sym )
10
+ end
11
+
12
+
13
+ def from_file( file )
14
+ file = file.fwf_filepath
15
+
16
+ case file.ext
17
+ when "rb"
18
+ self.new do
19
+ eval( file.read )
20
+ end
21
+ when "yml", "yaml"
22
+ self.from_yaml( file.read )
23
+ else
24
+ warn( "Unknown filetype: #{file.ext} (file:#{file}}). Returning empty config." )
25
+ self.new
26
+ end
27
+ end
28
+
29
+ def from_hash( hash )
30
+ (config = self.new).tap do
31
+ for k, v in hash
32
+ config.send( k, v.is_a?( Hash ) ? self.from_hash( v ) : v )
33
+ end
34
+ end
35
+ config
36
+ end
37
+
38
+ def from_yaml( yaml_string )
39
+ self.from_hash( Psych.load( yaml_string ) )
40
+ end
41
+
42
+ def fwc_overridden_methods
43
+ ConfigOverriddenMethods.instance_methods.grep( /[^=]$/ )
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,6 +1,6 @@
1
1
  module FunWith
2
2
  module Configurations
3
- module ModuleIncludes
3
+ module GemAPI
4
4
  def configure( object, config = nil, &block )
5
5
  if block_given?
6
6
  object.install_fwc_config( config, &block )
@@ -20,6 +20,7 @@ module FunWith
20
20
  end
21
21
  end
22
22
 
23
+ #
23
24
  protected
24
25
  def configuration_argument_type?( arg )
25
26
  case arg
@@ -0,0 +1,21 @@
1
+ # For integrating with FunWith::Patterns::LoaderPattern
2
+ # See README for example usage
3
+ module FunWith
4
+ module Configurations
5
+ module LoadingStyle
6
+ # Default behavior: read the file, evaluate it, expect a ruby object
7
+ # of the class that the loader pattern is installed on. If anything goes
8
+ # wrong (file no exist, syntax error), returns a nil.
9
+ #
10
+ # Override in your class if you need your files translated
11
+ # into objects differently.
12
+ def loader_pattern_load_item( file )
13
+ self.loader_pattern_rescue_failing_item_load( file ) do
14
+ obj = Config.from_file( file )
15
+
16
+ return obj
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ module FunWith
2
+ module Configurations
3
+ module ObjectMethods
4
+ def install_fwc_config( config = nil, &block )
5
+ extend FunWith::Configurations::Configurable
6
+ self.config = config || FunWith::Configurations::Config.new( &block )
7
+ self.config.fwc_configured_object = self
8
+ self.config
9
+ end
10
+
11
+ def install_fwc_config_from_file( file )
12
+ config = FunWith::Configurations::Config.from_file( file )
13
+ self.install_fwc_config( config )
14
+ self.fwc_configuration_file = file
15
+ self.config
16
+ end
17
+
18
+ def install_fwc_config_from_hash( hash )
19
+ config = FunWith::Configurations::Config.from_hash( hash )
20
+ self.install_fwc_config( config )
21
+ self.config
22
+ end
23
+
24
+ def install_fwc_config_from_yaml( yaml_string )
25
+ config = Config.from_yaml( yaml_string )
26
+ self.install_fwc_config( config )
27
+ self.config
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -1,10 +1,5 @@
1
- require 'fun_with_files'
1
+ require 'fun_with_gems'
2
2
 
3
- module FunWith
4
- module Configurations
5
- end
6
- end
7
-
8
- FunWith::Files::RootPath.rootify( FunWith::Configurations, __FILE__.fwf_filepath.dirname.up )
9
- FunWith::Configurations.root( "lib", "fun_with", "configurations" ).requir
10
- FunWith::Configurations.extend( FunWith::Configurations::ModuleIncludes )
3
+ FunWith::Gems.make_gem_fun( "FunWith::Configurations" )
4
+ FunWith::Configurations::Config.extend( FunWith::Configurations::ConfigAPI )
5
+ Object.send(:include, FunWith::Configurations::ObjectMethods)
@@ -1,10 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- module FunWith
4
- module Configurations
5
- class ServerManager
6
- end
7
- end
3
+ class FunWith::Configurations::ServerManager
8
4
  end
9
5
 
10
6
  class TestLoadingFromFile < FunWith::Configurations::TestCase
@@ -2,9 +2,10 @@ require 'helper'
2
2
 
3
3
  class TestSetupBasics < FunWith::Configurations::TestCase
4
4
  context "testing basics" do
5
- context "FunWith::Configurations module"
6
- should "respond to :configure" do
7
- assert FunWith::Configurations.respond_to?(:configure)
5
+ context "FunWith::Configurations module" do
6
+ should "respond to :configure" do
7
+ assert FunWith::Configurations.respond_to?(:configure)
8
+ end
8
9
  end
9
10
  end
10
11
  end
metadata CHANGED
@@ -1,19 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fun_with_configurations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-31 00:00:00.000000000 Z
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fun_with_gems
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.2
17
20
  - - ~>
18
21
  - !ruby/object:Gem::Version
19
22
  version: '0.0'
@@ -21,6 +24,9 @@ dependencies:
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.2
24
30
  - - ~>
25
31
  - !ruby/object:Gem::Version
26
32
  version: '0.0'
@@ -49,11 +55,13 @@ extra_rdoc_files:
49
55
  files:
50
56
  - ./lib/fun_with/configurations/chain_error.rb
51
57
  - ./lib/fun_with/configurations/config.rb
58
+ - ./lib/fun_with/configurations/config_api.rb
52
59
  - ./lib/fun_with/configurations/config_overridden_methods.rb
53
60
  - ./lib/fun_with/configurations/configurable.rb
61
+ - ./lib/fun_with/configurations/gem_api.rb
54
62
  - ./lib/fun_with/configurations/key_error.rb
55
- - ./lib/fun_with/configurations/module_includes.rb
56
- - ./lib/fun_with/configurations/object.rb
63
+ - ./lib/fun_with/configurations/loader_style.rb
64
+ - ./lib/fun_with/configurations/object_methods.rb
57
65
  - ./lib/fun_with/configurations/try_object.rb
58
66
  - ./lib/fun_with/configurations/try_result.rb
59
67
  - ./lib/fun_with_configurations.rb
@@ -1,35 +0,0 @@
1
- class Object
2
- def install_fwc_config( config = nil, &block )
3
- extend FunWith::Configurations::Configurable
4
- self.config = config || FunWith::Configurations::Config.new( nil, &block )
5
- self.config.fwc_configured_object = self
6
- self.config
7
- end
8
-
9
- def install_fwc_config_from_file( file )
10
- file = file.fwf_filepath
11
-
12
- case file.ext
13
- when "rb"
14
- self.install_fwc_config do
15
- eval( file.read )
16
- end
17
- when "yml", "yaml"
18
- self.install_fwc_config_from_yaml( file.read )
19
- end
20
-
21
- self.fwc_configuration_file = file
22
- self.config
23
- end
24
-
25
- def install_fwc_config_from_hash( hash )
26
- self.install_fwc_config( FunWith::Configurations::Config.from_hash( hash ) )
27
- self.config
28
- end
29
-
30
- def install_fwc_config_from_yaml( yaml_string )
31
- self.install_fwc_config_from_hash( Psych.load( yaml_string ) )
32
- self.config
33
- end
34
- end
35
-