From cda000186107d91bd0a4ef9330b74afb8293fc7d Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Sat, 9 Feb 2008 17:57:22 +0000 Subject: [PATCH] ActionItem41: adding the possibility of giving a default value for settings --- lib/acts_as_having_settings.rb | 6 +++++- test/unit/acts_as_having_settings_test.rb | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/acts_as_having_settings.rb b/lib/acts_as_having_settings.rb index d6941ca..89466b3 100644 --- a/lib/acts_as_having_settings.rb +++ b/lib/acts_as_having_settings.rb @@ -19,10 +19,14 @@ module ActsAsHavingSettings end def settings_items(*names) + + options = names.last.is_a?(Hash) ? names.pop : {} + default = options[:default] ? "|| #{options[:default].inspect}" : "" + names.each do |setting| class_eval <<-CODE def #{setting} - send(self.class.settings_field)[:#{setting}] + send(self.class.settings_field)[:#{setting}] #{default} end def #{setting}=(value) send(self.class.settings_field)[:#{setting}] = value diff --git a/test/unit/acts_as_having_settings_test.rb b/test/unit/acts_as_having_settings_test.rb index 05aeecb..203d9d6 100644 --- a/test/unit/acts_as_having_settings_test.rb +++ b/test/unit/acts_as_having_settings_test.rb @@ -42,4 +42,10 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase assert_equal 15, Block.find(block.id).limit end + should 'be able to specify default values' do + block_class = Class.new(Block) + block_class.settings_items :some_setting, :default => 10 + assert_equal 10, block_class.new.some_setting + end + end -- libgit2 0.21.2