The changes look good.  Thanks!

-Thomas Sidoti

On May 27, 10:33 am, Fabian Pedregosa <fab...@fseoane.net> wrote:
> TSidoti wrote:
> > 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('&gamma;'))
>
> you can better use <eulergamma/>, 
> seehttp://www.w3.org/TR/MathML2/chapter4.html
> at the end of page
>
> >> +        return x;
>
> no need to use ; at line end in python
>
> >> +
> >>      def _print_GoldenRatio(self,e):
> >>          x = self.dom.createElement('cn')
> >> -        """This is an html phi"""
> >> -        x.appendChild(self.dom.createTextNode('&#981;'))
> >> +        x.appendChild(self.dom.createTextNode('&Phi;'))
> >>          return x;
>
> Putting here an entity (&Phi;) is not very helpful since for entity
> resolution you would have to go to the DTD which is not shipped (nor
> referenced) in our printer. My solution would be to simply print the
> unicode version of this:
>
> x.appendChild(self.dom.createTextNode(u"\u03c6"))
>
> which is anyway what the entity &Phi; will be replaced with after
> looking. That way we avoid having the call to saxutils.unescape
>
> I attach a patch consisting of both patches you sent squashed together +
> my modifications.
>
> The attached patch is +1 from me, just tell me what you think.
>
> ~Fabian
>
>
>
> >>      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>&Phi;</cn>'
> >> +
> >> +    mml = mathml(EulerGamma)
> >> +    assert mml == '<cn>&gamma;</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
>
>
>
>  0001-Extend-MathML-s-printer-with-trig-functions-order-o.patch
> 10KViewDownload
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to