From 0a560ab771169c6f471fd9ed301fbb73f7651a95 Mon Sep 17 00:00:00 2001 From: Pablo Emilio Escobar Gaviria Date: Wed, 27 Jan 2021 02:12:06 +1000 Subject: [PATCH 1/2] Replace named characters with plain text before printing the output --- mathicsscript/__main__.py | 4 ++-- mathicsscript/termshell.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/mathicsscript/__main__.py b/mathicsscript/__main__.py index de6b174..f7f3534 100755 --- a/mathicsscript/__main__.py +++ b/mathicsscript/__main__.py @@ -243,7 +243,7 @@ def main( ) shell.terminal_formatter = None result = evaluation.parse_evaluate(expr, timeout=settings.TIMEOUT) - shell.print_result(result, "text") + shell.print_result(result, unicode, output_style="text") # After the next release, we can remove the hasattr test. if hasattr(evaluation, "exc_result"): @@ -346,7 +346,7 @@ def main( query, timeout=settings.TIMEOUT, format="unformatted" ) if result is not None: - shell.print_result(result, output_style) + shell.print_result(result, unicode, output_style=output_style) except ShellEscapeException as e: source_code = e.line diff --git a/mathicsscript/termshell.py b/mathicsscript/termshell.py index 5667edb..d391bd5 100644 --- a/mathicsscript/termshell.py +++ b/mathicsscript/termshell.py @@ -9,7 +9,11 @@ import sys import re from columnize import columnize -from mathics_scanner import replace_unicode_with_wl, named_characters +from mathics_scanner import ( + replace_wl_with_plain_text, + replace_unicode_with_wl, + named_characters +) from mathics.core.expression import Expression, String, Symbol from mathics.core.expression import strip_context, from_python from mathics.core.rules import Rule @@ -255,7 +259,7 @@ def read_line(self, prompt): raise ShellEscapeException(line) return replace_unicode_with_wl(line) - def print_result(self, result, output_style=""): + def print_result(self, result, use_unicode, output_style=""): if result is None: # FIXME decide what to do here return @@ -269,7 +273,8 @@ def print_result(self, result, output_style=""): print(sys.exc_info()[1]) return - out_str = str(result.result) + out_str = replace_wl_with_plain_text(str(result.result), + use_unicode=use_unicode) if eval_type == "System`Graph": out_str = "-Graph-" elif self.terminal_formatter: # pygmentize From aaf8cbcad69c2bb994ecd25046b6f92c0efcfe43 Mon Sep 17 00:00:00 2001 From: Pablo Emilio Escobar Gaviria Date: Thu, 28 Jan 2021 18:57:18 -0300 Subject: [PATCH 2/2] Cleaned the code and made it so that messages are replaces too --- mathicsscript/__main__.py | 4 ++-- mathicsscript/termshell.py | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/mathicsscript/__main__.py b/mathicsscript/__main__.py index f7f3534..de6b174 100755 --- a/mathicsscript/__main__.py +++ b/mathicsscript/__main__.py @@ -243,7 +243,7 @@ def main( ) shell.terminal_formatter = None result = evaluation.parse_evaluate(expr, timeout=settings.TIMEOUT) - shell.print_result(result, unicode, output_style="text") + shell.print_result(result, "text") # After the next release, we can remove the hasattr test. if hasattr(evaluation, "exc_result"): @@ -346,7 +346,7 @@ def main( query, timeout=settings.TIMEOUT, format="unformatted" ) if result is not None: - shell.print_result(result, unicode, output_style=output_style) + shell.print_result(result, output_style) except ShellEscapeException as e: source_code = e.line diff --git a/mathicsscript/termshell.py b/mathicsscript/termshell.py index d391bd5..bafde51 100644 --- a/mathicsscript/termshell.py +++ b/mathicsscript/termshell.py @@ -110,6 +110,7 @@ def __init__( self.lineno = 0 self.terminal_formatter = None self.history_length = definitions.get_config_value("$HistoryLength", HISTSIZE) + self.use_unicode = use_unicode # Try importing readline to enable arrow keys support etc. self.using_readline = False @@ -134,7 +135,7 @@ def __init__( parent_dir = pathlib.Path(__file__).parent.absolute() with parent_dir: inputrc = ( - "inputrc-unicode" if use_unicode else "inputrc-no-unicode" + "inputrc-unicode" if self.use_unicode else "inputrc-no-unicode" ) try: read_init_file(str(parent_dir / inputrc)) @@ -190,7 +191,7 @@ def __init__( "Settings`$PygmentsShowTokens", from_python(False) ) self.definitions.set_ownvalue("Settings`$PygmentsStyle", from_python(style)) - self.definitions.set_ownvalue("Settings`$UseUnicode", from_python(use_unicode)) + self.definitions.set_ownvalue("Settings`$UseUnicode", from_python(self.use_unicode)) self.definitions.set_ownvalue( "Settings`PygmentsStylesAvailable", from_python(ALL_PYGMENTS_STYLES) ) @@ -248,7 +249,11 @@ def to_output(self, text): return newline.join(text.splitlines()) def out_callback(self, out): - print(self.to_output(str(out))) + print( + self.to_output( + replace_wl_with_plain_text(str(out), self.use_unicode) + ) + ) def read_line(self, prompt): if self.using_readline: @@ -259,7 +264,7 @@ def read_line(self, prompt): raise ShellEscapeException(line) return replace_unicode_with_wl(line) - def print_result(self, result, use_unicode, output_style=""): + def print_result(self, result, output_style=""): if result is None: # FIXME decide what to do here return @@ -274,7 +279,7 @@ def print_result(self, result, use_unicode, output_style=""): return out_str = replace_wl_with_plain_text(str(result.result), - use_unicode=use_unicode) + use_unicode=self.use_unicode) if eval_type == "System`Graph": out_str = "-Graph-" elif self.terminal_formatter: # pygmentize