fume-settable 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.
data/README.md CHANGED
@@ -22,6 +22,7 @@ Or install it yourself as:
22
22
  ruby_provider Rails.root.join("config/application.local.rb") # ruby provider
23
23
  append_providers ->(name) { "@lambda" if name == "lambda" } # lambda provider
24
24
  append_providers :fetch_on_method # method provider
25
+ mem_hash_provider # mem hash provider
25
26
 
26
27
  def fetch_on_method(name)
27
28
  "@method" if name == "method"
@@ -36,11 +37,15 @@ Or install it yourself as:
36
37
 
37
38
  ### 2. Run
38
39
 
39
- Project.settings.ruby # return "@ruby"
40
- Project.settings.yaml # return "@yaml"
41
- Project.settings.lambda # return "@lambda"
42
- Project.settings.method # return "@method"
43
- Project.settings.unknow # return nil
40
+ Project.settings.ruby # return "@ruby"
41
+ Project.settings.yaml # return "@yaml"
42
+ Project.settings.lambda # return "@lambda"
43
+ Project.settings.method # return "@method"
44
+ Project.settings.unknow # return nil
45
+
46
+ Project.settings.memhash # return nil
47
+ Project.settings.memhash = 1 #
48
+ Project.settings.memhash # return 1
44
49
 
45
50
  ## Contributing
46
51
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/lib/fume-settable.rb CHANGED
@@ -1,7 +1,9 @@
1
+
1
2
  module Fume
2
3
  module Settable
3
4
  VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).chomp
4
5
  end
5
6
  end
6
7
 
8
+ require "active_support/all"
7
9
  require File.expand_path('../fume-settable/base', __FILE__)
@@ -1,18 +1,21 @@
1
1
  require File.expand_path('../ruby_provider', __FILE__)
2
2
  require File.expand_path('../yaml_provider', __FILE__)
3
+ require File.expand_path('../mem_hash_provider', __FILE__)
3
4
 
4
5
  module Fume
5
6
  module Settable
6
7
  class Base
7
8
  include YamlProvider
8
9
  include RubyProvider
10
+ include MemHashProvider
11
+
9
12
  class_attribute :providers
10
13
  self.providers = []
11
14
 
12
- def self.fetch(name)
15
+ def self.fetch(name, *args, &block)
13
16
  (self.providers || []).each do |provider|
14
- value = provider.call(name.to_s)
15
- return value if value
17
+ value = provider.call(name.to_s, *args, &block)
18
+ return value if !value.nil?
16
19
  end
17
20
  nil
18
21
  end
@@ -41,6 +44,10 @@ module Fume
41
44
  def [](name)
42
45
  @callback.call(name)
43
46
  end
47
+
48
+ def []=(name, *args, &block)
49
+ @callback.call("#{name}=", *args, &block)
50
+ end
44
51
 
45
52
  def method_missing(name, *args, &block)
46
53
  @callback.call(name, *args, &block)
@@ -0,0 +1,30 @@
1
+ require 'active_support/concern'
2
+ require "hashie"
3
+
4
+ module Fume
5
+ module Settable
6
+ module MemHashProvider
7
+ extend ActiveSupport::Concern
8
+
9
+ module ClassMethods
10
+ def mem_hash_provider
11
+ append_providers ProviderMemHash.new
12
+ end
13
+ end
14
+
15
+ class ProviderMemHash
16
+ def initialize
17
+ @data = Hashie::Mash.new
18
+ end
19
+
20
+ def settings
21
+ @data
22
+ end
23
+
24
+ def call(name, *args, &block)
25
+ @data.send(name, *args, &block)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -16,7 +16,7 @@ module Settable
16
16
  def initialize(*files)
17
17
  files = [ files ].flatten
18
18
  @data = Hashie::Mash.new
19
- files.each do |file|
19
+ files.reverse.each do |file|
20
20
  next if !File.exist?(file)
21
21
  instance_eval File.read(file), file.to_s
22
22
  end
@@ -26,7 +26,7 @@ module Settable
26
26
  @data
27
27
  end
28
28
 
29
- def call(name)
29
+ def call(name, *args, &block)
30
30
  @data[name]
31
31
  end
32
32
  end
@@ -15,14 +15,14 @@ module Settable
15
15
  def initialize(*files)
16
16
  files = [ files ].flatten
17
17
  @data = {}
18
- files.each do |file|
18
+ files.reverse.each do |file|
19
19
  next if !File.exist?(file)
20
20
  content = YAML.load(File.read(file))
21
21
  @data = @data.deep_merge(content) if content
22
22
  end
23
23
  end
24
24
 
25
- def call(name)
25
+ def call(name, *args, &block)
26
26
  @data[name]
27
27
  end
28
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fume-settable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-13 00:00:00.000000000 Z
12
+ date: 2012-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hashie
@@ -91,6 +91,7 @@ files:
91
91
  - fume-settable.gemspec
92
92
  - lib/fume-settable.rb
93
93
  - lib/fume-settable/base.rb
94
+ - lib/fume-settable/mem_hash_provider.rb
94
95
  - lib/fume-settable/ruby_provider.rb
95
96
  - lib/fume-settable/yaml_provider.rb
96
97
  - lib/fume/settable.rb
@@ -108,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
108
109
  version: '0'
109
110
  segments:
110
111
  - 0
111
- hash: 3491969668467509048
112
+ hash: 3154248052716656931
112
113
  required_rubygems_version: !ruby/object:Gem::Requirement
113
114
  none: false
114
115
  requirements:
@@ -117,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
118
  version: '0'
118
119
  segments:
119
120
  - 0
120
- hash: 3491969668467509048
121
+ hash: 3154248052716656931
121
122
  requirements: []
122
123
  rubyforge_project:
123
124
  rubygems_version: 1.8.24