Fix: fraction rendering
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Bertrand Benjamin 2021-09-25 18:05:05 +02:00
parent cbcead48f7
commit 78ce8f767a
8 changed files with 47 additions and 6 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# encoding: utf-8 # encoding: utf-8
from .calculus import Expression, Integer, Decimal, random_list, render, Polynomial from .calculus import Expression, Integer, Decimal, random_list, render, Polynomial, Fraction
# Expression.set_render('tex') # Expression.set_render('tex')

View File

@ -123,11 +123,11 @@ x^7
- 2x^2 + 7x - 6 - 2x^2 + 7x - 6
""" """
from .renders import render
from .expression import Expression from .expression import Expression
from .tokens import Token from .tokens import Token
from .tokens.polynomial import Polynomial from .tokens.polynomial import Polynomial
from .tokens.number import Integer, Decimal, Fraction from .tokens.number import Integer, Decimal, Fraction
from .renders import render
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -29,6 +29,10 @@ class Render(object):
else: else:
raise ValueError("This render name already exists") raise ValueError("This render name already exists")
@property
def render_name(self):
return self._render
@property @property
def render(self): def render(self):
return self.renders[self._render] return self.renders[self._render]

View File

@ -141,7 +141,7 @@ class Decimal(Token):
class Fraction(Token): class Fraction(Token):
""" Token representing a fraction """ Token representing a fraction of numbers
:example: :example:
>>> Fraction("3/4") >>> Fraction("3/4")

View File

@ -54,9 +54,15 @@ class Token(object):
yield self yield self
def __repr__(self): def __repr__(self):
try:
return f"<{self.__class__.__name__} {render(self._mo._tree, 'txt')}>"
except AttributeError:
return f"<{self.__class__.__name__} {render(self._mo, 'txt')}>" return f"<{self.__class__.__name__} {render(self._mo, 'txt')}>"
def __str__(self): def __str__(self):
try:
return render(self._mo._tree)
except AttributeError:
return render(self._mo) return render(self._mo)
@property @property

View File

@ -30,7 +30,7 @@ Expression is the classe wich handle all calculus. It can randomly generate or i
""" """
from .API import Expression, Integer, Decimal, render, Polynomial from .API import Expression, Integer, Decimal, render, Polynomial, Fraction
from .core import random_list from .core import random_list
from decimal import getcontext from decimal import getcontext
#getcontext().prec = 2 #getcontext().prec = 2

0
test/__init__.py Normal file
View File

View File

@ -0,0 +1,31 @@
import mapytex
def test_default_render():
assert mapytex.render.render_name == "txt"
def test_default_rending():
e = mapytex.Expression("2*3")
assert str(e) == "2*3"
def test_changing_render():
assert mapytex.render.render_name == "txt"
mapytex.render.set_render("tex")
assert mapytex.render.render_name == "tex"
mapytex.render.set_render("txt")
assert mapytex.render.render_name == "txt"
def test_changing_rending():
e = mapytex.Expression.from_str("2*3")
f = mapytex.Fraction("2/3")
assert str(e) == "2 * 3"
assert str(f) == "2 / 3"
mapytex.render.set_render("tex")
assert str(e) == "2 \\times 3"
assert str(f) == "\\dfrac{2}{3}"
mapytex.render.set_render("txt")
assert str(e) == "2 * 3"
assert str(f) == "2 / 3"