Spaces:
				
			
			
	
			
			
		No application file
		
	
	
	
			
			
	
	
	
	
		
		
		No application file
		
	| """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', | |
| ) | |
