_CHAR_RANGE = ':'
_CHAR_RANGE_DATA_SEP = ' '
_CHAR_WIN_ID_SEP = ','
+_CHAR_TUI = 't'
_TOK_REPEAT = 'repeat'
_TOK_WAIT = 'wait'
-_TOK_TUI = 'TUI'
class _Playbook:
inserts: list[tuple[str, str]] = []
for inserted_t in self._lines_t[int(start):int(end)]:
insert = inserted_t[1]
- if len(range_data) != 2\
+ if len(range_data) == 3\
and insert and not insert.startswith(_CHAR_ANCHOR):
insert = _CHAR_CONTEXT_SEP.join(
[range_data[2]]
self.put_keypress('KEY_ENTER')
break
if context.startswith(_CHAR_SERVER_MSG):
- client = self._get_client(int(context[1:]))
+ client = self._get_client(int(context[len(_CHAR_SERVER_MSG):]))
assert isinstance(client.conn, _FakeIrcConnection), client.conn
client.conn.put_server_msg(msg)
break
- if context == _TOK_TUI:
+ if context.startswith(_CHAR_TUI):
assert self.assert_screen_line is not None
assert self.redraw_affected is not None
+ _, y_str = context.split('.')
+ x_str, attrs_str, msg = msg.split('.', maxsplit=2)
self.redraw_affected()
- position, attrs_str, msg = msg.split('.', maxsplit=2)
- y, x = ((int(item) for item in position.split(','))
- if ',' in position
- else (int(position), 0))
- self.assert_screen_line(y, x, msg, attrs_str)
+ self.assert_screen_line(int(y_str), int(x_str), msg, attrs_str)
elif context == _TOK_WAIT:
assert msg.isdigit()
sleep(int(msg))
-TUI 0.on_black.
-TUI 1.on_black.
-TUI 2.on_black.
-TUI 3.on_black.
-TUI 4.on_black.
-TUI 5.on_black.
-TUI 6.on_black.
-TUI 7.on_black.
-TUI 8.on_black.
-TUI 9.on_black.
-TUI 10.on_black.
-TUI 11.on_black.
-TUI 12.on_black.
-TUI 13.on_black.
-TUI 14.on_black.
-TUI 15.on_black.
-TUI 16.on_black.
-TUI 17.on_black.
-TUI 18.on_black.
-TUI 19.on_black.
-TUI 20.on_black.
-TUI 21.on_black.
-TUI 22..:start)=====================================================================([0]
+| empty-init-in
+| line-0-empty-in
+t.0 0.on_black.
+| line-0-empty-out
+repeat line-0-empty-in line-0-empty-out t.1
+repeat line-0-empty-in line-0-empty-out t.2
+repeat line-0-empty-in line-0-empty-out t.3
+repeat line-0-empty-in line-0-empty-out t.4
+repeat line-0-empty-in line-0-empty-out t.5
+repeat line-0-empty-in line-0-empty-out t.6
+repeat line-0-empty-in line-0-empty-out t.7
+repeat line-0-empty-in line-0-empty-out t.8
+repeat line-0-empty-in line-0-empty-out t.9
+repeat line-0-empty-in line-0-empty-out t.10
+repeat line-0-empty-in line-0-empty-out t.11
+repeat line-0-empty-in line-0-empty-out t.12
+repeat line-0-empty-in line-0-empty-out t.13
+repeat line-0-empty-in line-0-empty-out t.14
+repeat line-0-empty-in line-0-empty-out t.15
+repeat line-0-empty-in line-0-empty-out t.16
+repeat line-0-empty-in line-0-empty-out t.17
+repeat line-0-empty-in line-0-empty-out t.18
+repeat line-0-empty-in line-0-empty-out t.19
+repeat line-0-empty-in line-0-empty-out t.20
+repeat line-0-empty-in line-0-empty-out t.21
+| status-prompt-empty-in
+t.22 0..:start)=====================================================================([0]
+t.23 0..>
+t.23 2.reverse.
+t.23 3..
+| status-prompt-empty-out
+| empty-init-out
-TUI 23,0..>
-TUI 23,2.reverse.
-TUI 23,3..
# nothing happening on empty command input
>
-TUI 0.on_black.
-TUI 21.on_black.
-TUI 22..:start)=====================================================================([0]
-
-TUI 23,2.reverse.
+repeat empty-init-in empty-init-out
# non-empty command input starts log at bottom, with date above it
> foo
0 .!# invalid prompt command: not prefixed by /
+repeat line-0-empty-in line-0-empty-out
+repeat line-0-empty-in line-0-empty-out t.19
+| date-at-20-in
+t.20 0.on_black.20
+t.20 4.on_black.-
+t.20 7.on_black.-
+t.20 10.on_black.
+| date-at-20-out
+t.21 0.on_black,bold,bright_red,bright_cyan..!#
+t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by /
-TUI 0.on_black.
-TUI 20,0.on_black.20
-TUI 20,4.on_black.-
-TUI 20,7.on_black.-
-TUI 20,10.on_black.
-TUI 21,0.on_black,bold,bright_red,bright_cyan..!#
-TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by /
-TUI 22..:start)=====================================================================([0]
-TUI 23,0..>
-TUI 23,2.reverse.
-TUI 23,3..
+repeat status-prompt-empty-in status-prompt-empty-out
# further inputs grow log upwards
> /foo
0 .!# invalid prompt command: /foo unknown
> /foo
0 .!# invalid prompt command: /foo unknown
-
-TUI 17.on_black.
-TUI 18,0.on_black.20
-TUI 19,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by /
-TUI 20,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown
-TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown
+repeat line-0-empty-in line-0-empty-out
+repeat line-0-empty-in line-0-empty-out t.17
+repeat date-at-20-in date-at-20-out t.18
+t.19 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: not prefixed by /
+t.20 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown
+t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo unknown
# check wrapping
> /foo_0123456789_0123456789_01234567
0 .!# invalid prompt command: /foo_0123456789_0123456789_01234567 unknown
-TUI 21,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_01234567 unknown
+t.21 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_01234567 unknown
> /foo_0123456789_0123456789_012345678
0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-TUI 20,13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_012345678
-TUI 21,0.on_black,bold,bright_red,bright_cyan. unknown
-# # check scrolling
-# > /window.history.scroll up
-# > /foo_0123456789_0123456789_012345678
-# 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # TUI 21.on_black.
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # 0 .!# invalid prompt command: /foo_0123456789_0123456789_012345678 unknown
-# # > /foo_0123456789_0123456789_012345678
-# # TUI 0.on_black.
+t.20 13.on_black,bold,bright_red,bright_cyan.invalid prompt command: /foo_0123456789_0123456789_012345678
+t.21 0.on_black,bold,bright_red,bright_cyan. unknown
> /quit
0 ..<