relaxo-model 0.4.3 → 0.4.4

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,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.