I wasn't sure how to add attachments and stay on the same thread. I changed the comments to comments and removed the prettyxml from the mathml() function but kept it in the print_mathml function.
I added two tests which will fail if we don't have the unescape. One way around unescaping is to keep it only in print_mathml and than relying on the user to unescape xml from the mathml() function. Also I couldn't find a list of all the constants anywhere in the documentation, so I may be missing some. -Thomas Sidoti On May 24, 5:01 pm, Thomas Sidoti <tsid...@gmail.com> wrote: > From d11d7e2c1a52af277ab14b95b49c1e320aa87206 Mon Sep 17 00:00:00 2001 > From: Thomas Sidoti <tsid...@gmail.com> > Date: Sun, 24 May 2009 16:46:27 -0400 > Subject: [PATCH 2/2] added tests, EulerGamma, removed pretty > > --- > sympy/printing/mathml.py | 24 ++++++++++++++---------- > sympy/printing/tests/test_mathml.py | 8 +++++++- > 2 files changed, 21 insertions(+), 11 deletions(-) > > diff --git a/sympy/printing/mathml.py b/sympy/printing/mathml.py > index d057b03..72aec44 100644 > --- a/sympy/printing/mathml.py > +++ b/sympy/printing/mathml.py > @@ -88,7 +88,7 @@ class MathMLPrinter(Printer): > x.appendChild(self._print(term)) > return x > > - """This is complicated because we attempt to order then results in > order of Basic._compare_pretty and use minus instaed of negative""" > + #This is complicated because we attempt to order then results in order > of Basic._compare_pretty and use minus instead of negative > def _print_Add(self, e): > args = list(e.args) > args.sort(Basic._compare_pretty) > @@ -99,12 +99,12 @@ class MathMLPrinter(Printer): > arg = args[i] > coeff, terms = arg.as_coeff_terms() > if(coeff.is_negative): > - """use minus""" > + #use minus > x = self.dom.createElement('apply') > x.appendChild(self.dom.createElement('minus')) > x.appendChild(lastProcessed) > x.appendChild(self._print(-arg)) > - """invert expression since this is now minused""" > + #invert expression since this is now minused > lastProcessed = x; > if(arg == args[-1]): > plusNodes.append(lastProcessed) > @@ -132,16 +132,16 @@ class MathMLPrinter(Printer): > > def _print_Rational(self, e): > if e.q == 1: > - """don't divide""" > + #don't divide > x = self.dom.createElement('cn') > x.appendChild(self.dom.createTextNode(str(e.p))) > return x > x = self.dom.createElement('apply') > x.appendChild(self.dom.createElement('divide')) > - """numerator""" > + #numerator > xnum = self.dom.createElement('cn') > xnum.appendChild(self.dom.createTextNode(str(e.p))) > - """denomenator""" > + #denomenator > xdenom = self.dom.createElement('cn') > xdenom.appendChild(self.dom.createTextNode(str(e.q))) > x.appendChild(xnum) > @@ -165,10 +165,14 @@ class MathMLPrinter(Printer): > def _print_ImaginaryUnit(self,e): > return self.dom.createElement('imaginaryi') > > + def _print_EulerGamma(self,e): > + x = self.dom.createElement('cn') > + x.appendChild(self.dom.createTextNode('γ')) > + return x; > + > def _print_GoldenRatio(self,e): > x = self.dom.createElement('cn') > - """This is an html phi""" > - x.appendChild(self.dom.createTextNode('ϕ')) > + x.appendChild(self.dom.createTextNode('Φ')) > return x; > > def _print_Exp1(self,e): > @@ -217,7 +221,7 @@ class MathMLPrinter(Printer): > return x > > def _print_Pow(self, e): > - """Here we use root instead of power if the exponent is the > reciprocal of an integer""" > + #Here we use root instead of power if the exponent is the > reciprocal of an integer > if e.exp.is_Rational and e.exp.p == 1: > x = self.dom.createElement('apply') > x.appendChild(self.dom.createElement('root')) > @@ -291,7 +295,7 @@ class MathMLPrinter(Printer): > def mathml(expr): > """Returns the MathML representation of expr""" > s = MathMLPrinter() > - return saxutils.unescape(s._print(sympify(expr)).toprettyxml()) > + return saxutils.unescape(s._print(sympify(expr)).toxml()) > > def print_mathml(expr): > """ > diff --git a/sympy/printing/tests/test_mathml.py > b/sympy/printing/tests/test_mathml.py > index 52aea8a..087656d 100644 > --- a/sympy/printing/tests/test_mathml.py > +++ b/sympy/printing/tests/test_mathml.py > @@ -1,4 +1,4 @@ > -from sympy import diff, Integral, Limit, sin, Symbol, Integer, Rational, > cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, E, I, oo, > pi > +from sympy import diff, Integral, Limit, sin, Symbol, Integer, Rational, > cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, E, I, oo, > pi, GoldenRatio, EulerGamma > from sympy.printing.mathml import mathml, MathMLPrinter > from xml.dom.minidom import parseString > > @@ -110,6 +110,12 @@ def test_mathml_constants(): > mml = mp._print(pi) > assert mml.nodeName == 'pi' > > + mml = mathml(GoldenRatio) > + assert mml == '<cn>Φ</cn>' > + > + mml = mathml(EulerGamma) > + assert mml == '<cn>γ</cn>' > + > def test_mathml_trig(): > mml = mp._print(sin(x)) > assert mml.childNodes[0].nodeName == 'sin' > -- > 1.5.6.5 > > 0001-MathML-trig-functions-order-of-terms-roots-and-c.patch > 13KViewDownload > > 0002-added-tests-EulerGamma-removed-pretty.patch > 6KViewDownload --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sympy-patches" group. To post to this group, send email to sympy-patches@googlegroups.com To unsubscribe from this group, send email to sympy-patches+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sympy-patches?hl=en -~----------~----~----~----~------~----~------~--~---