termgui 0.0.4 → 0.0.5

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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/termgui.rb +1 -1
  3. metadata +40 -107
  4. data/Gemfile +0 -14
  5. data/README.md +0 -321
  6. data/src/action.rb +0 -58
  7. data/src/box.rb +0 -90
  8. data/src/color.rb +0 -174
  9. data/src/cursor.rb +0 -69
  10. data/src/editor/editor_base.rb +0 -152
  11. data/src/editor/editor_base_handlers.rb +0 -116
  12. data/src/element.rb +0 -61
  13. data/src/element_bounds.rb +0 -111
  14. data/src/element_box.rb +0 -64
  15. data/src/element_render.rb +0 -102
  16. data/src/element_style.rb +0 -51
  17. data/src/emitter.rb +0 -102
  18. data/src/emitter_state.rb +0 -19
  19. data/src/enterable.rb +0 -93
  20. data/src/event.rb +0 -92
  21. data/src/focus.rb +0 -102
  22. data/src/geometry.rb +0 -53
  23. data/src/image.rb +0 -60
  24. data/src/input.rb +0 -85
  25. data/src/input_grab.rb +0 -17
  26. data/src/input_time.rb +0 -97
  27. data/src/key.rb +0 -114
  28. data/src/log.rb +0 -24
  29. data/src/node.rb +0 -117
  30. data/src/node_attributes.rb +0 -27
  31. data/src/node_visit.rb +0 -52
  32. data/src/renderer.rb +0 -119
  33. data/src/renderer_cursor.rb +0 -18
  34. data/src/renderer_draw.rb +0 -28
  35. data/src/renderer_image.rb +0 -31
  36. data/src/renderer_print.rb +0 -40
  37. data/src/screen.rb +0 -96
  38. data/src/screen_element.rb +0 -59
  39. data/src/screen_input.rb +0 -43
  40. data/src/screen_renderer.rb +0 -53
  41. data/src/style.rb +0 -149
  42. data/src/tco/colouring.rb +0 -248
  43. data/src/tco/config.rb +0 -57
  44. data/src/tco/palette.rb +0 -603
  45. data/src/tco/tco_termgui.rb +0 -30
  46. data/src/termgui.rb +0 -29
  47. data/src/util.rb +0 -110
  48. data/src/util/css.rb +0 -98
  49. data/src/util/css_query.rb +0 -23
  50. data/src/util/easing.rb +0 -364
  51. data/src/util/hash_object.rb +0 -131
  52. data/src/util/imagemagick.rb +0 -27
  53. data/src/util/justify.rb +0 -20
  54. data/src/util/unicode-categories.rb +0 -572
  55. data/src/util/wrap.rb +0 -102
  56. data/src/widget/button.rb +0 -33
  57. data/src/widget/checkbox.rb +0 -47
  58. data/src/widget/col.rb +0 -30
  59. data/src/widget/image.rb +0 -106
  60. data/src/widget/inline.rb +0 -40
  61. data/src/widget/input_number.rb +0 -73
  62. data/src/widget/inputbox.rb +0 -85
  63. data/src/widget/label.rb +0 -33
  64. data/src/widget/modal.rb +0 -69
  65. data/src/widget/row.rb +0 -26
  66. data/src/widget/selectbox.rb +0 -100
  67. data/src/widget/textarea.rb +0 -54
  68. data/src/xml/xml.rb +0 -80
  69. data/test/action_test.rb +0 -34
  70. data/test/box_test.rb +0 -15
  71. data/test/css_test.rb +0 -39
  72. data/test/editor/editor_base_test.rb +0 -201
  73. data/test/element_bounds_test.rb +0 -77
  74. data/test/element_box_test.rb +0 -8
  75. data/test/element_render_test.rb +0 -124
  76. data/test/element_style_test.rb +0 -85
  77. data/test/element_test.rb +0 -10
  78. data/test/emitter_test.rb +0 -108
  79. data/test/event_test.rb +0 -19
  80. data/test/focus_test.rb +0 -37
  81. data/test/geometry_test.rb +0 -12
  82. data/test/input_test.rb +0 -47
  83. data/test/key_test.rb +0 -14
  84. data/test/log_test.rb +0 -21
  85. data/test/node_test.rb +0 -105
  86. data/test/performance/performance1.rb +0 -48
  87. data/test/renderer_test.rb +0 -74
  88. data/test/renderer_test_rect.rb +0 -4
  89. data/test/screen_test.rb +0 -58
  90. data/test/style_test.rb +0 -18
  91. data/test/termgui_test.rb +0 -10
  92. data/test/test_all.rb +0 -30
  93. data/test/util_hash_object_test.rb +0 -93
  94. data/test/util_test.rb +0 -26
  95. data/test/widget/checkbox_test.rb +0 -99
  96. data/test/widget/col_test.rb +0 -87
  97. data/test/widget/inline_test.rb +0 -40
  98. data/test/widget/label_test.rb +0 -94
  99. data/test/widget/row_test.rb +0 -40
  100. data/test/wrap_test.rb +0 -11
  101. data/test/xml_test.rb +0 -77
@@ -1,201 +0,0 @@
1
- require 'test/unit'
2
- include Test::Unit::Assertions
3
- require_relative '../../src/editor/editor_base'
4
- require_relative '../../src/log'
5
- require_relative '../../src/screen'
6
- require_relative '../../src/event'
7
-
8
- class EditorBaseTest < Test::Unit::TestCase
9
- def test_arrows_enter_cursor_backspace
10
- screen = Screen.new_for_testing(width: 24, height: 6)
11
- ed = EditorBase.new(text: 'hello world\nhow are you?', screen: screen, cursor_x: 0, cursor_y: 0)
12
- ed.enable
13
- screen.set_timeout do
14
- assert_equal 'hello world\nhow are you?', ed.text
15
- assert_equal [0, 0], [ed.cursor_x, ed.cursor_y]
16
-
17
- screen.clear
18
- ed.render
19
- assert_equal(
20
- 'hello world \n' \
21
- 'how are you? \n' \
22
- ' \n' \
23
- ' \n' \
24
- ' \n' \
25
- ' \n', screen.renderer.print
26
- )
27
- assert_equal [0, 0], [ed.cursor_x, ed.cursor_y]
28
-
29
- screen.event.handle_key(KeyEvent.new('right'))
30
- assert_equal [1, 0], [ed.cursor_x, ed.cursor_y]
31
-
32
- screen.event.handle_key(KeyEvent.new('enter'))
33
- screen.clear
34
- ed.render
35
- assert_equal(
36
- 'h \n' \
37
- 'ello world \n' \
38
- 'how are you? \n' \
39
- ' \n' \
40
- ' \n' \
41
- ' \n', screen.renderer.print
42
- )
43
-
44
- screen.event.handle_key(KeyEvent.new('backspace'))
45
- screen.clear
46
- ed.render
47
- assert_equal(
48
- 'hello world \n' \
49
- 'how are you? \n' \
50
- ' \n' \
51
- ' \n' \
52
- ' \n' \
53
- ' \n', screen.renderer.print
54
- )
55
- assert_equal [1, 0], [ed.cursor_x, ed.cursor_y]
56
-
57
- 6.times { screen.event.handle_key(KeyEvent.new('right')) }
58
- screen.event.handle_key(KeyEvent.new('left'))
59
- screen.event.handle_key(KeyEvent.new('down'))
60
- assert_equal [6, 1], [ed.cursor_x, ed.cursor_y]
61
-
62
- screen.event.handle_key(KeyEvent.new('enter'))
63
- screen.clear
64
- ed.render
65
- assert_equal(
66
- 'hello world \n' \
67
- 'how ar \n' \
68
- 'e you? \n' \
69
- ' \n' \
70
- ' \n' \
71
- ' \n', screen.renderer.print
72
- )
73
- assert_equal [0, 2], [ed.cursor_x, ed.cursor_y]
74
-
75
- screen.event.handle_key(KeyEvent.new('backspace'))
76
- screen.clear
77
- ed.render
78
- assert_equal(
79
- 'hello world \n' \
80
- 'how are you? \n' \
81
- ' \n' \
82
- ' \n' \
83
- ' \n' \
84
- ' \n', screen.renderer.print
85
- )
86
- assert_equal [6, 1], [ed.cursor_x, ed.cursor_y]
87
-
88
- 6.times { screen.event.handle_key(KeyEvent.new('left')) }
89
- assert_equal [0, 1], [ed.cursor_x, ed.cursor_y]
90
- screen.event.handle_key(KeyEvent.new('backspace'))
91
- screen.clear
92
- ed.render
93
- assert_equal(
94
- 'hello worldhow are you? \n' \
95
- ' \n' \
96
- ' \n' \
97
- ' \n' \
98
- ' \n' \
99
- ' \n', screen.renderer.print
100
- )
101
- assert_equal [11, 0], [ed.cursor_x, ed.cursor_y]
102
-
103
- 3.times { screen.event.handle_key(KeyEvent.new('space')) }
104
- screen.clear
105
- ed.render
106
- assert_equal(
107
- 'hello world how are yo\n' \
108
- ' \n' \
109
- ' \n' \
110
- ' \n' \
111
- ' \n' \
112
- ' \n', screen.renderer.print
113
- )
114
- assert_equal [14, 0], [ed.cursor_x, ed.cursor_y]
115
-
116
- screen.event.handle_key(KeyEvent.new('X'))
117
- screen.event.handle_key(KeyEvent.new('enter'))
118
- screen.clear
119
- ed.render
120
- assert_equal(
121
- 'hello world X \n' \
122
- 'how are you? \n' \
123
- ' \n' \
124
- ' \n' \
125
- ' \n' \
126
- ' \n', screen.renderer.print
127
- )
128
- assert_equal [0, 1], [ed.cursor_x, ed.cursor_y]
129
-
130
- screen.destroy
131
- end
132
- screen.start
133
- end
134
-
135
- def test_coords
136
- screen = Screen.new_for_testing(width: 24, height: 6)
137
- ed = EditorBase.new(text: 'Welcome to this\nhumble editor', screen: screen, cursor_x: 0, cursor_y: 0, x: 5, y: 2)
138
- ed.enable
139
- screen.set_timeout do
140
- screen.clear
141
- ed.render
142
- assert_equal(
143
- ' \n' \
144
- ' \n' \
145
- ' Welcome to this \n' \
146
- ' humble editor \n' \
147
- ' \n' \
148
- ' \n', screen.renderer.print
149
- )
150
- assert_equal [0, 0], [ed.cursor_x, ed.cursor_y]
151
- screen.event.handle_key(KeyEvent.new('down'))
152
- assert_equal [0, 1], [ed.cursor_x, ed.cursor_y]
153
- screen.event.handle_key(KeyEvent.new('right'))
154
- assert_equal [1, 1], [ed.cursor_x, ed.cursor_y]
155
- screen.event.handle_key(KeyEvent.new('enter'))
156
- screen.clear
157
- ed.render
158
- assert_equal(
159
- ' \n' \
160
- ' \n' \
161
- ' Welcome to this \n' \
162
- ' h \n' \
163
- ' umble editor \n' \
164
- ' \n', screen.renderer.print
165
- )
166
- assert_equal [0, 2], [ed.cursor_x, ed.cursor_y]
167
-
168
- screen.event.handle_key(KeyEvent.new('backspace'))
169
- assert_equal [1, 1], [ed.cursor_x, ed.cursor_y]
170
- screen.clear
171
- ed.render
172
- assert_equal(
173
- ' \n' \
174
- ' \n' \
175
- ' Welcome to this \n' \
176
- ' humble editor \n' \
177
- ' \n' \
178
- ' \n', screen.renderer.print
179
- )
180
- assert_equal [1, 1], [ed.cursor_x, ed.cursor_y]
181
-
182
- screen.event.handle_key(KeyEvent.new('A'))
183
- screen.clear
184
- ed.render
185
- assert_equal(
186
- ' \n' \
187
- ' \n' \
188
- ' Welcome to this \n' \
189
- ' hAumble editor \n' \
190
- ' \n' \
191
- ' \n', screen.renderer.print
192
- )
193
- assert_equal [2, 1], [ed.cursor_x, ed.cursor_y]
194
-
195
- # screen.renderer.print_dev_stdout
196
-
197
- screen.destroy
198
- end
199
- screen.start
200
- end
201
- end
@@ -1,77 +0,0 @@
1
- require 'test/unit'
2
- include Test::Unit::Assertions
3
- require_relative '../src/element'
4
- require_relative '../src/util'
5
- require_relative '../src/style'
6
- require_relative '../src/screen'
7
- require_relative '../src/log'
8
-
9
- class ElementBoundsTest < Test::Unit::TestCase
10
- def test_abs
11
- child2 = Element.new(x: 2, y: 1)
12
- child1 = Element.new(x: 4, y: 3, children: [child2])
13
-
14
- assert_equal 2, child2.x
15
- assert_equal 1, child2.y
16
- assert_equal 4, child1.x
17
- assert_equal 3, child1.y
18
-
19
- assert_equal 6, child2.abs_x
20
- assert_equal 4, child2.abs_y
21
- assert_equal 4, child1.abs_x
22
- assert_equal 3, child1.abs_y
23
- end
24
-
25
- def test_abs_percent
26
- e = Element.new(x: 1, y: 2, width: 16, height: 12)
27
- e1 = Element.new(x: 0.3, y: 0.2, width: 0.6, height: 0.6)
28
- e.append_child(e1)
29
- assert_equal 9, e1.abs_width
30
- assert_equal 7, e1.abs_height
31
- assert_equal 4, e1.abs_y
32
- assert_equal 5, e1.abs_x
33
- end
34
-
35
- def test_render_offset
36
- screen = Screen.new_for_testing(width: 12, height: 7, silent: true)
37
- screen.append_child Element.new(x: 7, y: 3, width: 7, height: 12, text: 'hello', ch: '·', style: { border: Border.new, padding: Bounds.new(top: 1, left: 2) })
38
- screen.clear
39
- screen.render
40
-
41
- assert_equal(
42
- ' \n' \
43
- ' \n' \
44
- ' \n' \
45
- ' ┌────\n' \
46
- ' │····\n' \
47
- ' │··he\n' \
48
- ' │····\n', screen.renderer.print
49
- )
50
-
51
- screen.offset.left = 5
52
- screen.clear
53
- screen.render
54
- assert_equal(
55
- ' \n' \
56
- ' \n' \
57
- ' \n' \
58
- ' ┌───────┐ \n' \
59
- ' │·······│ \n' \
60
- ' │··hello│ \n' \
61
- ' │·······│ \n', screen.renderer.print
62
- )
63
-
64
- screen.offset.top = 2
65
- screen.clear
66
- screen.render
67
- assert_equal(
68
- ' \n' \
69
- ' ┌───────┐ \n' \
70
- ' │·······│ \n' \
71
- ' │··hello│ \n' \
72
- ' │·······│ \n' \
73
- ' │·······│ \n' \
74
- ' │·······│ \n', screen.renderer.print
75
- )
76
- end
77
- end
@@ -1,8 +0,0 @@
1
- require 'test/unit'
2
- include Test::Unit::Assertions
3
- require_relative '../src/element_box'
4
- require_relative '../src/screen'
5
- require_relative '../src/element'
6
-
7
- class ElementBoxTest < Test::Unit::TestCase
8
- end
@@ -1,124 +0,0 @@
1
- require 'test/unit'
2
- include Test::Unit::Assertions
3
- require_relative '../src/element'
4
- require_relative '../src/util'
5
- require_relative '../src/style'
6
- require_relative '../src/screen'
7
- require_relative '../src/log'
8
-
9
- class ElementRenderTest < Test::Unit::TestCase
10
- def test_render
11
- child2 = Element.new(x: 2, y: 1, width: 2, height: 1, ch: '2')
12
- child1 = Element.new(x: 4, y: 3, width: 10, height: 8, ch: '1', children: [child2])
13
- node = Element.new(children: [child1])
14
- screen = Screen.new_for_testing(width: 16, height: 11)
15
- node.render screen
16
- s3 =
17
- ' \\n' \
18
- ' \\n' \
19
- ' \\n' \
20
- ' 1111111111 \\n' \
21
- ' 1122111111 \\n' \
22
- ' 1111111111 \\n' \
23
- ' 1111111111 \\n' \
24
- ' 1111111111 \\n' \
25
- ' 1111111111 \\n' \
26
- ' 1111111111 \\n' \
27
- ' 1111111111 \\n' \
28
- ''
29
- assert_equal s3, screen.renderer.print
30
- end
31
-
32
- def test_render_text1
33
- screen = Screen.new_for_testing(width: 12, height: 7)
34
- e = Element.new(x: 1, y: 2, width: 6, height: 3, text: 'hello', ch: '·')
35
- screen.append_child(e)
36
- screen.render
37
- assert_equal(
38
- ' \\n' \
39
- ' \\n' \
40
- ' hello· \\n' \
41
- ' ······ \\n' \
42
- ' ······ \\n' \
43
- ' \\n' \
44
- ' \\n' \
45
- '', screen.print
46
- )
47
- end
48
-
49
- def test_render_text2
50
- screen = Screen.new_for_testing(width: 12, height: 7)
51
- e = Element.new(x: 1, y: 2, width: 9, height: 3, text: 'hello', ch: '·', style: { padding: Bounds.new(top: 1, left: 2) })
52
- screen.append_child(e)
53
- screen.render
54
- assert_equal(
55
- ' \\n' \
56
- ' \\n' \
57
- ' ········· \\n' \
58
- ' ··hello·· \\n' \
59
- ' ········· \\n' \
60
- ' \\n' \
61
- ' \\n' \
62
- '', screen.print
63
- )
64
- end
65
-
66
- def test_render_border
67
- screen = Screen.new_for_testing(width: 12, height: 9)
68
- e = Element.new(x: 1, y: 2, width: 6, height: 3, text: 'hello', ch: '·')
69
- e.style.border = Border.new
70
- screen.append_child(e)
71
- screen.render
72
- assert_equal(
73
- ' \n' \
74
- ' \n' \
75
- ' ┌──────┐ \n' \
76
- ' │hello·│ \n' \
77
- ' │······│ \n' \
78
- ' │······│ \n' \
79
- ' └──────┘ \n' \
80
- ' \n' \
81
- ' \n' \
82
- '', screen.print
83
- )
84
- end
85
-
86
- def test_render_text_nl
87
- screen = Screen.new_for_testing(width: 12, height: 7)
88
- e = Element.new(x: 1, y: 2, width: 6, height: 3, text: 'hello\nworld', ch: '·')
89
- e.style.border = Border.new
90
- screen.append_child(e)
91
- screen.render
92
- assert_equal(
93
- ' \n' \
94
- ' \n' \
95
- ' ┌──────┐ \n' \
96
- ' │hello·│ \n' \
97
- ' │world·│ \n' \
98
- ' │······│ \n' \
99
- ' └──────┘ \n' \
100
- '', screen.print
101
- )
102
- end
103
-
104
- def test_render_text_wrap
105
- screen = Screen.new_for_testing(width: 16, height: 9)
106
- e = Element.new(x: 1, y: 1, width: 12, height: 5, text: 'as df rf ty gh fg sdf ed', ch: '·')
107
- e.style.border = Border.new
108
- e.style.wrap = true
109
- screen.append_child(e)
110
- screen.render
111
- assert_equal(
112
- ' \n' \
113
- ' ┌────────────┐ \n' \
114
- ' │as df rf ty·│ \n' \
115
- ' │gh fg sdf ed│ \n' \
116
- ' │············│ \n' \
117
- ' │············│ \n' \
118
- ' │············│ \n' \
119
- ' └────────────┘ \n' \
120
- ' \n' \
121
- '', screen.print
122
- )
123
- end
124
- end
@@ -1,85 +0,0 @@
1
- require 'test/unit'
2
- include Test::Unit::Assertions
3
- require_relative '../src/element'
4
- require_relative '../src/util'
5
- require_relative '../src/style'
6
- require_relative '../src/screen'
7
- require_relative '../src/log'
8
-
9
- class ElementStyleTest < Test::Unit::TestCase
10
- def test_constructor_style
11
- e = Element.new(
12
- attributes: { focusable: true, focused: false },
13
- style: {
14
- focus: Style.new(bg: 'red')
15
- }
16
- )
17
- assert_equal 'red', e.style.focus.bg
18
- assert_equal true, e.get_attribute('focusable')
19
- assert_equal true, e.get_attribute(:focusable)
20
- assert_equal false, e.get_attribute(:focused)
21
- assert_equal false, e.get_attribute('focused')
22
- assert_equal nil, e.style.border
23
- e.style.border = Border.new
24
- assert_equal Border.new.style, e.style.border.style
25
- # assert_equal ({ bg: nil,
26
- # blink: nil,
27
- # bold: nil,
28
- # fg: nil,
29
- # fraktur: nil,
30
- # framed: nil,
31
- # inverse: nil,
32
- # style: 'single',
33
- # underline: nil }), e.style.border.to_hash
34
- # assert object_equal({ bg: nil,
35
- # blink: nil,
36
- # bold: nil,
37
- # fg: nil,
38
- # fraktur: nil,
39
- # framed: nil,
40
- # inverse: nil,
41
- # style: 'single',
42
- # underline: nil }, e.style.border.to_hash)
43
-
44
- assert_equal(e.style.focus.bg, 'red')
45
- end
46
-
47
- # def test_style_no_focus_if_not_declared
48
- # e = Element.new
49
- # assert_equal nil, e.style.focus
50
- # assert_equal nil, e.style.border
51
- # end
52
-
53
- def test_style
54
- s = Style.new(border: Border.new(style: 'classic', fg: 'red'), fg: 'blue', bg: 'bright_magenta')
55
- assert_equal 'classic', s.border.style
56
- assert_equal 'red', s.border.fg
57
- assert_equal 'blue', s.fg
58
-
59
- e = Element.new
60
- e.style = { fg: 'black', bg: 'white' }
61
- assert_equal 'black', e.style.fg
62
- assert_equal 'white', e.style.bg
63
-
64
- e.style = s
65
- assert_equal 'classic', e.style.border.style
66
- assert_equal 'red', e.style.border.fg
67
- assert_equal 'blue', e.style.fg
68
- end
69
-
70
- def test_final_style
71
- e = Element.new(
72
- attributes: { focusable: true, focused: false },
73
- style: {
74
- bg: 'white',
75
- focus: Style.new(bg: 'red')
76
- }
77
- )
78
- assert_equal 'red', e.style.focus.bg
79
- assert_equal 'white', e.final_style.bg
80
- assert_equal false, e.get_attribute('focused')
81
- e.set_attribute('focused', true)
82
- assert_equal true, e.get_attribute('focused')
83
- assert_equal 'red', e.final_style.bg
84
- end
85
- end