vedeu 0.7.2 → 0.7.3
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 +4 -4
- data/docs/borders.md +1 -5
- data/docs/cursors.md +23 -92
- data/docs/events/application.md +1 -8
- data/docs/events/by_name/cleanup.md +7 -0
- data/docs/events/by_name/clear.md +2 -0
- data/docs/events/by_name/clear_group.md +6 -0
- data/docs/events/by_name/clear_view.md +5 -0
- data/docs/events/by_name/clear_view_content.md +5 -0
- data/docs/events/by_name/command.md +19 -0
- data/docs/events/by_name/cursor_bottom.md +7 -0
- data/docs/events/by_name/cursor_down.md +4 -0
- data/docs/events/by_name/cursor_left.md +6 -0
- data/docs/events/by_name/cursor_origin.md +6 -0
- data/docs/events/by_name/cursor_position.md +10 -0
- data/docs/events/by_name/cursor_reposition.md +4 -0
- data/docs/events/by_name/cursor_right.md +4 -0
- data/docs/events/by_name/cursor_top.md +7 -0
- data/docs/events/by_name/cursor_up.md +6 -0
- data/docs/events/by_name/drb_input.md +7 -0
- data/docs/events/by_name/drb_restart.md +5 -0
- data/docs/events/by_name/drb_retrieve_output.md +2 -0
- data/docs/events/by_name/drb_start.md +5 -0
- data/docs/events/by_name/drb_status.md +5 -0
- data/docs/events/by_name/drb_stop.md +5 -0
- data/docs/events/by_name/drb_store_output.md +2 -0
- data/docs/events/by_name/editor.md +9 -0
- data/docs/events/by_name/editor_delete_character.md +5 -0
- data/docs/events/by_name/editor_delete_line.md +5 -0
- data/docs/events/by_name/editor_down.md +5 -0
- data/docs/events/by_name/editor_execute.md +3 -0
- data/docs/events/by_name/editor_insert_character.md +7 -0
- data/docs/events/by_name/editor_insert_line.md +5 -0
- data/docs/events/by_name/editor_left.md +5 -0
- data/docs/events/by_name/editor_right.md +5 -0
- data/docs/events/by_name/editor_up.md +5 -0
- data/docs/events/by_name/exit.md +6 -0
- data/docs/events/by_name/focus_by_name.md +6 -0
- data/docs/events/by_name/focus_next.md +6 -0
- data/docs/events/by_name/focus_prev.md +6 -0
- data/docs/events/by_name/goto.md +8 -0
- data/docs/events/by_name/hide_cursor.md +10 -0
- data/docs/events/by_name/hide_group.md +5 -0
- data/docs/events/by_name/hide_interface.md +5 -0
- data/docs/events/by_name/initialize.md +6 -0
- data/docs/events/by_name/keypress.md +40 -0
- data/docs/events/by_name/log.md +7 -0
- data/docs/events/by_name/maximise.md +6 -0
- data/docs/events/by_name/menu_bottom.md +4 -0
- data/docs/events/by_name/menu_current.md +4 -0
- data/docs/events/by_name/menu_deselect.md +4 -0
- data/docs/events/by_name/menu_items.md +5 -0
- data/docs/events/by_name/menu_next.md +5 -0
- data/docs/events/by_name/menu_prev.md +5 -0
- data/docs/events/by_name/menu_select.md +4 -0
- data/docs/events/by_name/menu_selected.md +4 -0
- data/docs/events/by_name/menu_top.md +4 -0
- data/docs/events/by_name/menu_view.md +5 -0
- data/docs/events/by_name/mode_switch.md +7 -0
- data/docs/events/by_name/movement_refresh.md +19 -0
- data/docs/events/by_name/refresh.md +9 -0
- data/docs/events/by_name/refresh_border.md +5 -0
- data/docs/events/by_name/refresh_cursor.md +5 -0
- data/docs/events/by_name/refresh_group.md +4 -0
- data/docs/events/by_name/refresh_view.md +4 -0
- data/docs/events/by_name/refresh_view_content.md +4 -0
- data/docs/events/by_name/resize.md +5 -0
- data/docs/events/by_name/show_cursor.md +10 -0
- data/docs/events/by_name/show_group.md +5 -0
- data/docs/events/by_name/show_interface.md +5 -0
- data/docs/events/by_name/toggle_cursor.md +9 -0
- data/docs/events/by_name/toggle_group.md +5 -0
- data/docs/events/by_name/toggle_interface.md +5 -0
- data/docs/events/by_name/unmaximise.md +6 -0
- data/docs/events/document.md +9 -45
- data/docs/events/drb.md +7 -31
- data/docs/events/focus.md +3 -18
- data/docs/events/menu.md +10 -44
- data/docs/events/refresh.md +6 -25
- data/docs/events/system.md +8 -101
- data/docs/events/view.md +4 -36
- data/docs/events/visibility.md +10 -48
- data/lib/vedeu/borders/border.rb +117 -37
- data/lib/vedeu/borders/refresh.rb +29 -113
- data/lib/vedeu/borders/repository.rb +0 -5
- data/lib/vedeu/buffers/buffer.rb +13 -17
- data/lib/vedeu/buffers/refresh.rb +4 -4
- data/lib/vedeu/cursors/refresh.rb +2 -7
- data/lib/vedeu/groups/clear.rb +3 -1
- data/lib/vedeu/groups/refresh.rb +2 -2
- data/lib/vedeu/interfaces/clear.rb +2 -2
- data/lib/vedeu/output/refresh.rb +2 -2
- data/lib/vedeu/repositories/model.rb +2 -6
- data/lib/vedeu/repositories/repository.rb +17 -6
- data/lib/vedeu/runtime/flags.rb +2 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/borders/border_test.rb +128 -12
- data/test/lib/vedeu/cursors/dsl_test.rb +13 -0
- metadata +72 -2
@@ -102,50 +102,15 @@ module Vedeu
|
|
102
102
|
# @return [Array<Array<Vedeu::Views::Char>>]
|
103
103
|
def output
|
104
104
|
Vedeu.timer("Drawing border: '#{name}'".freeze) do
|
105
|
-
[
|
105
|
+
[
|
106
|
+
(top if top?),
|
107
|
+
(left if left?),
|
108
|
+
(right if right?),
|
109
|
+
(bottom if bottom?),
|
110
|
+
].flatten
|
106
111
|
end
|
107
112
|
end
|
108
113
|
|
109
|
-
# Creates the bottom left border character.
|
110
|
-
#
|
111
|
-
# @return [NilClass|Vedeu::Cells::Border|Vedeu::Views::Char]
|
112
|
-
def build_bottom_left
|
113
|
-
return nil unless left?
|
114
|
-
return bottom_left if bottom_left
|
115
|
-
|
116
|
-
Vedeu::Cells::BottomLeft.new(attributes)
|
117
|
-
end
|
118
|
-
|
119
|
-
# Creates the bottom right border character.
|
120
|
-
#
|
121
|
-
# @return [NilClass|Vedeu::Cells::Border|Vedeu::Views::Char]
|
122
|
-
def build_bottom_right
|
123
|
-
return nil unless right?
|
124
|
-
return bottom_right if bottom_right
|
125
|
-
|
126
|
-
Vedeu::Cells::BottomRight.new(attributes)
|
127
|
-
end
|
128
|
-
|
129
|
-
# Creates the top left border character.
|
130
|
-
#
|
131
|
-
# @return [NilClass|Vedeu::Cells::Border|Vedeu::Views::Char]
|
132
|
-
def build_top_left
|
133
|
-
return nil unless left?
|
134
|
-
return top_left if top_left
|
135
|
-
|
136
|
-
Vedeu::Cells::TopLeft.new(attributes)
|
137
|
-
end
|
138
|
-
|
139
|
-
# Creates the top right border character.
|
140
|
-
#
|
141
|
-
# @return [NilClass|Vedeu::Cells::Border|Vedeu::Views::Char]
|
142
|
-
def build_top_right
|
143
|
-
return nil unless right?
|
144
|
-
return top_right if top_right
|
145
|
-
|
146
|
-
Vedeu::Cells::TopRight.new(attributes)
|
147
|
-
end
|
148
|
-
|
149
114
|
# Renders the bottom border for the interface.
|
150
115
|
#
|
151
116
|
# @note
|
@@ -155,9 +120,7 @@ module Vedeu
|
|
155
120
|
#
|
156
121
|
# @return [String]
|
157
122
|
def bottom
|
158
|
-
|
159
|
-
|
160
|
-
[build_bottom_left, captionbar, build_bottom_right].compact
|
123
|
+
[(bottom_left if left?), captionbar, (bottom_right if right?)].compact
|
161
124
|
end
|
162
125
|
|
163
126
|
# Returns the geometry for the interface.
|
@@ -182,10 +145,8 @@ module Vedeu
|
|
182
145
|
#
|
183
146
|
# @return [Array<void>]
|
184
147
|
def left
|
185
|
-
return [] unless left?
|
186
|
-
|
187
148
|
build_collection(bordered_height) do |iy|
|
188
|
-
cell =
|
149
|
+
cell = left_vertical.dup
|
189
150
|
cell.position = [by + iy, x]
|
190
151
|
cell
|
191
152
|
end
|
@@ -195,10 +156,8 @@ module Vedeu
|
|
195
156
|
#
|
196
157
|
# @return [Array<void>]
|
197
158
|
def right
|
198
|
-
return [] unless right?
|
199
|
-
|
200
159
|
build_collection(bordered_height) do |iy|
|
201
|
-
cell =
|
160
|
+
cell = right_vertical.dup
|
202
161
|
cell.position = [by + iy, xn]
|
203
162
|
cell
|
204
163
|
end
|
@@ -213,9 +172,7 @@ module Vedeu
|
|
213
172
|
#
|
214
173
|
# @return [String]
|
215
174
|
def top
|
216
|
-
|
217
|
-
|
218
|
-
[build_top_left, titlebar, build_top_right].compact
|
175
|
+
[(top_left if left?), titlebar, (top_right if right?)].compact
|
219
176
|
end
|
220
177
|
|
221
178
|
# An optional caption for when the bottom border is to be shown.
|
@@ -223,20 +180,15 @@ module Vedeu
|
|
223
180
|
# @return [Array<Vedeu::Views::Char>]
|
224
181
|
# @see [Vedeu::Borders::Caption#render]
|
225
182
|
def captionbar
|
226
|
-
|
227
|
-
|
228
|
-
Vedeu::Borders::Caption.render(name, caption, build_bottom)
|
229
|
-
end
|
230
|
-
|
231
|
-
# Creates a bottom border character.
|
232
|
-
#
|
233
|
-
# @return [Array<Vedeu::Views::Char>]
|
234
|
-
def build_bottom
|
235
|
-
build_collection(bordered_width) do |ix|
|
236
|
-
cell = bottom_horizontal_cell.dup
|
183
|
+
characters = build_collection(bordered_width) do |ix|
|
184
|
+
cell = bottom_horizontal.dup
|
237
185
|
cell.position = [yn, bx + ix]
|
238
186
|
cell
|
239
187
|
end
|
188
|
+
|
189
|
+
return characters unless present?(caption)
|
190
|
+
|
191
|
+
Vedeu::Borders::Caption.render(name, caption, characters)
|
240
192
|
end
|
241
193
|
|
242
194
|
# An optional title for when the top border is to be shown.
|
@@ -244,60 +196,15 @@ module Vedeu
|
|
244
196
|
# @return [Array<Vedeu::Views::Char>]
|
245
197
|
# @see [Vedeu::Borders::Title#render]
|
246
198
|
def titlebar
|
247
|
-
|
248
|
-
|
249
|
-
Vedeu::Borders::Title.render(name, title, build_top)
|
250
|
-
end
|
251
|
-
|
252
|
-
# Creates a top border character.
|
253
|
-
#
|
254
|
-
# @return [Array<Vedeu::Views::Char>]
|
255
|
-
def build_top
|
256
|
-
build_collection(bordered_width) do |ix|
|
257
|
-
cell = top_horizontal_cell.dup
|
199
|
+
characters = build_collection(bordered_width) do |ix|
|
200
|
+
cell = top_horizontal.dup
|
258
201
|
cell.position = [y, bx + ix]
|
259
202
|
cell
|
260
203
|
end
|
261
|
-
end
|
262
|
-
|
263
|
-
# Return the client application configured left vertical cell
|
264
|
-
# character, or the default if not set.
|
265
|
-
#
|
266
|
-
# @return [Vedeu::Cells::LeftVertical]
|
267
|
-
def left_vertical_cell
|
268
|
-
return left_vertical if left_vertical
|
269
|
-
|
270
|
-
Vedeu::Cells::LeftVertical.new(attributes)
|
271
|
-
end
|
272
204
|
|
273
|
-
|
274
|
-
# character, or the default if not set.
|
275
|
-
#
|
276
|
-
# @return [Vedeu::Cells::RightVertical]
|
277
|
-
def right_vertical_cell
|
278
|
-
return right_vertical if right_vertical
|
279
|
-
|
280
|
-
Vedeu::Cells::RightVertical.new(attributes)
|
281
|
-
end
|
282
|
-
|
283
|
-
# Return the client application configured top horizontal cell
|
284
|
-
# character, or the default if not set.
|
285
|
-
#
|
286
|
-
# @return [Vedeu::Cells::TopHorizontal]
|
287
|
-
def top_horizontal_cell
|
288
|
-
return top_horizontal if top_horizontal
|
289
|
-
|
290
|
-
Vedeu::Cells::TopHorizontal.new(attributes)
|
291
|
-
end
|
292
|
-
|
293
|
-
# Return the client application configured bottom horizontal
|
294
|
-
# cell character, or the default if not set.
|
295
|
-
#
|
296
|
-
# @return [Vedeu::Cells::BottomHorizontal]
|
297
|
-
def bottom_horizontal_cell
|
298
|
-
return bottom_horizontal if bottom_horizontal
|
205
|
+
return characters unless present?(title)
|
299
206
|
|
300
|
-
Vedeu::
|
207
|
+
Vedeu::Borders::Title.render(name, title, characters)
|
301
208
|
end
|
302
209
|
|
303
210
|
# Build a collection with the given size of objects given within
|
@@ -313,4 +220,13 @@ module Vedeu
|
|
313
220
|
|
314
221
|
end # Borders
|
315
222
|
|
223
|
+
# :nocov:
|
224
|
+
|
225
|
+
# See {file:docs/borders.md#label-3A_refresh_border_}
|
226
|
+
Vedeu.bind(:_refresh_border_) do |name|
|
227
|
+
Vedeu::Borders::Refresh.by_name(name) if Vedeu.ready?
|
228
|
+
end
|
229
|
+
|
230
|
+
# :nocov:
|
231
|
+
|
316
232
|
end # Vedeu
|
@@ -28,11 +28,6 @@ module Vedeu
|
|
28
28
|
|
29
29
|
# :nocov:
|
30
30
|
|
31
|
-
# See {file:docs/borders.md#label-3A_refresh_border_}
|
32
|
-
Vedeu.bind(:_refresh_border_) do |name|
|
33
|
-
Vedeu::Borders::Refresh.by_name(name)
|
34
|
-
end
|
35
|
-
|
36
31
|
# See {file:docs/borders.md#label-3A_set_border_caption_}
|
37
32
|
Vedeu.bind(:_set_border_caption_) do |name, caption|
|
38
33
|
Vedeu::Borders::SetAttribute.update(name, :title, caption)
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
@@ -69,9 +69,7 @@ module Vedeu
|
|
69
69
|
#
|
70
70
|
# @return [Boolean] Whether the buffer targetted has content.
|
71
71
|
def back?
|
72
|
-
|
73
|
-
|
74
|
-
true
|
72
|
+
(back.nil? || back.lines.empty?) ? false : true
|
75
73
|
end
|
76
74
|
|
77
75
|
# Return a boolean indicating whether the cursor should be
|
@@ -107,9 +105,7 @@ module Vedeu
|
|
107
105
|
#
|
108
106
|
# @return [Boolean] Whether the buffer targetted has content.
|
109
107
|
def front?
|
110
|
-
|
111
|
-
|
112
|
-
true
|
108
|
+
(front.nil? || front.lines.empty?) ? false : true
|
113
109
|
end
|
114
110
|
|
115
111
|
# Return a boolean indicating content presence on the buffer
|
@@ -117,9 +113,7 @@ module Vedeu
|
|
117
113
|
#
|
118
114
|
# @return [Boolean] Whether the buffer targetted has content.
|
119
115
|
def previous?
|
120
|
-
|
121
|
-
|
122
|
-
true
|
116
|
+
(previous.nil? || previous.lines.empty?) ? false : true
|
123
117
|
end
|
124
118
|
|
125
119
|
# Retrieve the latest content from the buffer.
|
@@ -137,18 +131,20 @@ module Vedeu
|
|
137
131
|
#
|
138
132
|
# @return [Array<Array<Array<Vedeu::Views::Char>>>]
|
139
133
|
def render
|
140
|
-
if back?
|
141
|
-
|
134
|
+
current = if back?
|
135
|
+
swap
|
142
136
|
|
143
|
-
|
137
|
+
front
|
144
138
|
|
145
|
-
|
146
|
-
|
139
|
+
elsif front?
|
140
|
+
front
|
147
141
|
|
148
|
-
|
149
|
-
|
142
|
+
elsif previous?
|
143
|
+
previous
|
150
144
|
|
151
|
-
|
145
|
+
end
|
146
|
+
|
147
|
+
Vedeu::Output::Viewport.render(current) unless current.nil?
|
152
148
|
end
|
153
149
|
|
154
150
|
# Returns the number of lines of content for the buffer or 0 if
|
@@ -85,14 +85,14 @@ module Vedeu
|
|
85
85
|
|
86
86
|
# :nocov:
|
87
87
|
|
88
|
-
# See {file:docs/events/refresh.md
|
88
|
+
# See {file:docs/events/refresh.md}
|
89
89
|
Vedeu.bind(:_refresh_view_) do |name|
|
90
|
-
Vedeu::Buffers::Refresh.by_name(name)
|
90
|
+
Vedeu::Buffers::Refresh.by_name(name) if Vedeu.ready?
|
91
91
|
end
|
92
92
|
|
93
|
-
# See {file:docs/events/refresh.md
|
93
|
+
# See {file:docs/events/refresh.md}
|
94
94
|
Vedeu.bind(:_refresh_view_content_) do |name|
|
95
|
-
Vedeu::Buffers::Refresh.refresh_content_by_name(name)
|
95
|
+
Vedeu::Buffers::Refresh.refresh_content_by_name(name) if Vedeu.ready?
|
96
96
|
end
|
97
97
|
|
98
98
|
# :nocov:
|
@@ -51,7 +51,7 @@ module Vedeu
|
|
51
51
|
#
|
52
52
|
# @return [Array]
|
53
53
|
def by_name
|
54
|
-
|
54
|
+
Vedeu.trigger(:_refresh_view_content_, name) if refresh_view?
|
55
55
|
|
56
56
|
Vedeu.log(type: :cursor,
|
57
57
|
message: "Refreshing cursor: '#{name}' (x:#{x}, y:#{y}, " \
|
@@ -67,11 +67,6 @@ module Vedeu
|
|
67
67
|
present?(@name) ? @name : Vedeu.focus
|
68
68
|
end
|
69
69
|
|
70
|
-
# @return [void]
|
71
|
-
def refresh_view
|
72
|
-
Vedeu.trigger(:_refresh_view_content_, name)
|
73
|
-
end
|
74
|
-
|
75
70
|
# Returns true when the view should be refreshed. This is
|
76
71
|
# determined by checking that the offsets for x and y are
|
77
72
|
# outside the (bordered) width and (bordered) height of the
|
@@ -103,7 +98,7 @@ module Vedeu
|
|
103
98
|
|
104
99
|
# See {file:docs/events/refresh.md#\_refresh_cursor_}
|
105
100
|
Vedeu.bind(:_refresh_cursor_) do |name|
|
106
|
-
Vedeu::Cursors::Refresh.by_name(name)
|
101
|
+
Vedeu::Cursors::Refresh.by_name(name) if Vedeu.ready?
|
107
102
|
end
|
108
103
|
|
109
104
|
# :nocov:
|
data/lib/vedeu/groups/clear.rb
CHANGED
@@ -67,7 +67,9 @@ module Vedeu
|
|
67
67
|
# :nocov:
|
68
68
|
|
69
69
|
# See {file:docs/events/visibility.md#\_clear_group_}
|
70
|
-
Vedeu.bind(:_clear_group_)
|
70
|
+
Vedeu.bind(:_clear_group_) do |name|
|
71
|
+
Vedeu.clear_by_group(name) if Vedeu.ready?
|
72
|
+
end
|
71
73
|
|
72
74
|
# :nocov:
|
73
75
|
|
data/lib/vedeu/groups/refresh.rb
CHANGED
@@ -77,9 +77,9 @@ module Vedeu
|
|
77
77
|
|
78
78
|
# :nocov:
|
79
79
|
|
80
|
-
# See {file:docs/events/refresh.md
|
80
|
+
# See {file:docs/events/refresh.md}
|
81
81
|
Vedeu.bind(:_refresh_group_) do |name|
|
82
|
-
Vedeu::Groups::Refresh.by_name(name)
|
82
|
+
Vedeu::Groups::Refresh.by_name(name) if Vedeu.ready?
|
83
83
|
end
|
84
84
|
|
85
85
|
# :nocov:
|
@@ -235,11 +235,11 @@ module Vedeu
|
|
235
235
|
# :nocov:
|
236
236
|
|
237
237
|
# See {file:docs/events/visibility.md#\_clear_view_}
|
238
|
-
Vedeu.bind(:_clear_view_) { |name| Vedeu.clear_by_name(name) }
|
238
|
+
Vedeu.bind(:_clear_view_) { |name| Vedeu.clear_by_name(name) if Vedeu.ready? }
|
239
239
|
|
240
240
|
# See {file:docs/events/visibility.md#\_clear_view_content_}
|
241
241
|
Vedeu.bind(:_clear_view_content_) do |name|
|
242
|
-
Vedeu.clear_content_by_name(name)
|
242
|
+
Vedeu.clear_content_by_name(name) if Vedeu.ready?
|
243
243
|
end
|
244
244
|
|
245
245
|
# :nocov:
|
data/lib/vedeu/output/refresh.rb
CHANGED
@@ -32,8 +32,8 @@ module Vedeu
|
|
32
32
|
|
33
33
|
# :nocov:
|
34
34
|
|
35
|
-
# See {file:docs/events/refresh.md
|
36
|
-
Vedeu.bind(:_refresh_) { Vedeu::Output::Refresh.all }
|
35
|
+
# See {file:docs/events/refresh.md}
|
36
|
+
Vedeu.bind(:_refresh_) { Vedeu::Output::Refresh.all if Vedeu.ready? }
|
37
37
|
|
38
38
|
# :nocov:
|
39
39
|
|
@@ -108,12 +108,8 @@ module Vedeu
|
|
108
108
|
# after yielding.
|
109
109
|
# @todo Perhaps some validation could be added here?
|
110
110
|
# @return [void] The model instance stored in the repository.
|
111
|
-
def store
|
112
|
-
|
113
|
-
|
114
|
-
yield if block_given?
|
115
|
-
|
116
|
-
new_model
|
111
|
+
def store(&block)
|
112
|
+
repository.store(self, &block)
|
117
113
|
end
|
118
114
|
|
119
115
|
end # Model
|
@@ -156,20 +156,22 @@ module Vedeu
|
|
156
156
|
# Stores the model instance by name in the repository of the
|
157
157
|
# model.
|
158
158
|
#
|
159
|
+
# @note If a block is given, store the model, return the model
|
160
|
+
# after yielding.
|
159
161
|
# @param model [void] A model instance.
|
160
162
|
# @raise [Vedeu::Error::MissingRequired] When the name attribute
|
161
163
|
# is not defined.
|
162
164
|
# @return [void] The model instance which was stored.
|
163
|
-
def store(model)
|
164
|
-
|
165
|
-
fail Vedeu::Error::MissingRequired,
|
166
|
-
"Cannot store model '#{model.class}' " \
|
167
|
-
'without a name attribute.'.freeze
|
168
|
-
end
|
165
|
+
def store(model, &block)
|
166
|
+
valid_model?(model)
|
169
167
|
|
170
168
|
log_store(model)
|
171
169
|
|
172
170
|
storage[model.name] = model
|
171
|
+
|
172
|
+
yield if block_given?
|
173
|
+
|
174
|
+
model
|
173
175
|
end
|
174
176
|
alias_method :register, :store
|
175
177
|
alias_method :add, :store
|
@@ -185,6 +187,15 @@ module Vedeu
|
|
185
187
|
message: "#{model.class.name}: '#{model.name}'".freeze)
|
186
188
|
end
|
187
189
|
|
190
|
+
#
|
191
|
+
# @param model [void] A model instance.
|
192
|
+
# @return [Boolean]
|
193
|
+
def valid_model?(model)
|
194
|
+
fail Vedeu::Error::MissingRequired,
|
195
|
+
"Cannot store model '#{model.class}' without a name " \
|
196
|
+
'attribute.'.freeze unless present?(model.name)
|
197
|
+
end
|
198
|
+
|
188
199
|
end # Repository
|
189
200
|
|
190
201
|
end # Repositories
|