ranger.gui.ansi
index
../../ranger/gui/ansi.py

A library to help to convert ANSI codes to curses instructions.

 
Modules
       
ranger.gui.color
re

 
Functions
       
char_len(ansi_text)
Count the number of visible characters.
 
>>> char_len("X")
1
>>> char_len("XY")
2
>>> char_len("XY")
2
>>> char_len("hello")
5
>>> char_len("")
0
char_slice(ansi_text, start, length)
Slices a string with respect to ansi code sequences
 
Acts as if the ansi codes aren't there, slices the text from the
given start point to the given length and adds the codes back in.
 
>>> test_string = "abcdefoobarnormal"
>>> split_ansi_from_text(test_string)
['abcde', '\x1b[30m', 'foo', '\x1b[31m', 'bar', '\x1b[0m', 'normal']
>>> char_slice(test_string, 1, 3)
'bcd'
>>> char_slice(test_string, 5, 6)
'\x1b[30mfoo\x1b[31mbar'
>>> char_slice(test_string, 0, 8)
'abcde\x1b[30mfoo'
>>> char_slice(test_string, 4, 4)
'e\x1b[30mfoo'
>>> char_slice(test_string, 11, 100)
'\x1b[0mnormal'
>>> char_slice(test_string, 9, 100)
'\x1b[31mar\x1b[0mnormal'
>>> char_slice(test_string, 9, 4)
'\x1b[31mar\x1b[0mno'
split_ansi_from_text(ansi_text)
text_with_fg_bg_attr(ansi_text)
# For information on the ANSI codes see
# githttp://en.wikipedia.org/wiki/ANSI_escape_code

 
Data
        ansi_re = re.compile('(\x1b\\[\\d*(?:;\\d+)*?[a-zA-Z])')
codesplit_re = re.compile('38;5;(\\d+);|48;5;(\\d+);|(\\d*);')
reset = '\x1b[0m'