vedeu 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/borders_app.rb +15 -14
- data/examples/colours_app.rb +1 -2
- data/examples/cursor_app.rb +2 -5
- data/examples/geometry_app.rb +141 -0
- data/lib/vedeu.rb +0 -17
- data/lib/vedeu/api.rb +18 -3
- data/lib/vedeu/buffers/all.rb +0 -6
- data/lib/vedeu/buffers/buffer.rb +5 -2
- data/lib/vedeu/cursor/all.rb +0 -13
- data/lib/vedeu/cursor/cursor.rb +1 -1
- data/lib/vedeu/dsl/components/border.rb +94 -12
- data/lib/vedeu/dsl/components/geometry.rb +40 -48
- data/lib/vedeu/dsl/components/keymap.rb +36 -0
- data/lib/vedeu/dsl/interface.rb +20 -5
- data/lib/vedeu/dsl/stream.rb +2 -0
- data/lib/vedeu/events/all.rb +0 -5
- data/lib/vedeu/events/event.rb +2 -1
- data/lib/vedeu/events/trigger.rb +1 -3
- data/lib/vedeu/input/all.rb +7 -12
- data/lib/vedeu/input/keymap.rb +10 -34
- data/lib/vedeu/input/keys.rb +1 -0
- data/lib/vedeu/input/mapper.rb +1 -5
- data/lib/vedeu/models/collection.rb +4 -0
- data/lib/vedeu/models/geometry.rb +2 -1
- data/lib/vedeu/models/model.rb +4 -0
- data/lib/vedeu/models/view/char.rb +10 -0
- data/lib/vedeu/models/view/chars.rb +3 -2
- data/lib/vedeu/models/view/interface.rb +18 -28
- data/lib/vedeu/models/view/interfaces.rb +3 -2
- data/lib/vedeu/models/view/lines.rb +3 -2
- data/lib/vedeu/models/view/stream.rb +1 -1
- data/lib/vedeu/models/view/streams.rb +3 -2
- data/lib/vedeu/output/border.rb +29 -21
- data/lib/vedeu/output/compositor.rb +2 -3
- data/lib/vedeu/output/output.rb +5 -1
- data/lib/vedeu/output/viewport.rb +45 -24
- data/lib/vedeu/output/wordwrap.rb +7 -1
- data/lib/vedeu/output/writer.rb +3 -0
- data/lib/vedeu/presentation/presentation.rb +2 -0
- data/lib/vedeu/repositories/all.rb +107 -1
- data/lib/vedeu/repositories/repository.rb +4 -0
- data/lib/vedeu/support/bounding_area.rb +1 -1
- data/lib/vedeu/support/position_validator.rb +18 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +8 -8
- data/test/lib/vedeu/cursor/move_cursor_test.rb +3 -6
- data/test/lib/vedeu/dsl/components/border_test.rb +53 -4
- data/test/lib/vedeu/dsl/components/geometry_test.rb +0 -24
- data/test/lib/vedeu/dsl/interface_test.rb +11 -3
- data/test/lib/vedeu/events/event_test.rb +2 -2
- data/test/lib/vedeu/models/view/interface_test.rb +1 -25
- data/test/lib/vedeu/models/view/stream_test.rb +8 -0
- data/test/lib/vedeu/output/border_test.rb +159 -81
- data/test/lib/vedeu/output/output_test.rb +1 -2
- data/test/lib/vedeu/output/viewport_test.rb +3 -10
- data/test/lib/vedeu/repositories/all_test.rb +128 -0
- data/test/lib/vedeu/support/content_geometry_test.rb +1 -2
- data/vedeu.gemspec +1 -1
- metadata +3 -13
- data/lib/vedeu/repositories/menus.rb +0 -13
- data/test/lib/vedeu/buffers/all_test.rb +0 -11
- data/test/lib/vedeu/cursor/all_test.rb +0 -33
- data/test/lib/vedeu/events/all_test.rb +0 -11
- data/test/lib/vedeu/input/all_test.rb +0 -11
- data/test/lib/vedeu/repositories/menus_test.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2990a71171d7d18e057affb7e509d13267efbcfb
|
4
|
+
data.tar.gz: 65566020c8f8fa0a069bcf3d8ebff832e5ac378d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2a5b89fc277c8200f574717dd643c2c9b1b689f15f9a913a13ad67ac6f275fa4c7755493eb7452022a53e0941bb97574bdf2e692a1bbdabb93001a2d9a5e674
|
7
|
+
data.tar.gz: a1259cc57c8a5425171af9f16707ea73daa66e709e71dc5ea78ce3d9af756976d55aa8cb3b659cab92469edd1896174ce948984b1e4cda4fc529221d34a24f61
|
data/examples/borders_app.rb
CHANGED
@@ -164,10 +164,23 @@ class VedeuBordersApp
|
|
164
164
|
key('r') { Vedeu.trigger(:_refresh_) }
|
165
165
|
end
|
166
166
|
|
167
|
+
# Borders can be defined as part of a view (see below), or standalone.
|
168
|
+
border 'no_bottom' do
|
169
|
+
show_bottom false
|
170
|
+
end
|
171
|
+
border 'no_left' do
|
172
|
+
show_left false
|
173
|
+
end
|
174
|
+
border 'no_right' do
|
175
|
+
show_right false
|
176
|
+
end
|
177
|
+
border 'no_top' do
|
178
|
+
show_top false
|
179
|
+
end
|
180
|
+
|
167
181
|
renders do
|
168
182
|
view('default_border') do
|
169
|
-
border
|
170
|
-
end
|
183
|
+
border!
|
171
184
|
lines do
|
172
185
|
line 'on'
|
173
186
|
end
|
@@ -178,33 +191,21 @@ class VedeuBordersApp
|
|
178
191
|
end
|
179
192
|
end
|
180
193
|
view('no_top') do
|
181
|
-
border do
|
182
|
-
show_top false
|
183
|
-
end
|
184
194
|
lines do
|
185
195
|
line 'no t'
|
186
196
|
end
|
187
197
|
end
|
188
198
|
view('no_bottom') do
|
189
|
-
border do
|
190
|
-
show_bottom false
|
191
|
-
end
|
192
199
|
lines do
|
193
200
|
line 'no b'
|
194
201
|
end
|
195
202
|
end
|
196
203
|
view('no_left') do
|
197
|
-
border do
|
198
|
-
show_left false
|
199
|
-
end
|
200
204
|
lines do
|
201
205
|
line 'no l'
|
202
206
|
end
|
203
207
|
end
|
204
208
|
view('no_right') do
|
205
|
-
border do
|
206
|
-
show_right false
|
207
|
-
end
|
208
209
|
lines do
|
209
210
|
line 'no r'
|
210
211
|
end
|
data/examples/colours_app.rb
CHANGED
@@ -20,8 +20,6 @@ class VedeuColoursApp
|
|
20
20
|
bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
21
21
|
|
22
22
|
interface 'colours' do
|
23
|
-
border do
|
24
|
-
end
|
25
23
|
geometry do
|
26
24
|
centred!
|
27
25
|
height 8
|
@@ -32,6 +30,7 @@ class VedeuColoursApp
|
|
32
30
|
|
33
31
|
renders do
|
34
32
|
view('colours') do
|
33
|
+
border!
|
35
34
|
lines do
|
36
35
|
|
37
36
|
end
|
data/examples/cursor_app.rb
CHANGED
@@ -20,12 +20,8 @@ class VedeuCursorApp
|
|
20
20
|
bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
21
21
|
|
22
22
|
interface 'main_interface' do
|
23
|
-
border do
|
24
|
-
# adds default border
|
25
|
-
end
|
26
|
-
|
27
|
-
cursor true
|
28
23
|
colour foreground: '#ff0000', background: '#000000'
|
24
|
+
cursor!
|
29
25
|
|
30
26
|
geometry do
|
31
27
|
centred true
|
@@ -43,6 +39,7 @@ class VedeuCursorApp
|
|
43
39
|
|
44
40
|
renders do
|
45
41
|
view 'main_interface' do
|
42
|
+
border!
|
46
43
|
lines do
|
47
44
|
streams do
|
48
45
|
text 'A.3456789 '
|
@@ -0,0 +1,141 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
lib_dir = File.dirname(__FILE__) + '/../lib'
|
4
|
+
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
5
|
+
|
6
|
+
-> { its -> { a } }
|
7
|
+
trap('INT') { exit! }
|
8
|
+
|
9
|
+
require 'vedeu'
|
10
|
+
|
11
|
+
class VedeuGeometryApp
|
12
|
+
include Vedeu
|
13
|
+
|
14
|
+
configure do
|
15
|
+
colour_mode 16777216
|
16
|
+
debug!
|
17
|
+
log '/tmp/vedeu_geometry_app.log'
|
18
|
+
end
|
19
|
+
|
20
|
+
bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
21
|
+
|
22
|
+
interface 'main_interface' do
|
23
|
+
colour foreground: '#ff0000', background: '#000000'
|
24
|
+
cursor!
|
25
|
+
|
26
|
+
# Geometry can be defined within the interface.
|
27
|
+
geometry do
|
28
|
+
height 8
|
29
|
+
width 8
|
30
|
+
x 2
|
31
|
+
y 2
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
interface 'second' do
|
36
|
+
colour foreground: '#0000ff', background: '#000000'
|
37
|
+
cursor!
|
38
|
+
end
|
39
|
+
|
40
|
+
# Geometry can be defined either before or after the interface.
|
41
|
+
geometry 'second' do
|
42
|
+
height 8
|
43
|
+
width 8
|
44
|
+
x 12
|
45
|
+
y 2
|
46
|
+
end
|
47
|
+
|
48
|
+
keymap('_global_') do
|
49
|
+
key(:up, 'k') { Vedeu.trigger(:_cursor_up_) }
|
50
|
+
key(:right, 'l') { Vedeu.trigger(:_cursor_right_) }
|
51
|
+
key(:down, 'j') { Vedeu.trigger(:_cursor_down_) }
|
52
|
+
key(:left, 'h') { Vedeu.trigger(:_cursor_left_) }
|
53
|
+
end
|
54
|
+
|
55
|
+
renders do
|
56
|
+
view 'second' do
|
57
|
+
border!
|
58
|
+
lines do
|
59
|
+
line 'A.987654321'
|
60
|
+
line 'B.987654321'
|
61
|
+
line 'C.987654321'
|
62
|
+
line 'D.987654321'
|
63
|
+
line 'E.987654321'
|
64
|
+
line 'F.987654321'
|
65
|
+
line 'G.987654321'
|
66
|
+
line 'H.987654321'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
view 'main_interface' do
|
70
|
+
border!
|
71
|
+
lines do
|
72
|
+
streams do
|
73
|
+
text 'A.3456789 '
|
74
|
+
end
|
75
|
+
streams do
|
76
|
+
background '#550000'
|
77
|
+
foreground '#ffff00'
|
78
|
+
text 'hydrogen'
|
79
|
+
end
|
80
|
+
streams do
|
81
|
+
text ' helium'
|
82
|
+
end
|
83
|
+
end
|
84
|
+
lines do
|
85
|
+
streams do
|
86
|
+
text 'B.3456789 lithium beryllium boron nitrogen'
|
87
|
+
end
|
88
|
+
end
|
89
|
+
lines do
|
90
|
+
streams do
|
91
|
+
text 'C.3456789'
|
92
|
+
text ' carbon oxygen '
|
93
|
+
end
|
94
|
+
streams do
|
95
|
+
background '#aadd00'
|
96
|
+
foreground '#000000'
|
97
|
+
text 'fluorine'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
lines do
|
101
|
+
streams do
|
102
|
+
text 'D.3456789'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
lines do
|
106
|
+
streams do
|
107
|
+
text 'E.3456789 neon sodium'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
lines do
|
111
|
+
streams do
|
112
|
+
text 'F.3456789 magnesium '
|
113
|
+
end
|
114
|
+
streams do
|
115
|
+
foreground '#00aaff'
|
116
|
+
text 'aluminium'
|
117
|
+
end
|
118
|
+
end
|
119
|
+
lines do
|
120
|
+
streams do
|
121
|
+
text 'G.3456789 silicon'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
lines do
|
125
|
+
streams do
|
126
|
+
background '#550000'
|
127
|
+
foreground '#ff00ff'
|
128
|
+
text 'H.34'
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
focus_by_name 'main_interface'
|
135
|
+
|
136
|
+
def self.start(argv = ARGV)
|
137
|
+
Vedeu::Launcher.new(argv).execute!
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
VedeuGeometryApp.start(ARGV)
|
data/lib/vedeu.rb
CHANGED
@@ -16,8 +16,6 @@ require 'vedeu/support/log'
|
|
16
16
|
#
|
17
17
|
module Vedeu
|
18
18
|
|
19
|
-
DOCS_URL = 'http://www.rubydoc.info/github/gavinlaking/vedeu/master'
|
20
|
-
|
21
19
|
extend Forwardable
|
22
20
|
extend self
|
23
21
|
|
@@ -28,21 +26,6 @@ module Vedeu
|
|
28
26
|
@_focusable ||= Vedeu::Focus
|
29
27
|
end
|
30
28
|
|
31
|
-
# @return [Vedeu::Repository]
|
32
|
-
def self.geometries
|
33
|
-
@_geometries ||= Vedeu::Repository.new(Vedeu::Geometry)
|
34
|
-
end
|
35
|
-
|
36
|
-
# @return [Vedeu::Repository]
|
37
|
-
def self.groups
|
38
|
-
@_groups ||= Vedeu::Repository.new(Vedeu::Group)
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [Vedeu::Repository]
|
42
|
-
def self.interfaces
|
43
|
-
@_interfaces ||= Vedeu::Repository.new(Vedeu::Interface)
|
44
|
-
end
|
45
|
-
|
46
29
|
# When Vedeu is included within one of your classes, you should have all
|
47
30
|
# API methods at your disposal.
|
48
31
|
#
|
data/lib/vedeu/api.rb
CHANGED
@@ -3,6 +3,7 @@ require 'vedeu/support/terminal'
|
|
3
3
|
require 'vedeu/events/all'
|
4
4
|
require 'vedeu/models/all'
|
5
5
|
require 'vedeu/input/all'
|
6
|
+
require 'vedeu/dsl/components/border'
|
6
7
|
require 'vedeu/dsl/composition'
|
7
8
|
require 'vedeu/dsl/shared/all'
|
8
9
|
require 'vedeu/dsl/view'
|
@@ -18,18 +19,32 @@ module Vedeu
|
|
18
19
|
extend Forwardable
|
19
20
|
extend self
|
20
21
|
|
22
|
+
def_delegators Vedeu::Borders, :borders
|
23
|
+
def_delegators Vedeu::Buffers, :buffers
|
24
|
+
def_delegators Vedeu::Cursors, :cursors
|
25
|
+
def_delegators Vedeu::Cursors, :cursor
|
26
|
+
def_delegators Vedeu::Events, :events
|
27
|
+
def_delegators Vedeu::Geometries, :geometries
|
28
|
+
def_delegators Vedeu::Groups, :groups
|
29
|
+
def_delegators Vedeu::InterfacesRepository, :interfaces
|
30
|
+
|
31
|
+
def_delegators Vedeu::Keymaps, :keymaps
|
32
|
+
def_delegators Vedeu::Mapper, :keypress
|
33
|
+
def_delegators Vedeu::Menus, :menus
|
34
|
+
|
21
35
|
def_delegators Vedeu::Event, :bind, :trigger, :unbind
|
22
36
|
def_delegators Vedeu::Configuration, :configure, :configuration
|
37
|
+
def_delegators Vedeu::DSL::Border, :border
|
38
|
+
def_delegators Vedeu::DSL::Geometry, :geometry
|
39
|
+
def_delegators Vedeu::DSL::Keymap, :keymap
|
23
40
|
def_delegators Vedeu::DSL::Use, :use
|
24
41
|
def_delegators Vedeu::DSL::View, :interface, :renders, :views
|
25
42
|
|
26
43
|
def_delegators Vedeu::Focus, :focus, :focus_by_name, :focussed?,
|
27
44
|
:focus_next, :focus_previous
|
28
|
-
|
45
|
+
|
29
46
|
def_delegators Vedeu::Log, :log
|
30
|
-
def_delegators Vedeu::Mapper, :keypress
|
31
47
|
def_delegators Vedeu::Menu, :menu
|
32
|
-
def_delegators Vedeu::Menus, :menus
|
33
48
|
def_delegators Vedeu::Terminal, :height, :width, :resize
|
34
49
|
|
35
50
|
end # API
|
data/lib/vedeu/buffers/all.rb
CHANGED
data/lib/vedeu/buffers/buffer.rb
CHANGED
data/lib/vedeu/cursor/all.rb
CHANGED
@@ -4,17 +4,4 @@ require 'vedeu/cursor/move_cursor'
|
|
4
4
|
require 'vedeu/cursor/toggle_cursor'
|
5
5
|
|
6
6
|
module Vedeu
|
7
|
-
|
8
|
-
extend self
|
9
|
-
|
10
|
-
# @return [Vedeu::Repository]
|
11
|
-
def cursors
|
12
|
-
@_cursors ||= Vedeu::Repository.new(Vedeu::Cursor)
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [Vedeu::Cursor|NilClass]
|
16
|
-
def cursor
|
17
|
-
cursors.current
|
18
|
-
end
|
19
|
-
|
20
7
|
end # Vedeu
|
data/lib/vedeu/cursor/cursor.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'vedeu/output/border'
|
1
2
|
require 'vedeu/dsl/shared/all'
|
2
3
|
|
3
4
|
module Vedeu
|
@@ -11,17 +12,42 @@ module Vedeu
|
|
11
12
|
# drawn or not.
|
12
13
|
#
|
13
14
|
# @example
|
15
|
+
# # Borders can be defined as part of a view definition...
|
14
16
|
# Vedeu.renders do
|
15
17
|
# view 'border_demo' do
|
16
18
|
# border do
|
17
19
|
# # ...
|
18
20
|
#
|
21
|
+
# # ...or standalone; referencing the target interface or view.
|
22
|
+
# Vedeu.border 'some_interface' do
|
23
|
+
# # ...
|
24
|
+
#
|
19
25
|
class Border
|
20
26
|
|
21
27
|
include Vedeu::DSL
|
22
28
|
include Vedeu::DSL::Colour
|
23
29
|
include Vedeu::DSL::Style
|
24
30
|
|
31
|
+
class << self
|
32
|
+
|
33
|
+
# Specify the border of an interface or view with a simple DSL.
|
34
|
+
#
|
35
|
+
# @example
|
36
|
+
# Vedeu.border 'some_interface' do
|
37
|
+
# # ...
|
38
|
+
#
|
39
|
+
# @param name [String] The name of the interface or view to which this
|
40
|
+
# border belongs.
|
41
|
+
# @param block [Proc]
|
42
|
+
# @return [Vedeu::Border]
|
43
|
+
def border(name, &block)
|
44
|
+
fail InvalidSyntax, 'block not given' unless block_given?
|
45
|
+
|
46
|
+
Vedeu::Border.build({ enabled: true, name: name }, &block).store
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
25
51
|
# Returns an instance of DSL::Border.
|
26
52
|
#
|
27
53
|
# @param model [Border]
|
@@ -86,15 +112,29 @@ module Vedeu
|
|
86
112
|
# Vedeu.renders do
|
87
113
|
# view 'border_demo' do
|
88
114
|
# border do
|
89
|
-
#
|
90
|
-
# # ...
|
115
|
+
# bottom false
|
116
|
+
# # ... or
|
117
|
+
# hide_bottom!
|
118
|
+
# # ... or
|
119
|
+
# show_bottom!
|
91
120
|
#
|
92
121
|
# @param boolean [Boolean] All values evaluate as true except nil and
|
93
122
|
# false.
|
94
123
|
# @return [Boolean]
|
95
|
-
def
|
124
|
+
def bottom(boolean)
|
96
125
|
model.attributes[:show_bottom] = !!boolean
|
97
126
|
end
|
127
|
+
alias_method :show_bottom, :bottom
|
128
|
+
|
129
|
+
# @see #bottom
|
130
|
+
def hide_bottom!
|
131
|
+
bottom(false)
|
132
|
+
end
|
133
|
+
|
134
|
+
# @see #bottom
|
135
|
+
def show_bottom!
|
136
|
+
bottom(true)
|
137
|
+
end
|
98
138
|
|
99
139
|
# Enable/disable the left border.
|
100
140
|
#
|
@@ -102,15 +142,29 @@ module Vedeu
|
|
102
142
|
# Vedeu.renders do
|
103
143
|
# view 'border_demo' do
|
104
144
|
# border do
|
105
|
-
#
|
106
|
-
# # ...
|
145
|
+
# left false
|
146
|
+
# # ... or
|
147
|
+
# hide_left!
|
148
|
+
# # ... or
|
149
|
+
# show_left!
|
107
150
|
#
|
108
151
|
# @param boolean [Boolean] All values evaluate as true except nil and
|
109
152
|
# false.
|
110
153
|
# @return [Boolean]
|
111
|
-
def
|
154
|
+
def left(boolean)
|
112
155
|
model.attributes[:show_left] = !!boolean
|
113
156
|
end
|
157
|
+
alias_method :show_left, :left
|
158
|
+
|
159
|
+
# @see #left
|
160
|
+
def hide_left!
|
161
|
+
left(false)
|
162
|
+
end
|
163
|
+
|
164
|
+
# @see #left
|
165
|
+
def show_left!
|
166
|
+
left(true)
|
167
|
+
end
|
114
168
|
|
115
169
|
# Enable/disable the right border.
|
116
170
|
#
|
@@ -118,15 +172,29 @@ module Vedeu
|
|
118
172
|
# Vedeu.renders do
|
119
173
|
# view 'border_demo' do
|
120
174
|
# border do
|
121
|
-
#
|
122
|
-
# # ...
|
175
|
+
# right false
|
176
|
+
# # ... or
|
177
|
+
# hide_right!
|
178
|
+
# # ... or
|
179
|
+
# show_right!
|
123
180
|
#
|
124
181
|
# @param boolean [Boolean] All values evaluate as true except nil and
|
125
182
|
# false.
|
126
183
|
# @return [Boolean]
|
127
|
-
def
|
184
|
+
def right(boolean)
|
128
185
|
model.attributes[:show_right] = !!boolean
|
129
186
|
end
|
187
|
+
alias_method :show_right, :right
|
188
|
+
|
189
|
+
# @see #right
|
190
|
+
def hide_right!
|
191
|
+
right(false)
|
192
|
+
end
|
193
|
+
|
194
|
+
# @see #right
|
195
|
+
def show_right!
|
196
|
+
right(true)
|
197
|
+
end
|
130
198
|
|
131
199
|
# Enable/disable the top border.
|
132
200
|
#
|
@@ -134,15 +202,29 @@ module Vedeu
|
|
134
202
|
# Vedeu.renders do
|
135
203
|
# view 'border_demo' do
|
136
204
|
# border do
|
137
|
-
#
|
138
|
-
# # ...
|
205
|
+
# top false
|
206
|
+
# # ... or
|
207
|
+
# hide_top!
|
208
|
+
# # ... or
|
209
|
+
# show_top!
|
139
210
|
#
|
140
211
|
# @param boolean [Boolean] All values evaluate as true except nil and
|
141
212
|
# false.
|
142
213
|
# @return [Boolean]
|
143
|
-
def
|
214
|
+
def top(boolean)
|
144
215
|
model.attributes[:show_top] = !!boolean
|
145
216
|
end
|
217
|
+
alias_method :show_top, :top
|
218
|
+
|
219
|
+
# @see #top
|
220
|
+
def hide_top!
|
221
|
+
top(false)
|
222
|
+
end
|
223
|
+
|
224
|
+
# @see #top
|
225
|
+
def show_top!
|
226
|
+
top(true)
|
227
|
+
end
|
146
228
|
|
147
229
|
# Set the character to be used to draw the top left corner of the border.
|
148
230
|
#
|