Sutto-perennial 0.2.3.0 → 0.2.3.1

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.
@@ -84,6 +84,19 @@ class Hash
84
84
  self.each_pair { |k,v| hash[k.to_sym] = v }
85
85
  replace hash
86
86
  end
87
+
88
+ def stringify_keys!
89
+ hash = {}
90
+ self.each_pair { |k, v| hash[k.to_s] = v }
91
+ replace hash
92
+ end
93
+
94
+ def stringify_keys
95
+ hash = self.dup
96
+ hash.stringify_keys!
97
+ return hash
98
+ end
99
+
87
100
  end
88
101
 
89
102
  class Module
@@ -48,6 +48,14 @@ module Perennial
48
48
  setup! if setup?
49
49
  end
50
50
 
51
+ def lookup_key_path
52
+ @@lookup_key_path ||= ["default"]
53
+ end
54
+
55
+ def lookup_key_path=(value)
56
+ @@lookup_key_path = value
57
+ end
58
+
51
59
  def setup(options = {})
52
60
  self.setup!(options) unless setup?
53
61
  end
@@ -57,7 +65,7 @@ module Perennial
57
65
  settings_file = self.default_settings_path
58
66
  if File.exist?(settings_file)
59
67
  loaded_yaml = YAML.load(File.read(settings_file))
60
- @@configuration.merge!(loaded_yaml["default"] || {})
68
+ @@configuration.merge!(lookup_settings_from(loaded_yaml))
61
69
  end
62
70
  @@configuration.merge! options
63
71
  @@configuration.symbolize_keys!
@@ -68,6 +76,17 @@ module Perennial
68
76
  @@setup = true
69
77
  end
70
78
 
79
+ def update!(attributes = {})
80
+ return if attributes.blank?
81
+ settings_file = self.default_settings_path
82
+ settings = File.exist?(settings_file) ? YAML.load(File.read(settings_file)) : {}
83
+ namespaced_settings = lookup_settings_from(settings)
84
+ namespaced_settings.merge! attributes.stringify_keys
85
+ File.open(settings_file, "w+") { |f| f.write(settings.to_yaml) }
86
+ setup!
87
+ return true
88
+ end
89
+
71
90
  def [](key)
72
91
  self.setup
73
92
  return self.configuration[key.to_sym]
@@ -98,6 +117,12 @@ module Perennial
98
117
  end
99
118
  end
100
119
 
120
+ def lookup_settings_from(settings_hash)
121
+ lookup_key_path.inject(settings_hash) do |h, k|
122
+ h[k.to_s] ||= {}
123
+ end
124
+ end
125
+
101
126
  end
102
127
 
103
128
  end
data/lib/perennial.rb CHANGED
@@ -9,7 +9,7 @@ require 'perennial/exceptions'
9
9
 
10
10
  module Perennial
11
11
 
12
- VERSION = "0.2.3.0"
12
+ VERSION = "0.2.3.1"
13
13
 
14
14
  has_libary :dispatchable, :hookable, :loader, :logger,
15
15
  :loggable, :manifest, :settings, :argument_parser,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Sutto-perennial
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3.0
4
+ version: 0.2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darcy Laycock
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-06 00:00:00 -07:00
12
+ date: 2009-09-07 00:00:00 -07:00
13
13
  default_executable: perennial
14
14
  dependencies: []
15
15
 
@@ -67,6 +67,7 @@ files:
67
67
  - templates/test_helper.erb
68
68
  has_rdoc: false
69
69
  homepage: http://sutto.net/
70
+ licenses:
70
71
  post_install_message:
71
72
  rdoc_options: []
72
73
 
@@ -87,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
88
  requirements: []
88
89
 
89
90
  rubyforge_project:
90
- rubygems_version: 1.2.0
91
+ rubygems_version: 1.3.5
91
92
  signing_key:
92
93
  specification_version: 3
93
94
  summary: A simple (generally event-oriented) application library for Ruby