mod_factor 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format documentation
data/.watchr ADDED
@@ -0,0 +1,42 @@
1
+ def run(cmd)
2
+ puts(cmd)
3
+ `#{cmd}`
4
+ end
5
+
6
+ def growl(first, result)
7
+ passed = result.include?('0 failures')
8
+ title = "RSpec Test #{ passed ? "Successful!" : "Failed..."}"
9
+ image = passed ? "info" : "error"
10
+ severity = passed ? "low" : "critical"
11
+ body = passed ? "All Passed!" : result[result.rindex("Failures"), result.size].gsub(/(\\|<\/|\r\n:w|[\n\r"'])/,'')
12
+ options = "-i #{image} -u #{severity} '#{title}' '#{body}'"
13
+ system "notify-send #{options} &"
14
+ end
15
+
16
+ def run_spec(file)
17
+ unless File.exist?(file)
18
+ puts "#{file} does not exist"
19
+ return
20
+ end
21
+
22
+ puts "Running #{file}"
23
+ result = run("bundle exec rspec #{file}")
24
+ growl(result.split("\n").first, result) rescue nil
25
+ puts result
26
+ end
27
+
28
+ watch("spec/.*/*_spec\.rb") do |match|
29
+ run_spec match[0]
30
+ end
31
+
32
+ watch("lib/(.*/.*)\.rb") do |match|
33
+ run_spec %{spec/#{match[1]}_spec.rb}
34
+ end
35
+
36
+ watch("spec/.*/.*/*_spec\.rb") do |match|
37
+ run_spec match[0]
38
+ end
39
+
40
+ watch("lib/(.*/.*/.*)\.rb") do |match|
41
+ run_spec %{spec/#{match[1]}_spec.rb}
42
+ end
data/Gemfile ADDED
@@ -0,0 +1,24 @@
1
+ source "http://ruby.taobao.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ #
9
+
10
+ gem "i18n", '>= 0.6.0'
11
+ gem "activerecord", '>= 3.0.9'
12
+ gem "rake"
13
+ gem "sqlite3", :platforms => :ruby
14
+
15
+ group :development,:test do
16
+ gem "rspec", ">= 2.8.0"
17
+ gem "sqlite3-ruby"
18
+ gem "with_model", '>= 0.1.5'
19
+ gem "rdoc", "~> 3.12"
20
+ gem "cucumber"
21
+ gem "bundler", ">= 1.0.0"
22
+ gem "jeweler", ">= 1.8.3"
23
+ gem "simplecov", ">= 0"
24
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,74 @@
1
+ GEM
2
+ remote: http://ruby.taobao.org/
3
+ specs:
4
+ activemodel (3.2.2)
5
+ activesupport (= 3.2.2)
6
+ builder (~> 3.0.0)
7
+ activerecord (3.2.2)
8
+ activemodel (= 3.2.2)
9
+ activesupport (= 3.2.2)
10
+ arel (~> 3.0.2)
11
+ tzinfo (~> 0.3.29)
12
+ activesupport (3.2.2)
13
+ i18n (~> 0.6)
14
+ multi_json (~> 1.0)
15
+ arel (3.0.2)
16
+ builder (3.0.0)
17
+ cucumber (1.1.9)
18
+ builder (>= 2.1.2)
19
+ diff-lcs (>= 1.1.2)
20
+ gherkin (~> 2.9.0)
21
+ json (>= 1.4.6)
22
+ term-ansicolor (>= 1.0.6)
23
+ diff-lcs (1.1.3)
24
+ gherkin (2.9.0)
25
+ json (>= 1.4.6)
26
+ git (1.2.5)
27
+ i18n (0.6.0)
28
+ jeweler (1.8.3)
29
+ bundler (~> 1.0)
30
+ git (>= 1.2.5)
31
+ rake
32
+ rdoc
33
+ json (1.6.5)
34
+ multi_json (1.1.0)
35
+ rake (0.9.2.2)
36
+ rdoc (3.12)
37
+ json (~> 1.4)
38
+ rspec (2.8.0)
39
+ rspec-core (~> 2.8.0)
40
+ rspec-expectations (~> 2.8.0)
41
+ rspec-mocks (~> 2.8.0)
42
+ rspec-core (2.8.0)
43
+ rspec-expectations (2.8.0)
44
+ diff-lcs (~> 1.1.2)
45
+ rspec-mocks (2.8.0)
46
+ simplecov (0.6.1)
47
+ multi_json (~> 1.0)
48
+ simplecov-html (~> 0.5.3)
49
+ simplecov-html (0.5.3)
50
+ sqlite3 (1.3.5)
51
+ sqlite3-ruby (1.3.3)
52
+ sqlite3 (>= 1.3.3)
53
+ term-ansicolor (1.0.7)
54
+ tzinfo (0.3.32)
55
+ with_model (0.2.6)
56
+ activerecord (>= 2.3.5, < 4.0.0)
57
+ rspec (< 3)
58
+
59
+ PLATFORMS
60
+ ruby
61
+
62
+ DEPENDENCIES
63
+ activerecord (>= 3.0.9)
64
+ bundler (>= 1.0.0)
65
+ cucumber
66
+ i18n (>= 0.6.0)
67
+ jeweler (>= 1.8.3)
68
+ rake
69
+ rdoc (~> 3.12)
70
+ rspec (>= 2.8.0)
71
+ simplecov
72
+ sqlite3
73
+ sqlite3-ruby
74
+ with_model (>= 0.1.5)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Ryan Wong
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,65 @@
1
+ mod_factor
2
+ ==========
3
+
4
+ How to Use
5
+ ----------
6
+
7
+ Add factor model:
8
+
9
+ rails g model financial_factor key:string amount:decimal owner:references owner_type:string
10
+
11
+ Change factor model:
12
+
13
+ belongs_to :owner, :polymorphic => true
14
+
15
+ Include ModFactor::Owner to owner:
16
+
17
+ class SomeModel < ActiveRecord::Base
18
+ include ModFactor::Owner
19
+ factors :financial_factors do
20
+ factor :prop_one
21
+ factor :prop_formula, :generate => true,
22
+ :formula => proc {|owner|1 + 1}
23
+ factor :prop_one_times_ten, :generate=>true,
24
+ :formula => proc {|owner| (owner.prop_one||0) * 10}
25
+ end
26
+ end
27
+
28
+
29
+ Some sample usage:
30
+
31
+ some_model = SomeModel.new
32
+ some_model.prop_one # nil
33
+ some_model.prop_one = 10 # 10
34
+ some_model.calculate
35
+ some_model.prop_one_times_ten # 100
36
+
37
+ Include some math helper
38
+
39
+ class SomeModel < ActiveRecord::Base
40
+ include ModFactor::Math
41
+ end
42
+
43
+ Provides following:
44
+
45
+ some_model.sigma_geometric # http://en.wikipedia.org/wiki/Geometric_progression
46
+
47
+
48
+ Contributing to mod_factor
49
+ --------------------------
50
+
51
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
52
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
53
+ * Fork the project.
54
+ * Start a feature/bugfix branch.
55
+ * Commit and push until you are happy with your contribution.
56
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
57
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
58
+
59
+
60
+ Copyright
61
+ ----------
62
+
63
+ Copyright (c) 2012 Ryan Wong. See LICENSE.txt for
64
+ further details.
65
+
data/Rakefile ADDED
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "mod_factor"
18
+ gem.homepage = "http://github.com/lazing/mod_factor"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{mod factor}
21
+ gem.description = %Q{mod factor}
22
+ gem.email = "ryan@idolgo.com"
23
+ gem.authors = ["Ryan Wong"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rspec/core'
29
+ require 'rspec/core/rake_task'
30
+ RSpec::Core::RakeTask.new(:spec) do |spec|
31
+ spec.pattern = FileList['spec/**/*_spec.rb']
32
+ end
33
+
34
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
35
+ spec.pattern = 'spec/**/*_spec.rb'
36
+ spec.rcov = true
37
+ end
38
+
39
+ require 'cucumber/rake/task'
40
+ Cucumber::Rake::Task.new(:features)
41
+
42
+ task :default => :spec
43
+
44
+ require 'rdoc/task'
45
+ Rake::RDocTask.new do |rdoc|
46
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "mod_factor #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.5
@@ -0,0 +1,8 @@
1
+ module ModFactor
2
+ module Math
3
+
4
+ def sigma_geometric r, n
5
+ (1 - r**(n+1))/(1 - r)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,81 @@
1
+ module ModFactor
2
+ module Owner
3
+
4
+ def self.included base
5
+ base.extend ClassMethods
6
+ base.after_initialize do |obj|
7
+ if base.instance_variable_defined? :@factor_model
8
+ factor_model = base.instance_variable_get :@factor_model
9
+ obj.send(factor_model).each do |factor|
10
+ obj.instance_variable_set "@#{factor.key.to_sym}", factor.amount
11
+ obj.factor_hash[factor.key.to_sym] = factor.amount
12
+ end
13
+ end
14
+ end
15
+
16
+ base.after_save do |obj|
17
+ if base.instance_variable_defined? :@factor_model
18
+ factor_model = base.instance_variable_get :@factor_model
19
+ changeset = self.class.factor_define.keys.select do |key|
20
+ factor_hash[key] != __send__(key)
21
+ end
22
+
23
+ changeset.each do |key|
24
+ factor = obj.send(factor_model).find_or_initialize_by_key key
25
+ factor.amount = obj.send key
26
+ factor.save
27
+ obj.reload
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+
34
+ module ClassMethods
35
+
36
+ def factors model, options = {}
37
+ has_many model, :as=>:owner
38
+ @factor_model = model
39
+ yield if block_given?
40
+ end
41
+
42
+ def factor name, options = {}
43
+ attr_accessor name
44
+ factor_define[name] = options
45
+ end
46
+
47
+ def generate_list
48
+ @generate_list ||= []
49
+ end
50
+
51
+ def factor_define
52
+ @factor_define ||= {}
53
+ end
54
+
55
+ def generate_list
56
+ @generate_list ||= factor_define.keys.select { |key| factor_define[key][:generate] }
57
+ end
58
+
59
+ end
60
+
61
+ def factor_hash
62
+ @factor_hash ||= self.class.factor_define.keys.inject({}) do
63
+ |out, item| out[item] = nil
64
+ out
65
+ end
66
+ end
67
+
68
+ def calculate options={}
69
+ self.class.generate_list.each do |key|
70
+ instance_variable_set "@#{key}", self.class.factor_define[key][:formula].try(:call, self, options)
71
+ end
72
+ end
73
+
74
+ def calculate! options={}
75
+ calculate options
76
+ save!
77
+ end
78
+
79
+ end
80
+
81
+ end
data/lib/mod_factor.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'active_record'
2
+ require 'mod_factor/owner'
3
+ require 'mod_factor/math'
4
+
@@ -0,0 +1,89 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "mod_factor"
8
+ s.version = "0.0.5"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Ryan Wong"]
12
+ s.date = "2012-03-15"
13
+ s.description = "mod factor"
14
+ s.email = "ryan@idolgo.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.markdown"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ ".watchr",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE.txt",
26
+ "README.markdown",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "lib/mod_factor.rb",
30
+ "lib/mod_factor/math.rb",
31
+ "lib/mod_factor/owner.rb",
32
+ "mod_factor.gemspec",
33
+ "spec/mod_factor/math_spec.rb",
34
+ "spec/mod_factor/owner_spec.rb",
35
+ "spec/mod_factor_spec.rb",
36
+ "spec/spec_helper.rb"
37
+ ]
38
+ s.homepage = "http://github.com/lazing/mod_factor"
39
+ s.licenses = ["MIT"]
40
+ s.require_paths = ["lib"]
41
+ s.rubygems_version = "1.8.10"
42
+ s.summary = "mod factor"
43
+
44
+ if s.respond_to? :specification_version then
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_runtime_dependency(%q<i18n>, [">= 0.6.0"])
49
+ s.add_runtime_dependency(%q<activerecord>, [">= 3.0.9"])
50
+ s.add_runtime_dependency(%q<rake>, [">= 0"])
51
+ s.add_runtime_dependency(%q<sqlite3>, [">= 0"])
52
+ s.add_development_dependency(%q<rspec>, [">= 2.8.0"])
53
+ s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
54
+ s.add_development_dependency(%q<with_model>, [">= 0.1.5"])
55
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
56
+ s.add_development_dependency(%q<cucumber>, [">= 0"])
57
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
58
+ s.add_development_dependency(%q<jeweler>, [">= 1.8.3"])
59
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
60
+ else
61
+ s.add_dependency(%q<i18n>, [">= 0.6.0"])
62
+ s.add_dependency(%q<activerecord>, [">= 3.0.9"])
63
+ s.add_dependency(%q<rake>, [">= 0"])
64
+ s.add_dependency(%q<sqlite3>, [">= 0"])
65
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
66
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
67
+ s.add_dependency(%q<with_model>, [">= 0.1.5"])
68
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
69
+ s.add_dependency(%q<cucumber>, [">= 0"])
70
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
71
+ s.add_dependency(%q<jeweler>, [">= 1.8.3"])
72
+ s.add_dependency(%q<simplecov>, [">= 0"])
73
+ end
74
+ else
75
+ s.add_dependency(%q<i18n>, [">= 0.6.0"])
76
+ s.add_dependency(%q<activerecord>, [">= 3.0.9"])
77
+ s.add_dependency(%q<rake>, [">= 0"])
78
+ s.add_dependency(%q<sqlite3>, [">= 0"])
79
+ s.add_dependency(%q<rspec>, [">= 2.8.0"])
80
+ s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
81
+ s.add_dependency(%q<with_model>, [">= 0.1.5"])
82
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
83
+ s.add_dependency(%q<cucumber>, [">= 0"])
84
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
85
+ s.add_dependency(%q<jeweler>, [">= 1.8.3"])
86
+ s.add_dependency(%q<simplecov>, [">= 0"])
87
+ end
88
+ end
89
+
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe ModFactor::Math do
4
+
5
+ subject {
6
+ class ATest
7
+ include ModFactor::Math
8
+ end
9
+
10
+ ATest.new
11
+ }
12
+
13
+ it "should support geometric sigma" do
14
+ subject.instance_exec {
15
+ sigma_geometric(1.05, 10)
16
+ }.should be_within(0.001).of(14.2067)
17
+ end
18
+
19
+ end
20
+
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ describe ModFactor::Owner do
4
+
5
+ with_model :financial_factor do
6
+ table do |t|
7
+ t.string :key
8
+ t.decimal :amount
9
+ t.string :owner_type
10
+ t.integer :owner_id
11
+ end
12
+ model do
13
+ belongs_to :owner, :polymorphic => true
14
+ end
15
+ end
16
+
17
+ with_model :family do
18
+ table do |t|
19
+ t.boolean "visible"
20
+ end
21
+ model do
22
+ include ModFactor::Owner
23
+
24
+ has_many :family_members
25
+ has_many :members, :through=>:family_members
26
+
27
+ factors :financial_factors do
28
+ factor :prop_one
29
+ factor :prop_formula, :generate => true,
30
+ :formula => proc {|owner|1 + 1}
31
+ factor :prop_one_times_ten, :generate=>true,
32
+ :formula => proc {|owner| (owner.prop_one||0) * 10}
33
+ factor :prop_child, :generate => true,
34
+ :formula => proc {|owner, extra| owner.members.first.try :prop_member}
35
+ factor :prop_extra, :generate => true,
36
+ :formula => proc {|owner, extra| extra[:extra_value]}
37
+ end
38
+ end
39
+ end
40
+
41
+ with_model :family_member do
42
+ table do |t|
43
+ t.references :family
44
+ t.references :member
45
+ end
46
+ model do
47
+ belongs_to :family
48
+ belongs_to :member
49
+ end
50
+ end
51
+
52
+ with_model :member do
53
+ table do |t|
54
+ t.string :name
55
+ end
56
+ model do
57
+ has_many :family_members
58
+ has_many :family, :through=>:family_member
59
+ include ModFactor::Owner
60
+
61
+ factors :financial_factors do
62
+ factor :prop_member
63
+ end
64
+ end
65
+ end
66
+
67
+ subject { Family.create! }
68
+
69
+ it "should has define factors" do
70
+ subject.respond_to? :financial_factors
71
+ end
72
+
73
+ it "should access factor" do
74
+ subject.prop_one = 10
75
+ subject.prop_one.should == 10
76
+ end
77
+
78
+ it "should store factor in factors table" do
79
+ expect {
80
+ subject.prop_one = 10
81
+ subject.save!
82
+ }.to change {subject.financial_factors.size}
83
+ end
84
+
85
+ it "should generate factor after calculation" do
86
+ expect {
87
+ subject.calculate
88
+ }.to change {subject.prop_formula}
89
+ end
90
+
91
+ it "should ten time prop_one to prop_one_time_ten" do
92
+ subject.prop_one = 10
93
+ subject.calculate
94
+ subject.prop_one_times_ten.should == 100
95
+ end
96
+
97
+ it "should proper store generate factor" do
98
+ subject.prop_one = 10
99
+ subject.calculate
100
+ subject.save!
101
+ Family.find(subject.id).prop_formula.should == 2
102
+ end
103
+
104
+ it "should load child factor" do
105
+ member = subject.members.create!
106
+ member.prop_member = 10
107
+ member.save!
108
+ subject.calculate
109
+ subject.members.first.prop_member.should == 10
110
+ subject.prop_child.should == 10
111
+ end
112
+
113
+ it "should work with calculate options" do
114
+ subject.calculate :extra_value => 10
115
+ subject.prop_extra.should == 10
116
+ end
117
+
118
+ end
@@ -0,0 +1,6 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe ModFactor do
4
+
5
+
6
+ end
@@ -0,0 +1,27 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rubygems'
5
+ require 'bundler/setup'
6
+ require 'active_record'
7
+
8
+ Bundler.require(:default, :development, :test)
9
+
10
+ require 'rspec'
11
+ require 'mod_factor'
12
+ require "with_model"
13
+
14
+ # Requires supporting files with custom matchers and macros, etc,
15
+ # in ./support/ and its subdirectories.
16
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
17
+
18
+ jruby = RUBY_PLATFORM =~ /\bjava\b/
19
+ adapter = jruby ? "jdbcsqlite3" : "sqlite3"
20
+
21
+ # WithModel requires ActiveRecord::Base.connection to be established.
22
+ # If ActiveRecord already has a connection, as in a Rails app, this is unnecessary.
23
+ ActiveRecord::Base.establish_connection(:adapter => adapter, :database => ":memory:")
24
+
25
+ RSpec.configure do |config|
26
+ config.extend WithModel
27
+ end
metadata ADDED
@@ -0,0 +1,199 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mod_factor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ryan Wong
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-15 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: i18n
16
+ requirement: &79191140 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.6.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *79191140
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &79190780 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.9
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *79190780
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &79190410 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *79190410
47
+ - !ruby/object:Gem::Dependency
48
+ name: sqlite3
49
+ requirement: &79190050 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *79190050
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &79189780 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 2.8.0
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *79189780
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3-ruby
71
+ requirement: &79189410 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *79189410
80
+ - !ruby/object:Gem::Dependency
81
+ name: with_model
82
+ requirement: &79189110 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: 0.1.5
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *79189110
91
+ - !ruby/object:Gem::Dependency
92
+ name: rdoc
93
+ requirement: &79188800 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ~>
97
+ - !ruby/object:Gem::Version
98
+ version: '3.12'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *79188800
102
+ - !ruby/object:Gem::Dependency
103
+ name: cucumber
104
+ requirement: &79178560 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *79178560
113
+ - !ruby/object:Gem::Dependency
114
+ name: bundler
115
+ requirement: &79178190 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: 1.0.0
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *79178190
124
+ - !ruby/object:Gem::Dependency
125
+ name: jeweler
126
+ requirement: &79177810 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: 1.8.3
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *79177810
135
+ - !ruby/object:Gem::Dependency
136
+ name: simplecov
137
+ requirement: &79177370 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *79177370
146
+ description: mod factor
147
+ email: ryan@idolgo.com
148
+ executables: []
149
+ extensions: []
150
+ extra_rdoc_files:
151
+ - LICENSE.txt
152
+ - README.markdown
153
+ files:
154
+ - .document
155
+ - .rspec
156
+ - .watchr
157
+ - Gemfile
158
+ - Gemfile.lock
159
+ - LICENSE.txt
160
+ - README.markdown
161
+ - Rakefile
162
+ - VERSION
163
+ - lib/mod_factor.rb
164
+ - lib/mod_factor/math.rb
165
+ - lib/mod_factor/owner.rb
166
+ - mod_factor.gemspec
167
+ - spec/mod_factor/math_spec.rb
168
+ - spec/mod_factor/owner_spec.rb
169
+ - spec/mod_factor_spec.rb
170
+ - spec/spec_helper.rb
171
+ homepage: http://github.com/lazing/mod_factor
172
+ licenses:
173
+ - MIT
174
+ post_install_message:
175
+ rdoc_options: []
176
+ require_paths:
177
+ - lib
178
+ required_ruby_version: !ruby/object:Gem::Requirement
179
+ none: false
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ segments:
185
+ - 0
186
+ hash: -208297155
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ requirements: []
194
+ rubyforge_project:
195
+ rubygems_version: 1.8.10
196
+ signing_key:
197
+ specification_version: 3
198
+ summary: mod factor
199
+ test_files: []