diff options
Diffstat (limited to 'addons/gut/printers.gd')
| -rw-r--r-- | addons/gut/printers.gd | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/addons/gut/printers.gd b/addons/gut/printers.gd deleted file mode 100644 index 7636eb6..0000000 --- a/addons/gut/printers.gd +++ /dev/null @@ -1,176 +0,0 @@ -# ------------------------------------------------------------------------------ -# Interface and some basic functionality for all printers. -# ------------------------------------------------------------------------------ -class Printer: - var _format_enabled = true - var _disabled = false - var _printer_name = 'NOT SET' - var _show_name = false # used for debugging, set manually - - func get_format_enabled(): - return _format_enabled - - func set_format_enabled(format_enabled): - _format_enabled = format_enabled - - func send(text, fmt=null): - if(_disabled): - return - - var formatted = text - if(fmt != null and _format_enabled): - formatted = format_text(text, fmt) - - if(_show_name): - formatted = str('(', _printer_name, ')') + formatted - - _output(formatted) - - func get_disabled(): - return _disabled - - func set_disabled(disabled): - _disabled = disabled - - # -------------------- - # Virtual Methods (some have some default behavior) - # -------------------- - func _output(text): - pass - - func format_text(text, fmt): - return text - -# ------------------------------------------------------------------------------ -# Responsible for sending text to a GUT gui. -# ------------------------------------------------------------------------------ -class GutGuiPrinter: - extends Printer - var _gut = null - - var _colors = { - red = Color.red, - yellow = Color.yellow, - green = Color.green - } - - func _init(): - _printer_name = 'gui' - - func _wrap_with_tag(text, tag): - return str('[', tag, ']', text, '[/', tag, ']') - - func _color_text(text, c_word): - return '[color=' + c_word + ']' + text + '[/color]' - - # Remember, we have to use push and pop because the output from the tests - # can contain [] in it which can mess up the formatting. There is no way - # as of 3.4 that you can get the bbcode out of RTL when using push and pop. - # - # The only way we could get around this is by adding in non-printable - # whitespace after each "[" that is in the text. Then we could maybe do - # this another way and still be able to get the bbcode out, or generate it - # at the same time in a buffer (like we tried that one time). - # - # Since RTL doesn't have good search and selection methods, and those are - # really handy in the editor, it isn't worth making bbcode that can be used - # there as well. - # - # You'll try to get it so the colors can be the same in the editor as they - # are in the output. Good luck, and I hope I typed enough to not go too - # far that rabbit hole before finding out it's not worth it. - func format_text(text, fmt): - var box = _gut.get_gui().get_text_box() - - if(fmt == 'bold'): - box.push_bold() - elif(fmt == 'underline'): - box.push_underline() - elif(_colors.has(fmt)): - box.push_color(_colors[fmt]) - else: - # just pushing something to pop. - box.push_normal() - - box.add_text(text) - box.pop() - - return '' - - func _output(text): - _gut.get_gui().get_text_box().add_text(text) - - func get_gut(): - return _gut - - func set_gut(gut): - _gut = gut - - # This can be very very slow when the box has a lot of text. - func clear_line(): - var box = _gut.get_gui().get_text_box() - box.remove_line(box.get_line_count() - 1) - box.update() - - func get_bbcode(): - return _gut.get_gui().get_text_box().text - -# ------------------------------------------------------------------------------ -# This AND TerminalPrinter should not be enabled at the same time since it will -# result in duplicate output. printraw does not print to the console so i had -# to make another one. -# ------------------------------------------------------------------------------ -class ConsolePrinter: - extends Printer - var _buffer = '' - - func _init(): - _printer_name = 'console' - - # suppresses output until it encounters a newline to keep things - # inline as much as possible. - func _output(text): - if(text.ends_with("\n")): - print(_buffer + text.left(text.length() -1)) - _buffer = '' - else: - _buffer += text - -# ------------------------------------------------------------------------------ -# Prints text to terminal, formats some words. -# ------------------------------------------------------------------------------ -class TerminalPrinter: - extends Printer - - var escape = PoolByteArray([0x1b]).get_string_from_ascii() - var cmd_colors = { - red = escape + '[31m', - yellow = escape + '[33m', - green = escape + '[32m', - - underline = escape + '[4m', - bold = escape + '[1m', - - default = escape + '[0m', - - clear_line = escape + '[2K' - } - - func _init(): - _printer_name = 'terminal' - - func _output(text): - # Note, printraw does not print to the console. - printraw(text) - - func format_text(text, fmt): - return cmd_colors[fmt] + text + cmd_colors.default - - func clear_line(): - send(cmd_colors.clear_line) - - func back(n): - send(escape + str('[', n, 'D')) - - func forward(n): - send(escape + str('[', n, 'C')) |
