simple_model 1.2.21 → 1.2.22

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.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dd528898a8977c244515a34000104c0d80e4887f
4
- data.tar.gz: 5619f6e8fe9c70f71eb0250091696911493facaf
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YjQyN2Y0MzE5YjZkODA2MGIwOGYyNzRiNzk5NmUyMjYzYmEwNTExZg==
5
+ data.tar.gz: !binary |-
6
+ YzVjNGU4MGI2ZDFlYmE5M2ExODYyZWZkODUwYTZlMzhhMGU4YWE5NQ==
5
7
  SHA512:
6
- metadata.gz: ef573fdf146f4904f3333b1ddbb3f8fdef76738bc57f1594f3e0babcd0743afd13d06c0cf4c1b63be0402fafbea11937dc92e407ea2fb130b0873414b601f065
7
- data.tar.gz: 351e61b6f752ae47f52067e3efd33be7a315061aaaf166dbc019c570036d83bc16c706b5b683ea598f253a956af161fe8a598c19c809203ca2ad4251cc9bc4cc
8
+ metadata.gz: !binary |-
9
+ MjAyM2JkMDRhMjdkMjc4NzRiMjE1OTI5MDlmNTJjMGMyNDQwM2E3ZjdhYTcz
10
+ YWQwY2RhMmVmNDliYzY0ZmQ5NjhlM2Y1MWVlMzljODQ4MWU5ZTc0OWRiZTgw
11
+ MTcwNmNmYjA5NWYyNzhmMjMwZDU0YTkzNGIzMmNlZGRkODU3ZTE=
12
+ data.tar.gz: !binary |-
13
+ YWQ2M2MzYTRmNjI5NmQwZWFmNTQ0ODAzZjM1NDdkNGEwNThhMWFjMjRiMzBk
14
+ ZTA5ZDhlZjVjNDExYWY0ZTIwMDdmNTVjZDdjOTIzZTZkMmJmMjVkNGRkMjYz
15
+ ZjYzY2QyYTI1NDg2OWEyODIzMDY3MGI4OTQzOTYwNzEyZWFiZWY=
@@ -0,0 +1,39 @@
1
+ class BenchClass < SimpleModel::Base
2
+ has_int :num
3
+ has_date :date, :default => :today
4
+ has_decimal :dec
5
+
6
+ def today
7
+ Date.today
8
+ end
9
+ end
10
+ Benchmark.bm do |b|
11
+ b.report("initialize") do
12
+ 30000.times.each do
13
+ BenchClass.new()
14
+ end
15
+ end
16
+ BenchClass.new()
17
+ b.report("initialize with attrs") do
18
+ 30000.times.each do
19
+ BenchClass.new(:num => 1, :dec => "12.4")
20
+ end
21
+ end
22
+ b.report("get") do
23
+ 30000.times.each do
24
+ klass = BenchClass.new
25
+ klass.num
26
+ klass.dec
27
+ klass.date
28
+ end
29
+ end
30
+
31
+ b.report("set") do
32
+ 30000.times.each do
33
+ klass = BenchClass.new
34
+ klass.num = 1
35
+ klass.dec = '12.4'
36
+ klass.date = "2014-12-25"
37
+ end
38
+ end
39
+ end
@@ -40,9 +40,8 @@ module SimpleModel
40
40
  options = self.class.defined_attributes[attr] || {}
41
41
  if allow_attribute_action?(val,options)
42
42
  val = fetch_default_value(options[:default]) if (!options[:allow_blank] && options.key?(:default) && val.blank?)
43
- val = options[:on_set].call(self,val) unless (!options.key?(:on_set) || (val.blank? && !options[:allow_blank]) )
44
- will_change = "#{attr}_will_change!".to_sym
45
- self.send(will_change) if (initialized?(attr) && val != self.attributes[attr])
43
+ val = options[:on_set].call(self,val) if options[:on_set] #(!options.key?(:on_set) || (val.blank? && !options[:allow_blank]) )
44
+ self.send("#{attr}_will_change!") if (initialized?(attr) && val != self.attributes[attr])
46
45
  self.attributes[attr] = val
47
46
  options[:after_set].call(self,val) if options[:after_set]
48
47
  end
@@ -98,7 +97,7 @@ module SimpleModel
98
97
  # Only set default if there is a default value, initializing is allow and
99
98
  # new attributes do not have a value to set and
100
99
  def allow_init_default?(d,k,v)
101
- (v[:default] && (v[:initialize] != false) && (!d.key?(k) && !attributes_have_alias?(d,k)))
100
+ (v[:default] && v[:initialize] && (!d.key?(k) && !attributes_have_alias?(d,k)))
102
101
  end
103
102
 
104
103
  def attributes_have_alias?(attrs,attr)
@@ -106,24 +105,28 @@ module SimpleModel
106
105
  end
107
106
 
108
107
  def allow_attribute_action?(val,options)
109
- return true if (options[:if].blank? && options[:unless].blank?)
108
+ return true unless (options[:if] || options[:unless])
110
109
  b = true
111
- if options[:if].is_a?(Symbol)
112
- if options[:if] == :blank
113
- b = (b && val.blank?)
110
+ opt = options[:if]
111
+ if opt.is_a?(Symbol)
112
+ if opt == :blank
113
+ b = val.blank?
114
114
  else
115
- b = (b && send(options[:if]))
115
+ b = send(opt)
116
116
  end
117
+ elsif opt.is_a?(Proc)
118
+ b = opt.call(self,val)
117
119
  end
118
- b = (b && options[:if].call(self,val)) if options[:if].is_a?(Proc)
119
- if options[:unless].is_a?(Symbol)
120
- if options[:unless] == :blank
121
- b = (b && !val.blank?)
120
+ opt = options[:unless]
121
+ if opt.is_a?(Symbol)
122
+ if opt == :blank
123
+ b = !val.blank?
122
124
  else
123
- b = (b && !send(options[:unless]))
125
+ b = !send(opt)
124
126
  end
127
+ elsif opt.is_a?(Proc)
128
+ b = !opt.call(self,val)
125
129
  end
126
- b = (b && !options[:unless].call(self,val)) if options[:unless].is_a?(Proc)
127
130
  b
128
131
  end
129
132
 
@@ -1,3 +1,3 @@
1
1
  module SimpleModel
2
- VERSION = "1.2.21"
2
+ VERSION = "1.2.22"
3
3
  end
metadata CHANGED
@@ -1,95 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.21
4
+ version: 1.2.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua T Mckinney
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-09 00:00:00.000000000 Z
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
- - - "<"
20
+ - - <
21
21
  - !ruby/object:Gem::Version
22
22
  version: '5.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
27
+ - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.0'
30
- - - "<"
30
+ - - <
31
31
  - !ruby/object:Gem::Version
32
32
  version: '5.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activemodel
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - ! '>='
38
38
  - !ruby/object:Gem::Version
39
39
  version: '3.0'
40
- - - "<"
40
+ - - <
41
41
  - !ruby/object:Gem::Version
42
42
  version: '5.0'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
47
+ - - ! '>='
48
48
  - !ruby/object:Gem::Version
49
49
  version: '3.0'
50
- - - "<"
50
+ - - <
51
51
  - !ruby/object:Gem::Version
52
52
  version: '5.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rspec
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ">="
57
+ - - ! '>='
58
58
  - !ruby/object:Gem::Version
59
59
  version: '0'
60
60
  type: :development
61
61
  prerelease: false
62
62
  version_requirements: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - ">="
64
+ - - ! '>='
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: rspec-autotest
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - ">="
71
+ - - ! '>='
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - ">="
78
+ - - ! '>='
79
79
  - !ruby/object:Gem::Version
80
80
  version: '0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: autotest
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - ! '>='
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
90
  version_requirements: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - ">="
92
+ - - ! '>='
93
93
  - !ruby/object:Gem::Version
94
94
  version: '0'
95
95
  description: Simpifies building tableless models or models backed by webservices.
@@ -100,13 +100,14 @@ executables: []
100
100
  extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
- - ".gitignore"
104
- - ".rspec"
105
- - ".travis.yml"
103
+ - .gitignore
104
+ - .rspec
105
+ - .travis.yml
106
106
  - Gemfile
107
107
  - LICENSE.txt
108
108
  - README.md
109
109
  - Rakefile
110
+ - benchmarks/simple_model.rb
110
111
  - gemfiles/3.0.gemfile
111
112
  - gemfiles/3.1.gemfile
112
113
  - gemfiles/3.2.gemfile
@@ -137,17 +138,17 @@ require_paths:
137
138
  - lib
138
139
  required_ruby_version: !ruby/object:Gem::Requirement
139
140
  requirements:
140
- - - ">="
141
+ - - ! '>='
141
142
  - !ruby/object:Gem::Version
142
143
  version: '0'
143
144
  required_rubygems_version: !ruby/object:Gem::Requirement
144
145
  requirements:
145
- - - ">="
146
+ - - ! '>='
146
147
  - !ruby/object:Gem::Version
147
148
  version: '0'
148
149
  requirements: []
149
150
  rubyforge_project: simple_model
150
- rubygems_version: 2.4.3
151
+ rubygems_version: 2.4.2
151
152
  signing_key:
152
153
  specification_version: 4
153
154
  summary: Simpifies building tableless models or models backed by webservices