Actually it fixes issue 763.  =D

-- Andy

On Dec 8, 3:18 pm, [EMAIL PROTECTED] wrote:
> From: Andy R. Terrel <[EMAIL PROTECTED]>
>
> ---
>  examples/all.py                     |    2 +-
>  examples/intermediate/print_gtk.py  |   11 +++----
>  sympy/printing/mathml.py            |   48 +++++++++++++++++++---------------
>  sympy/printing/tests/test_mathml.py |   18 ++++++++----
>  4 files changed, 45 insertions(+), 34 deletions(-)
>
> diff --git a/examples/all.py b/examples/all.py
> index 3a395ab..0b6f9f1 100755
> --- a/examples/all.py
> +++ b/examples/all.py
> @@ -66,7 +66,7 @@ TERMINAL_EXAMPLES = [
>
>  WINDOWED_EXAMPLES = [
>      "beginner.plotting_nice_plot",
> -    #"intermediate.print_gtk",
> +    "intermediate.print_gtk",
>      "intermediate.mplot2d",
>      "intermediate.mplot3d",
>      "advanced.plotting",
> diff --git a/examples/intermediate/print_gtk.py 
> b/examples/intermediate/print_gtk.py
> index aca5ff9..9d07fb0 100755
> --- a/examples/intermediate/print_gtk.py
> +++ b/examples/intermediate/print_gtk.py
> @@ -4,17 +4,16 @@
>  Demonstrates printing with gtkmathview using mathml
>  """
>
> -from sympy import Symbol, integrate, exp
> -from sympy.printing import print_gtk
> +from sympy import Integral, Limit, print_gtk, sin, Symbol
>
>  def main():
>      x = Symbol('x')
>
> -    #l1 = limit(sin(x)/x, x, 0, evaluate=False)
> -    #print_gtk(l1)
> +    example_limit = Limit(sin(x)/x, x, 0)
> +    print_gtk(example_limit)
>
> -    l2 = integrate(exp(x), (x,0,1), evaluate=False)
> -    print_gtk(l2)
> +    example_integral = Integral(x, (x, 0, 1))
> +    print_gtk(example_integral)
>
>  if __name__ == "__main__":
>      main()
> diff --git a/sympy/printing/mathml.py b/sympy/printing/mathml.py
> index 1629786..ec6c88c 100644
> --- a/sympy/printing/mathml.py
> +++ b/sympy/printing/mathml.py
> @@ -52,34 +52,40 @@ class MathMLPrinter(Printer):
>
>          x_1 = self.dom.createElement('bvar')
>          x_2 = self.dom.createElement('lowlimit')
> -        x_1.appendChild(self._print(e.x))
> -        x_2.appendChild(self._print(e.x0))
> +        x_1.appendChild(self._print(e.args[1]))
> +        x_2.appendChild(self._print(e.args[2]))
>
>          x.appendChild(x_1)
>          x.appendChild(x_2)
> -        x.appendChild(self._print(e.e))
> +        x.appendChild(self._print(e.args[0]))
>
>          return x
>
> -    def _print_Integral(self, e):
> -        # FIXME doesn't work -- needs to be updated to the new Integral class
> -        x = self.dom.createElement('apply')
> -        x.appendChild(self.dom.createElement(self.mathml_tag(e)))
> -
> -        x_1 = self.dom.createElement('bvar')
> -        x_2 = self.dom.createElement('lowlimit')
> -        x_3 = self.dom.createElement('uplimit')
>
> -        #x_1.appendChild(self._print(e.x))
> -        #x_2.appendChild(self._print(e.a))
> -        #x_3.appendChild(self._print(e.b))
> -
> -        x.appendChild(x_1)
> -        x.appendChild(x_2)
> -        x.appendChild(x_3)
> -        x.appendChild(self._print(e.f))
> -
> -        return x
> +    def _print_Integral(self, e):
> +        def lime_recur(limits):
> +            x = self.dom.createElement('apply')
> +            x.appendChild(self.dom.createElement(self.mathml_tag(e)))
> +            bvar_elem = self.dom.createElement('bvar')
> +            bvar_elem.appendChild(self._print(limits[0][0]))
> +            x.appendChild(bvar_elem)
> +
> +            if limits[0][1]:
> +                low_elem = self.dom.createElement('lowlimit')
> +                low_elem.appendChild(self._print(limits[0][1][0]))
> +                x.appendChild(low_elem)
> +                up_elem = self.dom.createElement('uplimit')
> +                up_elem.appendChild(self._print(limits[0][1][1]))
> +                x.appendChild(up_elem)
> +            if len(limits) == 1:
> +                x.appendChild(self._print(e.function))
> +            else:
> +                x.appendChild(lime_recur(limits[1:]))
> +            return x
> +
> +        limits = list(e.limits)
> +        limits.reverse()
> +        return lime_recur(limits)
>
>      def _print_Symbol(self, sym):
>          x = self.dom.createElement(self.mathml_tag(sym))
> diff --git a/sympy/printing/tests/test_mathml.py 
> b/sympy/printing/tests/test_mathml.py
> index 7b5955a..6d7f55c 100644
> --- a/sympy/printing/tests/test_mathml.py
> +++ b/sympy/printing/tests/test_mathml.py
> @@ -1,7 +1,6 @@
> -from sympy import Symbol, sin, diff
> +from sympy import diff, Integral, Limit, sin, Symbol
>  from sympy.printing.mathml import mathml, MathMLPrinter
>  from xml.dom.minidom import parseString
> -from sympy.utilities.pytest import XFAIL
>
>  x = Symbol('x')
>  mp = MathMLPrinter()
> @@ -50,16 +49,23 @@ def test_mathml_functions():
>      assert mml_2.childNodes[1].nodeName == 'bvar'
>      assert mml_2.childNodes[1].childNodes[0].nodeName == 'ci'  # below bvar 
> there's <ci>x/ci>
>
> [EMAIL PROTECTED]
>  def test_mathml_limits():
>      # XXX No unevaluated limits
> -    mml_1 = mp._print(limit(sin(x)/x, x, 0, evaluate=False))
> +    lim_fun = sin(x)/x
> +    mml_1 = mp._print(Limit(lim_fun, x, 0))
>      assert mml_1.childNodes[0].nodeName == 'limit'
>      assert mml_1.childNodes[1].nodeName == 'bvar'
> -    assert mml_1.childNodes[1].childNodes[0].nodeName == 'ci'
> +    assert mml_1.childNodes[2].nodeName == 'lowlimit'
> +    assert mml_1.childNodes[3].toxml() == mp._print(lim_fun).toxml()
>
>  def test_mathml_integrals():
> -    pass #TODO
> +    integrand = x
> +    mml_1 = mp._print(Integral(integrand, (x, 0, 1)))
> +    assert mml_1.childNodes[0].nodeName == 'int'
> +    assert mml_1.childNodes[1].nodeName == 'bvar'
> +    assert mml_1.childNodes[2].nodeName == 'lowlimit'
> +    assert mml_1.childNodes[3].nodeName == 'uplimit'
> +    assert mml_1.childNodes[4].toxml() == mp._print(integrand).toxml()
>
>  def test_mathml_matrices():
>      pass #TODO
> --
> 1.6.0.3
--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sympy-patches?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to