whirled_peas 0.4.0 → 0.7.1
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/.travis.yml +1 -0
- data/CHANGELOG.md +38 -0
- data/README.md +450 -103
- data/Rakefile +28 -3
- data/examples/intro.rb +52 -0
- data/examples/scrolling.rb +53 -0
- data/lib/whirled_peas.rb +4 -8
- data/lib/whirled_peas/command_line.rb +44 -55
- data/lib/whirled_peas/errors.rb +2 -0
- data/lib/whirled_peas/frame.rb +0 -1
- data/lib/whirled_peas/frame/consumer.rb +30 -0
- data/lib/whirled_peas/frame/debug_consumer.rb +30 -0
- data/lib/whirled_peas/frame/event_loop.rb +28 -29
- data/lib/whirled_peas/frame/producer.rb +11 -5
- data/lib/whirled_peas/graphics.rb +19 -0
- data/lib/whirled_peas/graphics/box_painter.rb +101 -0
- data/lib/whirled_peas/graphics/canvas.rb +118 -0
- data/lib/whirled_peas/graphics/composer.rb +80 -0
- data/lib/whirled_peas/graphics/container_coords.rb +72 -0
- data/lib/whirled_peas/graphics/container_dimensions.rb +93 -0
- data/lib/whirled_peas/graphics/container_painter.rb +272 -0
- data/lib/whirled_peas/graphics/debugger.rb +52 -0
- data/lib/whirled_peas/graphics/grid_painter.rb +69 -0
- data/lib/whirled_peas/graphics/mock_screen.rb +26 -0
- data/lib/whirled_peas/graphics/painter.rb +23 -0
- data/lib/whirled_peas/graphics/renderer.rb +26 -0
- data/lib/whirled_peas/graphics/screen.rb +70 -0
- data/lib/whirled_peas/graphics/text_dimensions.rb +15 -0
- data/lib/whirled_peas/graphics/text_painter.rb +40 -0
- data/lib/whirled_peas/settings.rb +5 -0
- data/lib/whirled_peas/settings/alignment.rb +24 -0
- data/lib/whirled_peas/settings/bg_color.rb +24 -0
- data/lib/whirled_peas/settings/border.rb +101 -0
- data/lib/whirled_peas/settings/box_settings.rb +8 -0
- data/lib/whirled_peas/settings/color.rb +68 -0
- data/lib/whirled_peas/settings/container_settings.rb +223 -0
- data/lib/whirled_peas/settings/debugger.rb +96 -0
- data/lib/whirled_peas/settings/display_flow.rb +27 -0
- data/lib/whirled_peas/settings/element_settings.rb +61 -0
- data/lib/whirled_peas/settings/grid_settings.rb +19 -0
- data/lib/whirled_peas/settings/margin.rb +8 -0
- data/lib/whirled_peas/settings/padding.rb +8 -0
- data/lib/whirled_peas/settings/position.rb +15 -0
- data/lib/whirled_peas/settings/scrollbar.rb +15 -0
- data/lib/whirled_peas/settings/sizing.rb +19 -0
- data/lib/whirled_peas/settings/spacing.rb +58 -0
- data/lib/whirled_peas/settings/text_color.rb +21 -0
- data/lib/whirled_peas/settings/text_settings.rb +15 -0
- data/lib/whirled_peas/settings/vert_alignment.rb +24 -0
- data/lib/whirled_peas/utils/ansi.rb +6 -56
- data/lib/whirled_peas/utils/formatted_string.rb +64 -0
- data/lib/whirled_peas/utils/title_font.rb +1 -1
- data/lib/whirled_peas/version.rb +1 -1
- data/screen_test/elements/box.frame +1 -0
- data/screen_test/elements/box.rb +20 -0
- data/screen_test/elements/grid.frame +1 -0
- data/screen_test/elements/grid.rb +13 -0
- data/screen_test/elements/screen_overflow_x.frame +1 -0
- data/screen_test/elements/screen_overflow_x.rb +9 -0
- data/screen_test/elements/screen_overflow_y.frame +1 -0
- data/screen_test/elements/screen_overflow_y.rb +9 -0
- data/screen_test/elements/text.frame +1 -0
- data/screen_test/elements/text.rb +9 -0
- data/screen_test/elements/text_multiline.frame +1 -0
- data/screen_test/elements/text_multiline.rb +9 -0
- data/screen_test/settings/align/box_around.frame +1 -0
- data/screen_test/settings/align/box_around.rb +16 -0
- data/screen_test/settings/align/box_between.frame +1 -0
- data/screen_test/settings/align/box_between.rb +16 -0
- data/screen_test/settings/align/box_center.frame +1 -0
- data/screen_test/settings/align/box_center.rb +21 -0
- data/screen_test/settings/align/box_default.frame +1 -0
- data/screen_test/settings/align/box_default.rb +20 -0
- data/screen_test/settings/align/box_evenly.frame +1 -0
- data/screen_test/settings/align/box_evenly.rb +16 -0
- data/screen_test/settings/align/box_left.frame +1 -0
- data/screen_test/settings/align/box_left.rb +21 -0
- data/screen_test/settings/align/box_right.frame +1 -0
- data/screen_test/settings/align/box_right.rb +21 -0
- data/screen_test/settings/align/children_center.frame +1 -0
- data/screen_test/settings/align/children_center.rb +15 -0
- data/screen_test/settings/align/children_left.frame +1 -0
- data/screen_test/settings/align/children_left.rb +15 -0
- data/screen_test/settings/align/children_right.frame +1 -0
- data/screen_test/settings/align/children_right.rb +15 -0
- data/screen_test/settings/align/grid_center.frame +1 -0
- data/screen_test/settings/align/grid_center.rb +18 -0
- data/screen_test/settings/align/grid_default.frame +1 -0
- data/screen_test/settings/align/grid_default.rb +17 -0
- data/screen_test/settings/align/grid_left.frame +1 -0
- data/screen_test/settings/align/grid_left.rb +18 -0
- data/screen_test/settings/align/grid_right.frame +1 -0
- data/screen_test/settings/align/grid_right.rb +18 -0
- data/screen_test/settings/ansi/bold.frame +1 -0
- data/screen_test/settings/ansi/bold.rb +14 -0
- data/screen_test/settings/ansi/color.frame +1 -0
- data/screen_test/settings/ansi/color.rb +37 -0
- data/screen_test/settings/ansi/underline.frame +1 -0
- data/screen_test/settings/ansi/underline.rb +14 -0
- data/screen_test/settings/border.frame +1 -0
- data/screen_test/settings/border.rb +13 -0
- data/screen_test/settings/flow/box_b2t.frame +1 -0
- data/screen_test/settings/flow/box_b2t.rb +26 -0
- data/screen_test/settings/flow/box_l2r.frame +1 -0
- data/screen_test/settings/flow/box_l2r.rb +26 -0
- data/screen_test/settings/flow/box_r2l.frame +1 -0
- data/screen_test/settings/flow/box_r2l.rb +26 -0
- data/screen_test/settings/flow/box_t2b.frame +1 -0
- data/screen_test/settings/flow/box_t2b.rb +26 -0
- data/screen_test/settings/flow/grid_b2t.frame +1 -0
- data/screen_test/settings/flow/grid_b2t.rb +14 -0
- data/screen_test/settings/flow/grid_l2r.frame +1 -0
- data/screen_test/settings/flow/grid_l2r.rb +14 -0
- data/screen_test/settings/flow/grid_r2l.frame +1 -0
- data/screen_test/settings/flow/grid_r2l.rb +14 -0
- data/screen_test/settings/flow/grid_t2b.frame +1 -0
- data/screen_test/settings/flow/grid_t2b.rb +14 -0
- data/screen_test/settings/height/box.frame +1 -0
- data/screen_test/settings/height/box.rb +13 -0
- data/screen_test/settings/height/box_border_sizing.frame +1 -0
- data/screen_test/settings/height/box_border_sizing.rb +15 -0
- data/screen_test/settings/height/grid.frame +1 -0
- data/screen_test/settings/height/grid.rb +14 -0
- data/screen_test/settings/height/overflow_box.frame +1 -0
- data/screen_test/settings/height/overflow_box.rb +13 -0
- data/screen_test/settings/height/overflow_box_l2r.frame +1 -0
- data/screen_test/settings/height/overflow_box_l2r.rb +17 -0
- data/screen_test/settings/height/overflow_box_t2b.frame +1 -0
- data/screen_test/settings/height/overflow_box_t2b.rb +16 -0
- data/screen_test/settings/height/overflow_grid.frame +1 -0
- data/screen_test/settings/height/overflow_grid.rb +16 -0
- data/screen_test/settings/margin.frame +1 -0
- data/screen_test/settings/margin.rb +16 -0
- data/screen_test/settings/padding.frame +1 -0
- data/screen_test/settings/padding.rb +13 -0
- data/screen_test/settings/position/box_left.frame +1 -0
- data/screen_test/settings/position/box_left.rb +17 -0
- data/screen_test/settings/position/box_left_negative.frame +1 -0
- data/screen_test/settings/position/box_left_negative.rb +17 -0
- data/screen_test/settings/position/box_top.frame +1 -0
- data/screen_test/settings/position/box_top.rb +17 -0
- data/screen_test/settings/position/box_top_negative.frame +1 -0
- data/screen_test/settings/position/box_top_negative.rb +17 -0
- data/screen_test/settings/position/grid_left.frame +1 -0
- data/screen_test/settings/position/grid_left.rb +18 -0
- data/screen_test/settings/position/grid_left_negative.frame +1 -0
- data/screen_test/settings/position/grid_left_negative.rb +18 -0
- data/screen_test/settings/position/grid_top.frame +1 -0
- data/screen_test/settings/position/grid_top.rb +18 -0
- data/screen_test/settings/position/grid_top_negative.frame +1 -0
- data/screen_test/settings/position/grid_top_negative.rb +18 -0
- data/screen_test/settings/scroll/horiz_box.frame +1 -0
- data/screen_test/settings/scroll/horiz_box.rb +17 -0
- data/screen_test/settings/scroll/horiz_box_align_center.rb +18 -0
- data/screen_test/settings/scroll/horiz_box_align_right.rb +18 -0
- data/screen_test/settings/scroll/vert_box.frame +1 -0
- data/screen_test/settings/scroll/vert_box.rb +20 -0
- data/screen_test/settings/title_font.frame +1 -0
- data/screen_test/settings/title_font.rb +12 -0
- data/screen_test/settings/valign/box_around.frame +1 -0
- data/screen_test/settings/valign/box_around.rb +17 -0
- data/screen_test/settings/valign/box_between.frame +1 -0
- data/screen_test/settings/valign/box_between.rb +17 -0
- data/screen_test/settings/valign/box_bottom.frame +1 -0
- data/screen_test/settings/valign/box_bottom.rb +17 -0
- data/screen_test/settings/valign/box_default.frame +1 -0
- data/screen_test/settings/valign/box_default.rb +16 -0
- data/screen_test/settings/valign/box_evenly.frame +1 -0
- data/screen_test/settings/valign/box_evenly.rb +17 -0
- data/screen_test/settings/valign/box_middle.frame +1 -0
- data/screen_test/settings/valign/box_middle.rb +17 -0
- data/screen_test/settings/valign/box_top.frame +1 -0
- data/screen_test/settings/valign/box_top.rb +17 -0
- data/screen_test/settings/valign/grid_bottom.frame +1 -0
- data/screen_test/settings/valign/grid_bottom.rb +15 -0
- data/screen_test/settings/valign/grid_default.frame +1 -0
- data/screen_test/settings/valign/grid_default.rb +14 -0
- data/screen_test/settings/valign/grid_middle.frame +1 -0
- data/screen_test/settings/valign/grid_middle.rb +15 -0
- data/screen_test/settings/valign/grid_top.frame +1 -0
- data/screen_test/settings/valign/grid_top.rb +15 -0
- data/screen_test/settings/width/box_border_sizing.frame +1 -0
- data/screen_test/settings/width/box_border_sizing.rb +15 -0
- data/screen_test/settings/width/box_content.frame +1 -0
- data/screen_test/settings/width/box_content.rb +15 -0
- data/screen_test/settings/width/box_default.frame +1 -0
- data/screen_test/settings/width/box_default.rb +14 -0
- data/screen_test/settings/width/grid.frame +1 -0
- data/screen_test/settings/width/grid.rb +14 -0
- data/screen_test/settings/width/overflow_align_center.frame +1 -0
- data/screen_test/settings/width/overflow_align_center.rb +14 -0
- data/screen_test/settings/width/overflow_align_right.frame +1 -0
- data/screen_test/settings/width/overflow_align_right.rb +14 -0
- data/screen_test/settings/width/overflow_box.frame +1 -0
- data/screen_test/settings/width/overflow_box.rb +13 -0
- data/screen_test/settings/width/overflow_box_l2r.frame +1 -0
- data/screen_test/settings/width/overflow_box_l2r.rb +16 -0
- data/screen_test/settings/width/overflow_box_t2b.frame +1 -0
- data/screen_test/settings/width/overflow_box_t2b.rb +17 -0
- data/screen_test/settings/width/overflow_grid.frame +1 -0
- data/screen_test/settings/width/overflow_grid.rb +14 -0
- data/tools/whirled_peas/tools/screen_tester.rb +233 -0
- metadata +191 -12
- data/bin/title_fonts +0 -6
- data/lib/whirled_peas/frame/print_consumer.rb +0 -33
- data/lib/whirled_peas/template.rb +0 -5
- data/lib/whirled_peas/template/element.rb +0 -230
- data/lib/whirled_peas/template/settings.rb +0 -530
- data/lib/whirled_peas/ui.rb +0 -5
- data/lib/whirled_peas/ui/canvas.rb +0 -68
- data/lib/whirled_peas/ui/painter.rb +0 -287
- data/lib/whirled_peas/ui/screen.rb +0 -63
- data/lib/whirled_peas/utils/color.rb +0 -101
@@ -0,0 +1,64 @@
|
|
1
|
+
require_relative 'ansi'
|
2
|
+
|
3
|
+
module WhirledPeas
|
4
|
+
module Utils
|
5
|
+
class FormattedString
|
6
|
+
def self.blank
|
7
|
+
new('')
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(raw, formatting=nil)
|
11
|
+
@raw = raw
|
12
|
+
@formatting = [*formatting]
|
13
|
+
end
|
14
|
+
|
15
|
+
def length
|
16
|
+
raw.length
|
17
|
+
end
|
18
|
+
|
19
|
+
def [](index_or_range)
|
20
|
+
self.class.new(raw[index_or_range], foramtting)
|
21
|
+
end
|
22
|
+
|
23
|
+
def blank?
|
24
|
+
raw.empty?
|
25
|
+
end
|
26
|
+
|
27
|
+
def hash
|
28
|
+
[raw, formatting].hash
|
29
|
+
end
|
30
|
+
|
31
|
+
def ==(other)
|
32
|
+
case other
|
33
|
+
when self.class
|
34
|
+
hash == other.hash
|
35
|
+
when String
|
36
|
+
formatting.empty? && raw == other
|
37
|
+
else
|
38
|
+
false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
if raw.empty? || formatting.length == 0
|
44
|
+
raw
|
45
|
+
else
|
46
|
+
start_formatting = formatting.map { |code| Ansi.esc_seq(code) }.join
|
47
|
+
"#{start_formatting}#{raw}#{Ansi.clear}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def inspect
|
52
|
+
if raw.empty? || formatting.length == 0
|
53
|
+
raw.inspect
|
54
|
+
else
|
55
|
+
"<#{formatting.join(', ')}>#{raw}<0>".inspect
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
attr_reader :raw, :formatting
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -6,7 +6,7 @@ module WhirledPeas
|
|
6
6
|
|
7
7
|
class << self
|
8
8
|
def validate!(font_key)
|
9
|
-
return
|
9
|
+
return if font_key.nil?
|
10
10
|
return font_key if fonts.key?(font_key)
|
11
11
|
allowed = fonts.keys.map(&:inspect).sort
|
12
12
|
message = "Unrecognized font: '#{font_key.inspect}', expecting one of #{allowed.join(', ')}"
|
data/lib/whirled_peas/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1HTOP LEFT[2;1HBOTTOM LEFT[1;12H TOP RIGHT [2;12H BOTTOM RIGHT[0m[24;1H[?25h
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box('Container') do |composer, settings|
|
7
|
+
composer.add_box do |composer, settings|
|
8
|
+
settings.flow = :t2b
|
9
|
+
composer.add_box('TopLeft') { "TOP LEFT" }
|
10
|
+
composer.add_box('BottomLeft') { "BOTTOM LEFT" }
|
11
|
+
end
|
12
|
+
composer.add_box do |composer, settings|
|
13
|
+
settings.flow = :t2b
|
14
|
+
composer.add_box('TopRight') { " TOP RIGHT " }
|
15
|
+
composer.add_box('BottomRight') { " BOTTOM RIGHT" }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━┳━━━━━━┳━━━━━━┓[2;1H┃ ┃ ┃ ┃[3;1H┣━━━━━━╋━━━━━━╋━━━━━━┫[4;1H┃ ┃ ┃ ┃[5;1H┣━━━━━━╋━━━━━━╋━━━━━━┫[6;1H┃ ┃ ┃ ┃[7;1H┗━━━━━━┻━━━━━━┻━━━━━━┛[2;2HItem 0[2;9HItem 1[2;16HItem 2[4;2HItem 3[4;9HItem 4[4;16HItem 5[6;2HItem 6[0m[24;1H[?25h
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H--------------------------------[0m[24;1H[?25h
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H|[2;1H|[3;1H|[4;1H|[5;1H|[6;1H|[7;1H|[8;1H|[9;1H|[10;1H|[11;1H|[12;1H|[13;1H|[14;1H|[15;1H|[16;1H|[17;1H|[18;1H|[19;1H|[20;1H|[21;1H|[22;1H|[23;1H|[24;1H|[0m[24;1H[?25h
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1HHello, World![0m[24;1H[?25h
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1HLine 1[2;1HLine 2[3;1HLine 3[0m[24;1H[?25h
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━┛[2;4HA[2;9HB[2;14HC[0m[24;1H[?25h
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.full_border
|
8
|
+
settings.align = :around
|
9
|
+
settings.width = 15
|
10
|
+
composer.add_text { 'A' }
|
11
|
+
composer.add_text { 'B' }
|
12
|
+
composer.add_text { 'C' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━┛[2;2HA[2;9HB[2;16HC[0m[24;1H[?25h
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.full_border
|
8
|
+
settings.align = :between
|
9
|
+
settings.width = 15
|
10
|
+
composer.add_text { 'A' }
|
11
|
+
composer.add_text { 'B' }
|
12
|
+
composer.add_text { 'C' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┃ ┃[4;1H┗━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned box[3;10HCenter[0m[24;1H[?25h
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid do |composer, settings|
|
7
|
+
settings.num_cols = 2
|
8
|
+
composer.add_box('Alignment') do |composer, settings|
|
9
|
+
settings.flow = :t2b
|
10
|
+
settings.full_border
|
11
|
+
settings.align = :center
|
12
|
+
# Keep the title long so grids below will be wide enough to use the
|
13
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
14
|
+
# `align` isolated in this test.
|
15
|
+
composer.add_text('Title') { 'This is an aligned box' }
|
16
|
+
composer.add_text('Content') { 'Center' }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┃ ┃[4;1H┗━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned box[3;2HDefault[0m[24;1H[?25h
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid do |composer, settings|
|
7
|
+
settings.num_cols = 2
|
8
|
+
composer.add_box('Alignment') do |composer, settings|
|
9
|
+
settings.flow = :t2b
|
10
|
+
settings.full_border
|
11
|
+
# Keep the title long so grids below will be wide enough to use the
|
12
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
13
|
+
# `align` isolated in this test.
|
14
|
+
composer.add_text('Title') { 'This is an aligned box' }
|
15
|
+
composer.add_text('Content') { 'Default' }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━┛[2;5HA[2;9HB[2;13HC[0m[24;1H[?25h
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.full_border
|
8
|
+
settings.align = :evenly
|
9
|
+
settings.width = 15
|
10
|
+
composer.add_text { 'A' }
|
11
|
+
composer.add_text { 'B' }
|
12
|
+
composer.add_text { 'C' }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┃ ┃[4;1H┗━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned box[3;2HLeft[0m[24;1H[?25h
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid do |composer, settings|
|
7
|
+
settings.num_cols = 2
|
8
|
+
composer.add_box('Alignment') do |composer, settings|
|
9
|
+
settings.flow = :t2b
|
10
|
+
settings.full_border
|
11
|
+
settings.align = :left
|
12
|
+
# Keep the title long so grids below will be wide enough to use the
|
13
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
14
|
+
# `align` isolated in this test.
|
15
|
+
composer.add_text('Title') { 'This is an aligned box' }
|
16
|
+
composer.add_text('Content') { 'Left' }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┃ ┃[4;1H┗━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned box[3;19HRight[0m[24;1H[?25h
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid do |composer, settings|
|
7
|
+
settings.num_cols = 2
|
8
|
+
composer.add_box('Alignment') do |composer, settings|
|
9
|
+
settings.flow = :t2b
|
10
|
+
settings.full_border
|
11
|
+
settings.align = :right
|
12
|
+
# Keep the title long so grids below will be wide enough to use the
|
13
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
14
|
+
# `align` isolated in this test.
|
15
|
+
composer.add_text('Title') { 'This is an aligned box' }
|
16
|
+
composer.add_text('Content') { 'Right' }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛[2;9HThing 1[2;16HThing 2[0m[24;1H[?25h
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.align = :center
|
8
|
+
settings.width = 28
|
9
|
+
settings.full_border
|
10
|
+
composer.add_text('Text1') { 'Thing 1' }
|
11
|
+
composer.add_text('Text2') { 'Thing 2' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThing 1[2;9HThing 2[0m[24;1H[?25h
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.align = :left
|
8
|
+
settings.width = 28
|
9
|
+
settings.full_border
|
10
|
+
composer.add_text('Text1') { 'Thing 1' }
|
11
|
+
composer.add_text('Text2') { 'Thing 2' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛[2;16HThing 1[2;23HThing 2[0m[24;1H[?25h
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_box do |composer, settings|
|
7
|
+
settings.align = :right
|
8
|
+
settings.width = 28
|
9
|
+
settings.full_border
|
10
|
+
composer.add_text('Text1') { 'Thing 1' }
|
11
|
+
composer.add_text('Text2') { 'Thing 2' }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┣━━━━━━━━━━━━━━━━━━━━━━━┫[4;1H┃ ┃[5;1H┗━━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned grid[4;10HCenter[0m[24;1H[?25h
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid('Alignment') do |composer, settings|
|
7
|
+
settings.num_cols = 1
|
8
|
+
settings.full_border
|
9
|
+
settings.align = :center
|
10
|
+
# Keep the title long so grids below will be wide enough to use the
|
11
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
12
|
+
# `align` isolated in this test.
|
13
|
+
composer.add_text('Title') { 'This is an aligned grid' }
|
14
|
+
composer.add_text('Content') { 'Center' }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[?25l[1;1H[J[1;1H┏━━━━━━━━━━━━━━━━━━━━━━━┓[2;1H┃ ┃[3;1H┣━━━━━━━━━━━━━━━━━━━━━━━┫[4;1H┃ ┃[5;1H┗━━━━━━━━━━━━━━━━━━━━━━━┛[2;2HThis is an aligned grid[4;2HDefault[0m[24;1H[?25h
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'whirled_peas'
|
2
|
+
|
3
|
+
class TemplateFactory
|
4
|
+
def build(*)
|
5
|
+
WhirledPeas.template do |composer|
|
6
|
+
composer.add_grid('Alignment') do |composer, settings|
|
7
|
+
settings.num_cols = 1
|
8
|
+
settings.full_border
|
9
|
+
# Keep the title long so grids below will be wide enough to use the
|
10
|
+
# alignment attribute. Don't rely on the `width` attribute to keep
|
11
|
+
# `align` isolated in this test.
|
12
|
+
composer.add_text('Title') { 'This is an aligned grid' }
|
13
|
+
composer.add_text('Content') { 'Default' }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|