2020from mathics .core .number import dps
2121from mathics .core .symbols import Atom , Symbol
2222from mathics .core .systemsymbols import SymbolInputForm , SymbolOutputForm , SymbolRowBox
23- from mathics .eval .makeboxes import _boxed_string , format_element
23+ from mathics .eval .makeboxes import _boxed_string , compare_precedence , format_element
2424
2525
2626def int_to_s_exp (expr , n ):
@@ -36,26 +36,12 @@ def int_to_s_exp(expr, n):
3636
3737
3838def parenthesize (precedence , element , element_boxes , when_equal ):
39- from mathics .builtin import builtins_precedence
40-
41- while element .has_form ("HoldForm" , 1 ):
42- element = element .elements [0 ]
43-
44- if element .has_form (("Infix" , "Prefix" , "Postfix" ), 3 , None ):
45- element_prec = element .elements [2 ].value
46- elif element .has_form ("PrecedenceForm" , 2 ):
47- element_prec = element .elements [1 ].value
48- # For negative values, ensure that the element_precedence is at least the precedence. (Fixes #332)
49- elif isinstance (element , (Integer , Real )) and element .value < 0 :
50- element_prec = precedence
51- else :
52- element_prec = builtins_precedence .get (element .get_head_name ())
53- if precedence is not None and element_prec is not None :
54- if precedence > element_prec or (precedence == element_prec and when_equal ):
55- return Expression (
56- SymbolRowBox ,
57- ListExpression (String ("(" ), element_boxes , String (")" )),
58- )
39+ cmp = compare_precedence (element , precedence )
40+ if cmp is not None and (cmp == - 1 or cmp == 0 and when_equal ):
41+ return Expression (
42+ SymbolRowBox ,
43+ ListExpression (String ("(" ), element_boxes , String (")" )),
44+ )
5945 return element_boxes
6046
6147
@@ -359,9 +345,9 @@ class MakeBoxes(Builtin):
359345 'MakeBoxes[Infix[head[elements], StringForm["~`1`~", head]], f]'
360346 ),
361347 "MakeBoxes[expr_]" : "MakeBoxes[expr, StandardForm]" ,
362- "MakeBoxes[(form:StandardForm|TraditionalForm|OutputForm| TeXForm|"
348+ "MakeBoxes[(form:StandardForm|TraditionalForm|TeXForm|"
363349 "MathMLForm)[expr_], StandardForm|TraditionalForm]" : ("MakeBoxes[expr, form]" ),
364- "MakeBoxes[(form:StandardForm|OutputForm| MathMLForm|TeXForm)[expr_], OutputForm]" : "MakeBoxes[expr, form]" ,
350+ "MakeBoxes[(form:StandardForm|MathMLForm|TeXForm)[expr_], OutputForm]" : "MakeBoxes[expr, form]" ,
365351 "MakeBoxes[(form:FullForm|InputForm)[expr_], StandardForm|TraditionalForm|OutputForm]" : "StyleBox[MakeBoxes[expr, form], ShowStringCharacters->True]" ,
366352 "MakeBoxes[PrecedenceForm[expr_, prec_], f_]" : "MakeBoxes[expr, f]" ,
367353 "MakeBoxes[Style[expr_, OptionsPattern[Style]], f_]" : (
0 commit comments