"" "Terminal capability builder patterns." ""
# std imports
import re
from collections import OrderedDict
__all__ = (
'CAPABILITY_DATABASE' ,
'CAPABILITIES_RAW_MIXIN' ,
'CAPABILITIES_ADDITIVES' ,
'CAPABILITIES_CAUSE_MOVEMENT' ,
)
CAPABILITY_DATABASE = OrderedDict((
('bell' , ('bel' , {})),
('carriage_return' , ('cr' , {})),
('change_scroll_region' , ('csr' , {'nparams' : 2})),
('clear_all_tabs' , ('tbc' , {})),
('clear_screen' , ('clear' , {})),
('clr_bol' , ('el1' , {})),
('clr_eol' , ('el' , {})),
('clr_eos' , ('clear_eos' , {})),
('column_address' , ('hpa' , {'nparams' : 1})),
('cursor_address' , ('cup' , {'nparams' : 2, 'match_grouped' : True })),
('cursor_down' , ('cud1' , {})),
('cursor_home' , ('home' , {})),
('cursor_invisible' , ('civis' , {})),
('cursor_left' , ('cub1' , {})),
('cursor_normal' , ('cnorm' , {})),
('cursor_report' , ('u6' , {'nparams' : 2, 'match_grouped' : True })),
('cursor_right' , ('cuf1' , {})),
('cursor_up' , ('cuu1' , {})),
('cursor_visible' , ('cvvis' , {})),
('delete_character' , ('dch1' , {})),
('delete_line' , ('dl1' , {})),
('enter_blink_mode' , ('blink' , {})),
('enter_bold_mode' , ('bold' , {})),
('enter_dim_mode' , ('dim' , {})),
('enter_fullscreen' , ('smcup' , {})),
('enter_standout_mode' , ('standout' , {})),
('enter_superscript_mode' , ('superscript' , {})),
('enter_susimpleript_mode' , ('susimpleript' , {})),
('enter_underline_mode' , ('underline' , {})),
('erase_chars' , ('ech' , {'nparams' : 1})),
('exit_alt_charset_mode' , ('rmacs' , {})),
('exit_am_mode' , ('rmam' , {})),
('exit_attribute_mode' , ('sgr0' , {})),
('exit_ca_mode' , ('rmcup' , {})),
('exit_fullscreen' , ('rmcup' , {})),
('exit_insert_mode' , ('rmir' , {})),
('exit_standout_mode' , ('rmso' , {})),
('exit_underline_mode' , ('rmul' , {})),
('flash_hook' , ('hook' , {})),
('flash_screen' , ('flash' , {})),
('insert_line' , ('il1' , {})),
('keypad_local' , ('rmkx' , {})),
('keypad_xmit' , ('smkx' , {})),
('meta_off' , ('rmm' , {})),
('meta_on' , ('smm' , {})),
('orig_pair' , ('op' , {})),
('parm_down_cursor' , ('cud' , {'nparams' : 1})),
('parm_left_cursor' , ('cub' , {'nparams' : 1, 'match_grouped' : True })),
('parm_dch' , ('dch' , {'nparams' : 1})),
('parm_delete_line' , ('dl' , {'nparams' : 1})),
('parm_ich' , ('ich' , {'nparams' : 1})),
('parm_index' , ('indn' , {'nparams' : 1})),
('parm_insert_line' , ('il' , {'nparams' : 1})),
('parm_right_cursor' , ('cuf' , {'nparams' : 1, 'match_grouped' : True })),
('parm_rindex' , ('rin' , {'nparams' : 1})),
('parm_up_cursor' , ('cuu' , {'nparams' : 1})),
('print_screen' , ('mc0' , {})),
('prtr_off' , ('mc4' , {})),
('prtr_on' , ('mc5' , {})),
('reset_1string' , ('r1' , {})),
('reset_2string' , ('r2' , {})),
('reset_3string' , ('r3' , {})),
('restore_cursor' , ('rc' , {})),
('row_address' , ('vpa' , {'nparams' : 1})),
('save_cursor' , ('sc' , {})),
('scroll_forward' , ('ind' , {})),
('scroll_reverse' , ('rev' , {})),
('set0_des_seq' , ('s0ds' , {})),
('set1_des_seq' , ('s1ds' , {})),
('set2_des_seq' , ('s2ds' , {})),
('set3_des_seq' , ('s3ds' , {})),
# this 'color' is deceiving, but often matching, and a better match
# than set_a_attributes1 or set_a_foreground.
('color' , ('_foreground_color' , {'nparams' : 1, 'match_any' : True ,
'numeric' : 1})),
('set_a_foreground' , ('color' , {'nparams' : 1, 'match_any' : True ,
'numeric' : 1})),
('set_a_background' , ('on_color' , {'nparams' : 1, 'match_any' : True ,
'numeric' : 1})),
('set_tab' , ('hts' , {})),
('tab' , ('ht' , {})),
('italic' , ('sitm' , {})),
('no_italic' , ('sitm' , {})),
))
CAPABILITIES_RAW_MIXIN = {
'bell' : re.escape('\a' ),
'carriage_return' : re.escape('\r' ),
'cursor_left' : re.escape('\b' ),
'cursor_report' : re.escape('\x1b' ) + r'\[(\d+)\;(\d+)R' ,
'cursor_right' : re.escape('\x1b' ) + r'\[C' ,
'exit_attribute_mode' : re.escape('\x1b' ) + r'\[m' ,
'parm_left_cursor' : re.escape('\x1b' ) + r'\[(\d+)D' ,
'parm_right_cursor' : re.escape('\x1b' ) + r'\[(\d+)C' ,
'restore_cursor' : re.escape(r'\x1b\[u' ),
'save_cursor' : re.escape(r'\x1b\[s' ),
'scroll_forward' : re.escape('\n' ),
'set0_des_seq' : re.escape('\x1b(B' ),
'tab' : re.escape('\t' ),
}
_ANY_NOTESC = '[^' + re.escape('\x1b' ) + ']*'
CAPABILITIES_ADDITIVES = {
'link' : ('link' ,
re.escape('\x1b' ) + r'\]8;' + _ANY_NOTESC + ';' +
_ANY_NOTESC + re.escape('\x1b' ) + '\\\\' ),
'color256' : ('color' , re.escape('\x1b' ) + r'\[38;5;\d+m' ),
'on_color256' : ('on_color' , re.escape('\x1b' ) + r'\[48;5;\d+m' ),
'color_rgb' : ('color_rgb' , re.escape('\x1b' ) + r'\[38;2;\d+;\d+;\d+m' ),
'on_color_rgb' : ('on_color_rgb' , re.escape('\x1b' ) + r'\[48;2;\d+;\d+;\d+m' ),
'shift_in' : ('' , re.escape('\x0f' )),
'shift_out' : ('' , re.escape('\x0e' )),
# sgr(...) outputs strangely, use the basic ANSI/EMCA-48 codes here.
'set_a_attributes1' : (
'sgr' , re.escape('\x1b' ) + r'\[\d+m' ),
'set_a_attributes2' : (
'sgr' , re.escape('\x1b' ) + r'\[\d+\;\d+m' ),
'set_a_attributes3' : (
'sgr' , re.escape('\x1b' ) + r'\[\d+\;\d+\;\d+m' ),
'set_a_attributes4' : (
'sgr' , re.escape('\x1b' ) + r'\[\d+\;\d+\;\d+\;\d+m' ),
# this helps where xterm's sgr0 includes set0_des_seq, we'd
# rather like to also match this immediate substring.
'sgr0' : ('sgr0' , re.escape('\x1b' ) + r'\[m' ),
'backspace' : ('' , re.escape('\b' )),
'ascii_tab' : ('' , re.escape('\t' )),
'clr_eol' : ('' , re.escape('\x1b[K' )),
'clr_eol0' : ('' , re.escape('\x1b[0K' )),
'clr_bol' : ('' , re.escape('\x1b[1K' )),
'clr_eosK' : ('' , re.escape('\x1b[2K' )),
}
CAPABILITIES_CAUSE_MOVEMENT = (
'ascii_tab' ,
'backspace' ,
'carriage_return' ,
'clear_screen' ,
'column_address' ,
'cursor_address' ,
'cursor_down' ,
'cursor_home' ,
'cursor_left' ,
'cursor_right' ,
'cursor_up' ,
'enter_fullscreen' ,
'exit_fullscreen' ,
'parm_down_cursor' ,
'parm_left_cursor' ,
'parm_right_cursor' ,
'parm_up_cursor' ,
'restore_cursor' ,
'row_address' ,
'scroll_forward' ,
'tab' ,
)
quality 96%
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland