Skip to content

Commit fea6162

Browse files
authored
Merge pull request #7 from Mathics3/unicode-option
Start to suport Unicode as a CLI option
2 parents 56e3708 + 00e9f2e commit fea6162

File tree

9 files changed

+310
-191
lines changed

9 files changed

+310
-191
lines changed

mathicsscript/__main__.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ def out(self, out):
144144
default=True,
145145
help="GNU Readline line editing. enable tab completion",
146146
)
147+
@click.option(
148+
"--unicode/--no-unicode",
149+
default=True,
150+
help="GNU Readline line editing. If this is off completion and command history are also turned off",
151+
)
147152
@click.option(
148153
"--pyextensions",
149154
"-l",
@@ -188,6 +193,7 @@ def main(
188193
quiet,
189194
readline,
190195
completion,
196+
unicode,
191197
pyextensions,
192198
execute,
193199
initfile,
@@ -214,13 +220,13 @@ def main(
214220
# Then, it can be changed by the settings file (in WL)
215221
# and overwritten by the command line parameter.
216222
definitions.set_ownvalue(
217-
"Settings`$ShowFullFormInput", from_python(1 if full_form else 0)
223+
"Settings`$ShowFullFormInput", from_python(True if full_form else False)
218224
)
219225
definitions.set_ownvalue(
220-
"Settings`$PygmentsShowTokens", from_python(1 if pygments_tokens else 0)
226+
"Settings`$PygmentsShowTokens", from_python(True if pygments_tokens else False)
221227
)
222228

223-
shell = TerminalShell(definitions, style, readline, completion)
229+
shell = TerminalShell(definitions, style, readline, completion, unicode)
224230
load_settings(shell)
225231
if initfile:
226232
with open(initfile, "r") as ifile:

mathicsscript/format.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ def format_output(obj, expr, format=None):
2929
expr = leaves[0]
3030
elif expr_type in ("System`Graphics", "System`Plot"):
3131
result = "-System Graphics-"
32-
# result = Expression("StandardForm", expr).format(obj, "System`MathMLForm")
33-
# ml_str = result.leaves[0].leaves[0]
32+
result = Expression("StandardForm", expr).format(obj, "System`MathMLForm")
33+
ml_str = result.leaves[0].leaves[0]
3434
# FIXME: not quite right. Need to parse out strings
3535
# display_svg(str(ml_str))
3636

@@ -379,7 +379,6 @@ def format_graph(G):
379379
if graph_layout in ["circular", "spiral", "spiral_equidistant"]:
380380
plt.axes().set_aspect("equal")
381381

382-
383382
harmonize_parameters(G, draw_options)
384383

385384
if layout_fn:

mathicsscript/inputrc

Lines changed: 1 addition & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,4 @@
1-
# GNU Readline input translations
2-
3-
# Lowercase TeX Greek characters
4-
"\e\\alpha\e": "α"
5-
"\e\\beta\e": "β"
6-
"\e\\gamma\e": "γ"
7-
"\e\\delta\e": "δ"
8-
"\e\\epsilon\e": "ε"
9-
"\e\\zeta\e": "ζ"
10-
"\e\\eta\e": "η"
11-
"\e\\theta\e": "θ"
12-
"\e\\iota\e": "ι"
13-
"\e\\kappa\e": "κ"
14-
"\e\\lambda\e": "λ"
15-
"\e\\mu\e": "μ"
16-
"\e\\nu\e": "ν"
17-
"\e\\xi\e": "ξ"
18-
"\e\\omicron\e": "ο"
19-
"\e\\pi\e": "π"
20-
"\e\\rho\e": "ρ"
21-
"\e\\varsigma\e": "ς"
22-
"\e\\sigma\e": "σ"
23-
"\e\\tau\e": "τ"
24-
"\e\\upsilon\e": "υ"
25-
"\e\\phi\e": "φ"
26-
"\e\\chi\e": "χ"
27-
"\e\\psi\e": "ψ"
28-
"\e\\omega\e": "ω"
29-
30-
# Lowercase named Greek characters
31-
"\ea\e": "α"
32-
"\eb\e": "β"
33-
"\eg\e": "γ"
34-
"\ed\e": "δ"
35-
"\ee\e": "ε"
36-
"\ez\e": "ζ"
37-
"\ee\e": "η"
38-
"\et\e": "θ"
39-
"\ei\e": "ι"
40-
"\ek\e": "κ"
41-
"\el\e": "λ"
42-
"\em\e": "μ"
43-
"\en\e": "ν"
44-
"\ex\e": "ξ"
45-
"\eo\e": "ω"
46-
"\ep\e": "π"
47-
"\er\e": "ρ"
48-
"\ev\e": "ς"
49-
"\es\e": "σ"
50-
"\et\e": "τ"
51-
"\eu\e": "υ"
52-
# "\e\\phi\e": "φ" # ?
53-
# "\e\\chi\e": "χ" # ?
54-
# "\e\\psi\e": "ψ" # ?
55-
56-
# Uppercase TeX Greek symbols
57-
"\e\\Gamma\e": "Γ"
58-
"\e\\Delta\e": "Δ"
59-
"\e\\Theta\e": "Θ"
60-
"\e\\Lambda\e": "Λ"
61-
"\e\\Xi\e": "Ξ"
62-
"\e\\Pi\e": "Π"
63-
"\e\\Sigma\e": "Σ"
64-
"\e\\Upsilon\e": "Υ"
65-
"\e\\Phi\e": "Φ"
66-
"\e\\Psi\e": "Ψ"
67-
"\e\\Omega\e": "Ω"
68-
69-
# Things we have Unicode symbols for
70-
"\e.a\e": ""
71-
"\e$a\e": ""
72-
"\e.A\e": ""
73-
"\e$A\e": ""
74-
"\e.B\e": ""
75-
"\e$B\e": ""
76-
"\e.b\e": ""
77-
"\e$b\e": ""
78-
"\e.D\e": ""
79-
"\e$D\e": ""
80-
"\e.d\e": ""
81-
"\e$d\e": ""
82-
"\e.E\e": ""
83-
"\e$E\e": ""
84-
"\e.e\e": ""
85-
"\e$e\e": ""
86-
"\e.H\e": ""
87-
"\e$H\e": ""
88-
"\e.h\e": ""
89-
"\e$h\e": ""
90-
"\e.I\e": ""
91-
"\e$I\e": ""
92-
"\e.i\e": ""
93-
"\e$i\e": ""
94-
"\e.K\e": ""
95-
"\e$K\e": ""
96-
"\e.k\e": ""
97-
"\e$k\e": ""
98-
"\e.L\e": ""
99-
"\e$L\e": ""
100-
"\e.l\e": ""
101-
"\e$l\e": ""
102-
"\e.M\e": ""
103-
"\e$M\e": ""
104-
"\e.m\e": ""
105-
"\e$m\e": ""
106-
"\e.N\e": ""
107-
"\e$N\e": ""
108-
"\e.n\e": ""
109-
"\e$n\e": ""
110-
"\e.O\e": ""
111-
"\e$O\e": ""
112-
"\e.o\e": ""
113-
"\e$o\e": ""
114-
"\e.R\e": ""
115-
"\e$R\e": ""
116-
"\e.r\e": ""
117-
"\e$r\e": ""
118-
"\e.S\e": ""
119-
"\e$S\e": ""
120-
"\e.s\e": ""
121-
"\e$s\e": ""
122-
"\e.T\e": ""
123-
"\e$T\e": ""
124-
"\e.t\e": ""
125-
"\e$t\e": ""
126-
"\e.U\e": ""
127-
"\e$U\e": ""
128-
"\e.u\e": ""
129-
"\e$u\e": ""
130-
"\e$V\e": ""
131-
"\e.V\e": ""
132-
"\e.v\e": "ṿ"
133-
"\e$v\e": "ṿ"
134-
"\e.W\e": ""
135-
"\e$W\e": ""
136-
"\e.w\e": ""
137-
"\e$w\e": ""
138-
"\e.Y\e": ""
139-
"\e$Y\e": ""
140-
"\e.y\e": ""
141-
"\e$y\e": ""
142-
"\e.Z\e": ""
143-
"\e$Z\e": ""
144-
"\e.Z\e": ""
145-
"\e$Z\e": ""
146-
"\einf\e": ""
147-
"\edeg\e": "°"
148-
"\e&&\e": ""
149-
"\eue\e": ""
150-
"\ede\e": ""
1+
# GNU Readline input translations (no unicode here)
1512

1523
# Things we have don't have Unicode symbols in terminal.
1534
# So we use the Mathics name
@@ -187,30 +38,4 @@
18738
"\escx\e": "\\[ScriptX]"
18839
"\escy\e": "\\[ScriptY]"
18940
"\escz\e": "\\[ScriptZ]"
190-
"\escA\e": "\\[ScriptCapitalA]"
191-
"\escB\e": "\\[ScriptCapitalB]"
192-
"\escC\e": "\\[ScriptCapitalC]"
193-
"\escD\e": "\\[ScriptCapitalD]"
194-
"\escE\e": "\\[ScriptCapitalE]"
195-
"\escF\e": "\\[ScriptCapitalF]"
196-
"\escG\e": "\\[ScriptCapitalG]"
197-
"\escH\e": "\\[ScriptCapitalH]"
198-
"\escI\e": "\\[ScriptCapitalI]"
199-
"\escJ\e": "\\[ScriptCapitalJ]"
200-
"\escK\e": "\\[ScriptCapitalK]"
201-
"\escL\e": "\\[ScriptCapitalL]"
202-
"\escM\e": "\\[ScriptCapitalM]"
203-
"\escN\e": "\\[ScriptCapitalN]"
204-
"\escO\e": "\\[ScriptCapitalO]"
205-
"\escP\e": "\\[ScriptCapitalP]"
206-
"\escQ\e": "\\[ScriptCapitalQ]"
207-
"\escR\e": "\\[ScriptCapitalR]"
208-
"\escS\e": "\\[ScriptCapitalS]"
209-
"\escT\e": "\\[ScriptCapitalT]"
210-
"\escU\e": "\\[ScriptCapitalU]"
211-
"\escV\e": "\\[ScriptCapitalV]"
212-
"\escW\e": "\\[ScriptCapitalW]"
213-
"\escX\e": "\\[ScriptCapitalX]"
214-
"\esCy\e": "\\[ScriptCapitalY]"
215-
"\esCz\e": "\\[ScriptCapitalZ]"
21641
tab: complete

mathicsscript/inputrc-no-unicode

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# GNU Readline input translations
2+
3+
# Note: the reader will insure that the current working directory is this
4+
# one before reading this file. Therefore we can omit path directories.
5+
$include "inputrc"
6+
7+
# Lowercase TeX Greek characters
8+
"\e\\alpha\e": "\\[Alpha]"
9+
"\e\\beta\e": "\\[Beta]"
10+
"\e\\gamma\e": "\\[Gama]"
11+
"\e\\delta\e": "\\[Delta]"
12+
"\e\\epsilon\e": "\\[Epsilon]"
13+
"\e\\zeta\e": "\\[Zeta]"
14+
"\e\\eta\e": "\\[Eta]"
15+
"\e\\theta\e": "\\[Theta]"
16+
"\e\\iota\e": "\\[Iota]"
17+
"\e\\kappa\e": "\\[Kappa]"
18+
"\e\\lambda\e": "\\[Lambda]"
19+
"\e\\mu\e": "\\[Mu]"
20+
"\e\\nu\e": "\\[Nu]"
21+
"\e\\xi\e": "\\[Xi]"
22+
"\e\\omicron\e": "\\[Omicron]"
23+
"\e\\pi\e": "\\[Pi]"
24+
"\e\\rho\e": "\\[Rho]"
25+
"\e\\sigma\e": "\\[Sigma]"
26+
"\e\\tau\e": "\\[Tau]"
27+
"\e\\upsilon\e": "\\[Upsilon\]"
28+
"\e\\phi\e": "\\[Phi]"
29+
"\e\\chi\e": "\\[Chi]"
30+
"\e\\psi\e": "\\Psi]"
31+
"\e\\omega\e": "\\[Omega]"
32+
33+
# Lowercase named Greek characters
34+
"\ea\e": "\\[Alpha]""
35+
"\eb\e": "\\[Beta]"
36+
"\eg\e": "\\[Gama]"
37+
"\ed\e": "\\[Delta]"
38+
"\ee\e": "\\[Epsilon]"
39+
"\ez\e": "\\[Zeta]"
40+
"\ee\e": "\\[Nu]"
41+
"\et\e": "\\[Theta]"
42+
"\ei\e": "\\[Iota]"
43+
"\ek\e": "\\[Kappa]"
44+
"\el\e": "\\[Lambda]"
45+
"\em\e": "\\[Mu]"
46+
"\en\e": "\\[Nu]"
47+
"\ex\e": "\\[Eta]"
48+
"\eo\e": "\\[Omega]"
49+
"\ep\e": ""\\[Pi]"
50+
"\er\e": "\\[Rho]"
51+
"\es\e": "\\[Sigma]"
52+
"\et\e": "\\[Tau]"
53+
"\eu\e": "υ"
54+
# "\e\\phi\e": "φ" # ?
55+
# "\e\\chi\e": "χ" # ?
56+
# "\e\\psi\e": "ψ" # ?
57+
58+
"\escA\e": "\\[ScriptCapitalA]"
59+
"\escB\e": "\\[ScriptCapitalB]"
60+
"\escC\e": "\\[ScriptCapitalC]"
61+
"\escD\e": "\\[ScriptCapitalD]"
62+
"\escE\e": "\\[ScriptCapitalE]"
63+
"\escF\e": "\\[ScriptCapitalF]"
64+
"\escG\e": "\\[ScriptCapitalG]"
65+
"\escH\e": "\\[ScriptCapitalH]"
66+
"\escI\e": "\\[ScriptCapitalI]"
67+
"\escJ\e": "\\[ScriptCapitalJ]"
68+
"\escK\e": "\\[ScriptCapitalK]"
69+
"\escL\e": "\\[ScriptCapitalL]"
70+
"\escM\e": "\\[ScriptCapitalM]"
71+
"\escN\e": "\\[ScriptCapitalN]"
72+
"\escO\e": "\\[ScriptCapitalO]"
73+
"\escP\e": "\\[ScriptCapitalP]"
74+
"\escQ\e": "\\[ScriptCapitalQ]"
75+
"\escR\e": "\\[ScriptCapitalR]"
76+
"\escS\e": "\\[ScriptCapitalS]"
77+
"\escT\e": "\\[ScriptCapitalT]"
78+
"\escU\e": "\\[ScriptCapitalU]"
79+
"\escV\e": "\\[ScriptCapitalV]"
80+
"\escW\e": "\\[ScriptCapitalW]"
81+
"\escX\e": "\\[ScriptCapitalX]"
82+
"\esCy\e": "\\[ScriptCapitalY]"
83+
"\esCz\e": "\\[ScriptCapitalZ]"

0 commit comments

Comments
 (0)