diff --git a/README b/README new file mode 100644 index 0000000..a11f346 --- /dev/null +++ b/README @@ -0,0 +1,4 @@ +Money +===== + +Description goes here \ No newline at end of file diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..e7b9b41 --- /dev/null +++ b/Rakefile @@ -0,0 +1,22 @@ +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +desc 'Default: run unit tests.' +task :default => :test + +desc 'Test the money plugin.' +Rake::TestTask.new(:test) do |t| + t.libs << 'lib' + t.pattern = 'test/**/*_test.rb' + t.verbose = true +end + +desc 'Generate documentation for the money plugin.' +Rake::RDocTask.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Money' + rdoc.options << '--line-numbers' << '--inline-source' + rdoc.rdoc_files.include('README') + rdoc.rdoc_files.include('lib/**/*.rb') +end diff --git a/init.rb b/init.rb new file mode 100644 index 0000000..85fe417 --- /dev/null +++ b/init.rb @@ -0,0 +1,3 @@ +require 'acts_as_money' + +ActiveRecord::Base.send :include, CollectiveIdea::Acts::Money \ No newline at end of file diff --git a/install.rb b/install.rb new file mode 100644 index 0000000..f7732d3 --- /dev/null +++ b/install.rb @@ -0,0 +1 @@ +# Install hook code here diff --git a/lib/acts_as_money.rb b/lib/acts_as_money.rb new file mode 100644 index 0000000..54579a1 --- /dev/null +++ b/lib/acts_as_money.rb @@ -0,0 +1,29 @@ +require 'money' + +module CollectiveIdea #:nodoc: + module Acts + module Money #:nodoc: + def self.included(base) #:nodoc: + base.extend ClassMethods + end + + module ClassMethods + def money(name, options = {}) + options = {:cents => :cents, :currency => :currency}.merge(options) + + module_eval <<-end_eval + composed_of :composed_of_#{name}, :class_name => 'Money', + :mapping => [%w(#{options[:cents]} cents), %w(#{options[:currency] || nil} currency)] + + def #{name}=(part) + self.composed_of_#{name} = part.is_a?(Money) ? part : part.to_money + end + def #{name}(force_reload = false) + self.composed_of_#{name} unless #{options[:cents]}.blank? + end + end_eval + end + end + end + end +end \ No newline at end of file diff --git a/tasks/money_tasks.rake b/tasks/money_tasks.rake new file mode 100644 index 0000000..2a71dad --- /dev/null +++ b/tasks/money_tasks.rake @@ -0,0 +1,4 @@ +# desc "Explaining what the task does" +# task :money do +# # Task goes here +# end \ No newline at end of file diff --git a/test/money_test.rb b/test/money_test.rb new file mode 100644 index 0000000..fd56add --- /dev/null +++ b/test/money_test.rb @@ -0,0 +1,8 @@ +require 'test/unit' + +class MoneyTest < Test::Unit::TestCase + # Replace this with your real tests. + def test_this_plugin + flunk + end +end