vedeu 0.4.16 → 0.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vedeu/api.rb +7 -21
- data/lib/vedeu/bindings.rb +2 -6
- data/lib/vedeu/buffers/buffer.rb +29 -34
- data/lib/vedeu/cursor/cursor.rb +5 -2
- data/lib/vedeu/distributed/all.rb +5 -5
- data/lib/vedeu/distributed/server.rb +1 -1
- data/lib/vedeu/dsl/components/border.rb +1 -2
- data/lib/vedeu/dsl/components/geometry.rb +0 -47
- data/lib/vedeu/dsl/interface.rb +4 -11
- data/lib/vedeu/dsl/line.rb +1 -2
- data/lib/vedeu/dsl/shared/all.rb +1 -2
- data/lib/vedeu/dsl/shared/{colour.rb → presentation.rb} +27 -4
- data/lib/vedeu/dsl/shared/use.rb +50 -29
- data/lib/vedeu/dsl/stream.rb +1 -2
- data/lib/vedeu/geometry/geometry.rb +22 -11
- data/lib/vedeu/geometry/index_position.rb +0 -19
- data/lib/vedeu/geometry/position_validator.rb +8 -8
- data/lib/vedeu/models/interface.rb +34 -76
- data/lib/vedeu/models/null_interface.rb +5 -0
- data/lib/vedeu/models/stream.rb +1 -1
- data/lib/vedeu/output/border.rb +25 -41
- data/lib/vedeu/output/clear.rb +1 -7
- data/lib/vedeu/output/esc.rb +10 -10
- data/lib/vedeu/output/presentation.rb +2 -0
- data/lib/vedeu/output/renderers/escape_sequence_renderer.rb +3 -0
- data/lib/vedeu/repositories/model.rb +6 -0
- data/lib/vedeu/repositories/repositories/groups.rb +12 -0
- data/lib/vedeu/repositories/repository.rb +11 -8
- data/lib/vedeu/storage/all.rb +4 -4
- data/lib/vedeu/support/visibility.rb +8 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +0 -2
- data/test/lib/vedeu/cursor/cursor_test.rb +14 -0
- data/test/lib/vedeu/dsl/components/border_test.rb +2 -2
- data/test/lib/vedeu/dsl/components/geometry_test.rb +63 -82
- data/test/lib/vedeu/dsl/components/keymap_test.rb +3 -3
- data/test/lib/vedeu/dsl/components/menu_test.rb +8 -8
- data/test/lib/vedeu/dsl/interface_test.rb +14 -22
- data/test/lib/vedeu/dsl/line_test.rb +4 -4
- data/test/lib/vedeu/dsl/shared/{colour_test.rb → presentation_test.rb} +19 -11
- data/test/lib/vedeu/dsl/shared/text_test.rb +15 -15
- data/test/lib/vedeu/dsl/shared/use_test.rb +24 -7
- data/test/lib/vedeu/geometry/geometry_test.rb +22 -19
- data/test/lib/vedeu/geometry/grid_test.rb +3 -3
- data/test/lib/vedeu/geometry/index_position_test.rb +0 -45
- data/test/lib/vedeu/geometry/position_test.rb +5 -5
- data/test/lib/vedeu/models/cell_test.rb +3 -3
- data/test/lib/vedeu/models/char_test.rb +5 -5
- data/test/lib/vedeu/models/interface_test.rb +7 -53
- data/test/lib/vedeu/models/null_test.rb +2 -2
- data/test/lib/vedeu/models/stream_test.rb +5 -5
- data/test/lib/vedeu/output/border_test.rb +1 -0
- data/test/lib/vedeu/output/colour_test.rb +16 -16
- data/test/lib/vedeu/output/esc_test.rb +15 -1
- data/test/lib/vedeu/output/html_char_test.rb +4 -4
- data/test/lib/vedeu/output/style_test.rb +15 -13
- data/test/lib/vedeu/output/text_test.rb +3 -3
- data/test/lib/vedeu/repositories/collection_test.rb +2 -2
- data/test/lib/vedeu/repositories/model_test.rb +19 -0
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +22 -0
- data/test/lib/vedeu/repositories/repository_test.rb +50 -16
- data/test/lib/vedeu/support/common_test.rb +5 -5
- data/test/lib/vedeu/support/terminal_test.rb +3 -3
- data/test/lib/vedeu/support/visibility_test.rb +8 -0
- data/test/support/helpers/model_test_class.rb +18 -0
- data/test/test_helper.rb +1 -1
- data/vedeu.gemspec +2 -2
- metadata +7 -20
- data/lib/vedeu/dsl/shared/style.rb +0 -39
- data/test/lib/vedeu/dsl/shared/style_test.rb +0 -25
- data/test/support/helpers/all.rb +0 -5
- data/test/support/helpers/dsl_model_test_class.rb +0 -25
- data/test/support/helpers/helpers.rb +0 -17
- data/test/support/helpers/repositories.rb +0 -26
- data/test/support/helpers/repository_test_module.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: adae57ef3023290f75d36a2744e07ef707297278
|
4
|
+
data.tar.gz: ae4a68bbb7eb2254a774a93bfc41eac41b9e57b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70f4525ba7779abc257a051e2c82952f36ec208a207f511d67c70a1eb7e5d8c0ff741c36fc54c887a7265580bfc042e18de418b537af661af332317980806ce6
|
7
|
+
data.tar.gz: be52af102efe89af2e0b17419ce9bae9b815eb45516a72970f7f4efafe74614f8516912e2602fd2c066bdcdad3af1a823bc47cd8b5d32f0da0ea3f824326cf55
|
data/lib/vedeu/api.rb
CHANGED
@@ -95,8 +95,7 @@ module Vedeu
|
|
95
95
|
# @see Vedeu::Event.bind
|
96
96
|
# @!method unbind
|
97
97
|
# @see Vedeu::Event.unbind
|
98
|
-
def_delegators Vedeu::Event, :bind,
|
99
|
-
:unbind
|
98
|
+
def_delegators Vedeu::Event, :bind, :unbind
|
100
99
|
|
101
100
|
# @!method trigger
|
102
101
|
# @see Vedeu::Trigger.trigger
|
@@ -106,8 +105,7 @@ module Vedeu
|
|
106
105
|
# @see Vedeu::Configuration.configure
|
107
106
|
# @!method configuration
|
108
107
|
# @see Vedeu::Configuration.configuration
|
109
|
-
def_delegators Vedeu::Configuration, :configure,
|
110
|
-
:configuration
|
108
|
+
def_delegators Vedeu::Configuration, :configure, :configuration
|
111
109
|
|
112
110
|
# @!method border
|
113
111
|
# @see Vedeu::DSL::Border.border
|
@@ -125,19 +123,13 @@ module Vedeu
|
|
125
123
|
# @see Vedeu::DSL::Group.group
|
126
124
|
def_delegators Vedeu::DSL::Group, :group
|
127
125
|
|
128
|
-
# @!method use
|
129
|
-
# @see Vedeu::DSL::Use#use
|
130
|
-
def_delegators Vedeu::DSL::Use, :use
|
131
|
-
|
132
126
|
# @!method interface
|
133
127
|
# @see Vedeu::DSL::View.interface
|
134
128
|
# @!method renders
|
135
129
|
# @see Vedeu::DSL::View.renders
|
136
130
|
# @!method views
|
137
131
|
# @see Vedeu::DSL::View.views
|
138
|
-
def_delegators Vedeu::DSL::View, :interface,
|
139
|
-
:renders,
|
140
|
-
:views
|
132
|
+
def_delegators Vedeu::DSL::View, :interface, :renders, :views
|
141
133
|
|
142
134
|
# @!method focus
|
143
135
|
# @see Vedeu::Focus#focus
|
@@ -149,11 +141,8 @@ module Vedeu
|
|
149
141
|
# @see Vedeu::Focus#focus_next
|
150
142
|
# @!method focus_previous
|
151
143
|
# @see Vedeu::Focus#focus_previous
|
152
|
-
def_delegators Vedeu::Focus, :focus,
|
153
|
-
:
|
154
|
-
:focussed?,
|
155
|
-
:focus_next,
|
156
|
-
:focus_previous
|
144
|
+
def_delegators Vedeu::Focus, :focus, :focus_by_name, :focussed?,
|
145
|
+
:focus_next, :focus_previous
|
157
146
|
|
158
147
|
# @!method log
|
159
148
|
# @see Vedeu::Log.log
|
@@ -169,16 +158,13 @@ module Vedeu
|
|
169
158
|
# @see Vedeu::Terminal#width
|
170
159
|
# @!method resize
|
171
160
|
# @see Vedeu::Terminal#resize
|
172
|
-
def_delegators Vedeu::Terminal, :height,
|
173
|
-
:width,
|
174
|
-
:resize
|
161
|
+
def_delegators Vedeu::Terminal, :height, :width, :resize
|
175
162
|
|
176
163
|
# @!method renderer
|
177
164
|
# @see Vedeu::Renderers#renderer
|
178
165
|
# @!method renderers
|
179
166
|
# @see Vedeu::Renderers#renderers
|
180
|
-
def_delegators Vedeu::Renderers, :renderer,
|
181
|
-
:renderers
|
167
|
+
def_delegators Vedeu::Renderers, :renderer, :renderers
|
182
168
|
|
183
169
|
end # API
|
184
170
|
|
data/lib/vedeu/bindings.rb
CHANGED
@@ -93,16 +93,12 @@ module Vedeu
|
|
93
93
|
|
94
94
|
# Hide the cursor of the named interface or interface currently in focus.
|
95
95
|
Vedeu.bind(:_cursor_hide_) do |name|
|
96
|
-
|
97
|
-
|
98
|
-
Vedeu::Visibility.hide(named)
|
96
|
+
Vedeu::Visibility.for_cursor(name).hide
|
99
97
|
end
|
100
98
|
|
101
99
|
# Show the cursor of the named interface or interface currently in focus.
|
102
100
|
Vedeu.bind(:_cursor_show_) do |name|
|
103
|
-
|
104
|
-
|
105
|
-
Vedeu::Visibility.show(named)
|
101
|
+
Vedeu::Visibility.for_cursor(name).show
|
106
102
|
end
|
107
103
|
|
108
104
|
# @see {Vedeu::Move}
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
@@ -43,27 +43,21 @@ module Vedeu
|
|
43
43
|
# @option attributes front [Interface]
|
44
44
|
# @option attributes previous [Interface]
|
45
45
|
# @option attributes repository [Vedeu::Buffers]
|
46
|
-
# @return [Buffer]
|
46
|
+
# @return [Vedeu::Buffer]
|
47
47
|
def initialize(attributes = {})
|
48
48
|
@attributes = defaults.merge!(attributes)
|
49
49
|
|
50
|
-
@
|
51
|
-
|
52
|
-
|
53
|
-
@previous = @attributes[:previous]
|
54
|
-
@repository = @attributes[:repository] || Vedeu.buffers
|
50
|
+
@attributes.each do |key, value|
|
51
|
+
instance_variable_set("@#{key}", value)
|
52
|
+
end
|
55
53
|
end
|
56
54
|
|
57
|
-
# Add the content to the back buffer, then update the repository.
|
58
|
-
# boolean indicating that the repository was updated.
|
59
|
-
# overridden colours or styles in the buffered view to the stored interface.
|
55
|
+
# Add the content to the back buffer, then update the repository.
|
56
|
+
# Returns boolean indicating that the repository was updated.
|
60
57
|
#
|
61
|
-
# @param content [Interface]
|
58
|
+
# @param content [Vedeu::Interface]
|
62
59
|
# @return [Boolean]
|
63
60
|
def add(content)
|
64
|
-
content.colour = interface.colour unless content.colour
|
65
|
-
content.style = interface.style unless content.style
|
66
|
-
|
67
61
|
@back = content
|
68
62
|
|
69
63
|
store
|
@@ -82,24 +76,8 @@ module Vedeu
|
|
82
76
|
# 'previous' buffer.
|
83
77
|
# - If the 'previous' buffer is empty, return an empty collection.
|
84
78
|
#
|
85
|
-
# @return [Array<
|
79
|
+
# @return [Array<Array<Array<Vedeu::Char>>>]
|
86
80
|
def render
|
87
|
-
buffer = if content_for?(:back)
|
88
|
-
swap
|
89
|
-
|
90
|
-
[front.render]
|
91
|
-
|
92
|
-
elsif content_for?(:front)
|
93
|
-
[front.render]
|
94
|
-
|
95
|
-
elsif content_for?(:previous)
|
96
|
-
[previous.render]
|
97
|
-
|
98
|
-
else
|
99
|
-
[]
|
100
|
-
|
101
|
-
end
|
102
|
-
|
103
81
|
Vedeu::Output.render(buffer) unless buffer.empty?
|
104
82
|
|
105
83
|
buffer
|
@@ -117,6 +95,22 @@ module Vedeu
|
|
117
95
|
|
118
96
|
private
|
119
97
|
|
98
|
+
# @return [Array<Array<Array<Vedeu::Char>>>]
|
99
|
+
def buffer
|
100
|
+
swap if content_for?(:back)
|
101
|
+
|
102
|
+
if content_for?(:front)
|
103
|
+
[front.render]
|
104
|
+
|
105
|
+
elsif content_for?(:previous)
|
106
|
+
[previous.render]
|
107
|
+
|
108
|
+
else
|
109
|
+
[]
|
110
|
+
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
120
114
|
# @return [void]
|
121
115
|
def clear_buffer
|
122
116
|
@clear_buffer ||= Vedeu::Clear.new(view).clear
|
@@ -125,10 +119,11 @@ module Vedeu
|
|
125
119
|
# @return [Hash<Symbol => NilClass, String>]
|
126
120
|
def defaults
|
127
121
|
{
|
128
|
-
back:
|
129
|
-
front:
|
130
|
-
name:
|
131
|
-
previous:
|
122
|
+
back: nil,
|
123
|
+
front: nil,
|
124
|
+
name: '',
|
125
|
+
previous: nil,
|
126
|
+
repository: Vedeu.buffers,
|
132
127
|
}
|
133
128
|
end
|
134
129
|
|
data/lib/vedeu/cursor/cursor.rb
CHANGED
@@ -8,8 +8,11 @@ module Vedeu
|
|
8
8
|
#
|
9
9
|
class Cursor
|
10
10
|
|
11
|
+
extend Forwardable
|
11
12
|
include Vedeu::Model
|
12
13
|
|
14
|
+
def_delegators Vedeu::Esc, :hide_cursor, :show_cursor
|
15
|
+
|
13
16
|
# @!attribute [r] attributes
|
14
17
|
# @return [Hash]
|
15
18
|
attr_reader :attributes
|
@@ -133,10 +136,10 @@ module Vedeu
|
|
133
136
|
# @return [String]
|
134
137
|
def visibility
|
135
138
|
if visible?
|
136
|
-
|
139
|
+
show_cursor
|
137
140
|
|
138
141
|
else
|
139
|
-
|
142
|
+
hide_cursor
|
140
143
|
|
141
144
|
end
|
142
145
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
require_relative 'uri'
|
2
|
+
require_relative 'server'
|
3
|
+
require_relative 'client'
|
4
|
+
require_relative 'subprocess'
|
5
|
+
require_relative 'test_application'
|
6
6
|
|
7
7
|
module Vedeu
|
8
8
|
|
@@ -78,53 +78,6 @@ module Vedeu
|
|
78
78
|
model.height = value
|
79
79
|
end
|
80
80
|
|
81
|
-
# Use the geometry of another interface as the basis for the geometry you
|
82
|
-
# are creating.
|
83
|
-
#
|
84
|
-
# @example
|
85
|
-
# geometry 'some_interface' do
|
86
|
-
# use 'other_interface' # will fetch the geometry of 'other_interface'
|
87
|
-
# # ...
|
88
|
-
#
|
89
|
-
# geometry 'other_interface' do
|
90
|
-
# centred!
|
91
|
-
# height 4
|
92
|
-
# # ...
|
93
|
-
#
|
94
|
-
# geometry 'some_interface' do
|
95
|
-
# use 'other_interface' # will fetch the geometry of 'other_interface'
|
96
|
-
# centred false
|
97
|
-
# # ...
|
98
|
-
#
|
99
|
-
# @note
|
100
|
-
# - When using 'use', the 'other_interface' (from the example) must
|
101
|
-
# already exist.
|
102
|
-
# - When using 'use', note that geometry defined before it's invocation
|
103
|
-
# will be overwritten by 'other_interface',
|
104
|
-
# - and geometry defined after will overwrite the inherited geometry.
|
105
|
-
# - Special geometry settings, like 'centred' also cause unexpected
|
106
|
-
# behaviour. If 'other_interface' was centred, then 'some_interface'
|
107
|
-
# will also be centred, to disable this, declare 'some_interface' to
|
108
|
-
# not be centred.
|
109
|
-
#
|
110
|
-
# @param name [String] The name of the interface you wish to use the
|
111
|
-
# geometry of.
|
112
|
-
# @raise [ModelNotFound] When the geometry to be used does not exist yet.
|
113
|
-
# @return [Vedeu::Geometry]
|
114
|
-
# def use(name)
|
115
|
-
# if Vedeu.geometries.registered?(name)
|
116
|
-
# other = Vedeu.geometries.find(name).dup
|
117
|
-
# other.name = name
|
118
|
-
# @model = other
|
119
|
-
# @model.store
|
120
|
-
|
121
|
-
# else
|
122
|
-
# fail ModelNotFound, "Cannot use the geometry of '#{name}', as it " \
|
123
|
-
# "is not yet defined."
|
124
|
-
|
125
|
-
# end
|
126
|
-
# end
|
127
|
-
|
128
81
|
# Specify the number of characters/columns wide the interface will be.
|
129
82
|
#
|
130
83
|
# @param value [Fixnum]
|
data/lib/vedeu/dsl/interface.rb
CHANGED
@@ -16,8 +16,7 @@ module Vedeu
|
|
16
16
|
|
17
17
|
include Vedeu::Common
|
18
18
|
include Vedeu::DSL
|
19
|
-
include Vedeu::DSL::
|
20
|
-
include Vedeu::DSL::Style
|
19
|
+
include Vedeu::DSL::Presentation
|
21
20
|
include Vedeu::DSL::Text
|
22
21
|
include Vedeu::DSL::Use
|
23
22
|
|
@@ -152,19 +151,13 @@ module Vedeu
|
|
152
151
|
#
|
153
152
|
# @param name [String] The name of the group to which this interface
|
154
153
|
# should belong.
|
155
|
-
# @return [
|
154
|
+
# @return [Vedeu::Group]
|
156
155
|
def group(name)
|
157
156
|
return false unless defined_value?(name)
|
158
|
-
model.group = name
|
159
|
-
|
160
|
-
if Vedeu.groups.registered?(name)
|
161
|
-
Vedeu.groups.find(name).add(model.name)
|
162
157
|
|
163
|
-
|
164
|
-
new_group = Vedeu::Group.new(name: name)
|
165
|
-
new_group.add(model.name)
|
158
|
+
model.group = name
|
166
159
|
|
167
|
-
|
160
|
+
Vedeu.groups.by_name(name).add(model.name)
|
168
161
|
end
|
169
162
|
|
170
163
|
# @see Vedeu::DSL::Keymap.keymap
|
data/lib/vedeu/dsl/line.rb
CHANGED
data/lib/vedeu/dsl/shared/all.rb
CHANGED
@@ -2,12 +2,12 @@ module Vedeu
|
|
2
2
|
|
3
3
|
module DSL
|
4
4
|
|
5
|
-
# Provides colour helpers for use in the {Vedeu::DSL::Interface},
|
5
|
+
# Provides colour and style helpers for use in the {Vedeu::DSL::Interface},
|
6
6
|
# {Vedeu::DSL::Line} and {Vedeu::DSL::Stream} classes.
|
7
7
|
#
|
8
8
|
# @api public
|
9
9
|
#
|
10
|
-
module
|
10
|
+
module Presentation
|
11
11
|
|
12
12
|
# Define the background colour for an interface, line, or a stream. When
|
13
13
|
# called with a block, will create a new stream with the background colour
|
@@ -41,7 +41,7 @@ module Vedeu
|
|
41
41
|
alias_method :bg, :background
|
42
42
|
alias_method :bgcolor, :background
|
43
43
|
|
44
|
-
# @see Vedeu::DSL::
|
44
|
+
# @see Vedeu::DSL::Presentation#background
|
45
45
|
def foreground(value = '')
|
46
46
|
colour(foreground: value)
|
47
47
|
end
|
@@ -78,7 +78,30 @@ module Vedeu
|
|
78
78
|
model.colour = Vedeu::Colour.coerce(attributes)
|
79
79
|
end
|
80
80
|
|
81
|
-
|
81
|
+
# Define a style or styles for an interface, line or a stream.
|
82
|
+
#
|
83
|
+
# @param value [Array<Symbol>|Array<String>|Symbol|String]
|
84
|
+
#
|
85
|
+
# @example
|
86
|
+
# interface 'my_interface' do
|
87
|
+
# style 'normal'
|
88
|
+
# ...
|
89
|
+
#
|
90
|
+
# lines do
|
91
|
+
# style ['bold', 'underline']
|
92
|
+
# ...
|
93
|
+
#
|
94
|
+
# stream do
|
95
|
+
# style 'blink'
|
96
|
+
# ...
|
97
|
+
#
|
98
|
+
# @return [Vedeu::Style]
|
99
|
+
def style(value)
|
100
|
+
model.style = Vedeu::Style.coerce(value)
|
101
|
+
end
|
102
|
+
alias_method :styles, :style
|
103
|
+
|
104
|
+
end # Presentation
|
82
105
|
|
83
106
|
end # DSL
|
84
107
|
|
data/lib/vedeu/dsl/shared/use.rb
CHANGED
@@ -6,41 +6,62 @@ module Vedeu
|
|
6
6
|
#
|
7
7
|
module Use
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
9
|
+
# Duplicate a stored model.
|
10
|
+
#
|
11
|
+
# This DSL method copies the attributes of a stored model, changes the
|
12
|
+
# name to that of the current model, and stores the duplicate as a new
|
13
|
+
# model in model's repository.
|
13
14
|
#
|
14
15
|
# @example
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
16
|
+
# # Here the attributes of 'my_geometry' are used to create the
|
17
|
+
# # new model 'my_other_geometry'.
|
18
|
+
# Vedeu.geometry 'my_other_geometry' do
|
19
|
+
# duplicate('my_geometry')
|
19
20
|
# end
|
20
21
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
22
|
+
# @note
|
23
|
+
# - Only models of the same repository can be used in this way.
|
24
|
+
# - If the stored model cannot be found, the duplicate may not have
|
25
|
+
# the values you required.
|
26
|
+
# - Values defined before will be overwritten by the new values from
|
27
|
+
# the stored model.
|
28
|
+
# - Values defined after will overwrite the values of the new
|
29
|
+
# duplicate model.
|
28
30
|
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
def use(value)
|
37
|
-
if Vedeu.interfaces.registered?(value) == false
|
38
|
-
fail ModelNotFound, "The properties of this interface (#{value}) " \
|
39
|
-
'cannot be used, since the interface has not ' \
|
40
|
-
'been defined.'
|
41
|
-
end
|
31
|
+
# @param name [String] The name of the model to duplicate.
|
32
|
+
# @return [void] The new model based on the original.
|
33
|
+
def duplicate(name)
|
34
|
+
duplicated = model.repository.by_name(name).dup
|
35
|
+
duplicated.name = model.name
|
36
|
+
duplicated.store
|
37
|
+
end
|
42
38
|
|
43
|
-
|
39
|
+
# Use the attribute of stored model.
|
40
|
+
#
|
41
|
+
# This DSL method provides access to a stored model by name. You can
|
42
|
+
# then request an attribute of that model for use within the current
|
43
|
+
# model.
|
44
|
+
#
|
45
|
+
# @example
|
46
|
+
# # Here the character used for 'my_border' is used in
|
47
|
+
# # 'my_other_border'.
|
48
|
+
# Vedeu.border 'my_other_border' do
|
49
|
+
# top_right use('my_border').top_right
|
50
|
+
# end
|
51
|
+
#
|
52
|
+
# @note
|
53
|
+
# - Only models of the same repository can be used in this way.
|
54
|
+
# - If the stored model cannot be found, a ModelNotFound exception may
|
55
|
+
# be raised, or the request for an attribute may raise a
|
56
|
+
# NoMethodError exception.
|
57
|
+
#
|
58
|
+
# @param name [String] The name of the model with the value you wish to
|
59
|
+
# use.
|
60
|
+
# @raise [ModelNotFound|NoMethodError] The model or attribute cannot be
|
61
|
+
# found.
|
62
|
+
# @return [void] The stored model.
|
63
|
+
def use(name)
|
64
|
+
model.repository.by_name(name)
|
44
65
|
end
|
45
66
|
|
46
67
|
end # Use
|