Commit cda000186107d91bd0a4ef9330b74afb8293fc7d
1 parent
42340c3b
Exists in
master
and in
29 other branches
ActionItem41: adding the possibility of giving a default value for settings
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1330 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
11 additions
and
1 deletions
Show diff stats
lib/acts_as_having_settings.rb
... | ... | @@ -19,10 +19,14 @@ module ActsAsHavingSettings |
19 | 19 | end |
20 | 20 | |
21 | 21 | def settings_items(*names) |
22 | + | |
23 | + options = names.last.is_a?(Hash) ? names.pop : {} | |
24 | + default = options[:default] ? "|| #{options[:default].inspect}" : "" | |
25 | + | |
22 | 26 | names.each do |setting| |
23 | 27 | class_eval <<-CODE |
24 | 28 | def #{setting} |
25 | - send(self.class.settings_field)[:#{setting}] | |
29 | + send(self.class.settings_field)[:#{setting}] #{default} | |
26 | 30 | end |
27 | 31 | def #{setting}=(value) |
28 | 32 | send(self.class.settings_field)[:#{setting}] = value | ... | ... |
test/unit/acts_as_having_settings_test.rb
... | ... | @@ -42,4 +42,10 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase |
42 | 42 | assert_equal 15, Block.find(block.id).limit |
43 | 43 | end |
44 | 44 | |
45 | + should 'be able to specify default values' do | |
46 | + block_class = Class.new(Block) | |
47 | + block_class.settings_items :some_setting, :default => 10 | |
48 | + assert_equal 10, block_class.new.some_setting | |
49 | + end | |
50 | + | |
45 | 51 | end | ... | ... |