summaryrefslogtreecommitdiff
path: root/addons/gut/printers.gd
diff options
context:
space:
mode:
authorSophia Pearson <codergal89@gmail.com>2022-10-03 22:22:50 +0200
committerSophia Pearson <codergal89@gmail.com>2022-10-04 22:18:18 +0200
commite127ad39e742396030352240d829bc903b1d4464 (patch)
tree10cc21d70bf13181aef7c8ad0344077ff63579a3 /addons/gut/printers.gd
parentddbb045f6387a8ba23b1210b27a745516a387a52 (diff)
downloadtexty-e127ad39e742396030352240d829bc903b1d4464.tar.xz
texty-e127ad39e742396030352240d829bc903b1d4464.zip
godot: inital Godot 4 migration
Diffstat (limited to 'addons/gut/printers.gd')
-rw-r--r--addons/gut/printers.gd176
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'))