relaxo-model 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f91363b15fe3a9cbb463411d3fdebd0eb4ec259
4
- data.tar.gz: b73842f29b12c806f97b6381fa40bcbe4203a235
3
+ metadata.gz: e37c4bdf8e7434134f7b4b4e0a8e28c0a677fadb
4
+ data.tar.gz: 7cd780a667b5e298f242a6388a7d8c662ccd9732
5
5
  SHA512:
6
- metadata.gz: 9dcc4dd40a4ea74d76ea6b293f78a6ce19ea0b48d317666b07198964507f1e0f569ca3623556f52c9933f410e818ab55bca1b0a631bf0d9fcba41b66ed4d9bb5
7
- data.tar.gz: 57f97f437019780516b513a1056226b665459171200ce61cf530d24fc570c531524cdd29e44dfbd0b7113f10d17a7a99c6596099137c825f198bd8d3fe63707e
6
+ metadata.gz: bfb8e303f72fb22c760a2f60db729d3432ec70b43977d1fe6d87b9d2151ec346df0dc9e564ec02061a6f41bfee3d95ba2a984378fc73ea24ceca79dc9e6b8ce4
7
+ data.tar.gz: 0cf6e81f2abac06015f0d91b2cd863874ada45c5fe759e3d79438e1c5f1a3cd1598a7f4ae1d9b864e197f0f139cf7940dd4786547463a2c0e952204fd8fea106
@@ -119,7 +119,7 @@ module Relaxo
119
119
  self.send(:define_method, "#{name}?") do
120
120
  value = self.send(name)
121
121
 
122
- if value == nil || value == false
122
+ if value.nil? or value == false
123
123
  false
124
124
  elsif value.respond_to? :empty?
125
125
  !value.empty?
@@ -22,16 +22,6 @@ require 'relaxo/model/base'
22
22
 
23
23
  module Relaxo
24
24
  module Model
25
- class Error
26
- def initialize(key, exception)
27
- @key = key
28
- @exception = exception
29
- end
30
-
31
- attr :key
32
- attr :exception
33
- end
34
-
35
25
  module Component
36
26
  def self.included(child)
37
27
  # $stderr.puts "#{self} included -> #{child} extend Base"
@@ -97,18 +87,16 @@ module Relaxo
97
87
  end
98
88
  end
99
89
 
100
- def flatten!
101
- errors = []
90
+ def validate
91
+ # Do nothing :)
92
+ end
102
93
 
94
+ def flatten!
103
95
  # Flatten changed properties:
104
96
  self.class.properties.each do |key, klass|
105
97
  if @changed.include? key
106
98
  if klass
107
- begin
108
- @attributes[key] = klass.convert_to_primative(@changed.delete(key))
109
- rescue StandardError => error
110
- errors << Error.new(key, error)
111
- end
99
+ @attributes[key] = klass.convert_to_primative(@changed.delete(key))
112
100
  else
113
101
  @attributes[key] = @changed.delete(key)
114
102
  end
@@ -121,8 +109,6 @@ module Relaxo
121
109
  end
122
110
 
123
111
  @changed = {}
124
-
125
- errors
126
112
  end
127
113
 
128
114
  def to_hash
@@ -22,20 +22,6 @@ require 'relaxo/model/component'
22
22
 
23
23
  module Relaxo
24
24
  module Model
25
- class ValidationErrors < StandardError
26
- def self.message_for_errors(errors)
27
- errors.map{|error| "#{error.key} (#{error.exception.message})"}.join(', ')
28
- end
29
-
30
- def initialize(errors)
31
- super "Model validation errors occurred: #{self.class.message_for_errors(errors)}"
32
-
33
- @errors = errors
34
- end
35
-
36
- attr :errors
37
- end
38
-
39
25
  module Document
40
26
  TYPE = 'type'
41
27
 
@@ -112,12 +98,17 @@ module Relaxo
112
98
  return clone
113
99
  end
114
100
 
115
- # Save the model object, raises `ValidationErrors` if there are validation errors.
101
+ # Save the model object.
116
102
  def save
103
+ return if @changed.empty?
104
+
117
105
  before_save
118
106
 
119
- errors = self.flatten!
120
- raise ValidationErrors.new(errors) if errors.size > 0
107
+ if errors = self.validate
108
+ return errors
109
+ end
110
+
111
+ self.flatten!
121
112
 
122
113
  @database.save(@attributes)
123
114
 
@@ -149,6 +140,10 @@ module Relaxo
149
140
  def <=> other
150
141
  self.id <=> other.id
151
142
  end
143
+
144
+ def empty?
145
+ @attributes.empty?
146
+ end
152
147
  end
153
148
  end
154
149
  end
@@ -53,16 +53,14 @@ module Relaxo
53
53
 
54
54
  def initialize(klass, &serialization)
55
55
  @klass = klass
56
-
57
- raise ArgumentError.new("Klass doesn't respond to parse!") unless @klass.respond_to? :parse
58
56
  end
59
57
 
60
58
  def convert_to_primative(value)
61
- value.to_s
59
+ @klass.dump(value)
62
60
  end
63
61
 
64
62
  def convert_from_primative(database, value)
65
- @klass.parse(value)
63
+ @klass.load(value)
66
64
  end
67
65
  end
68
66
 
@@ -78,7 +76,7 @@ module Relaxo
78
76
  end
79
77
 
80
78
  def convert_to_primative(value)
81
- if value == nil || value == ''
79
+ if value.nil? or value.empty?
82
80
  nil
83
81
  else
84
82
  @klass.convert_to_primative(value)
@@ -86,7 +84,7 @@ module Relaxo
86
84
  end
87
85
 
88
86
  def convert_from_primative(database, value)
89
- if value == nil || value.empty?
87
+ if value.nil? or value.empty?
90
88
  nil
91
89
  else
92
90
  @klass.convert_from_primative(database, value)
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Relaxo
22
22
  module Model
23
- VERSION = "0.4.3"
23
+ VERSION = "0.4.4"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaxo-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-08 00:00:00.000000000 Z
11
+ date: 2016-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: relaxo
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.4.6
115
+ rubygems_version: 2.5.2
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: A model layer for CouchDB with minimal global state.