61 lines
1.4 KiB
Python
61 lines
1.4 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from .operator import Operator, save_mainOp
|
|
|
|
class Div(Operator):
|
|
r""" The operator /
|
|
|
|
>>> div = Div()
|
|
>>> div
|
|
/
|
|
>>> div(1, 2)
|
|
< Fraction 1 / 2>
|
|
>>> div.__tex__('1','2')
|
|
'\\frac{ 1 }{ 2 }'
|
|
>>> div.__tex__('-1','2')
|
|
'\\frac{ -1 }{ 2 }'
|
|
>>> div.__tex__('1','-2')
|
|
'\\frac{ 1 }{ -2 }'
|
|
>>> div.__txt__('1','2')
|
|
'1 / 2'
|
|
>>> div.__txt__('-1','2')
|
|
'-1 / 2'
|
|
>>> div.__txt__('1','-2')
|
|
'1 / ( -2 )'
|
|
"""
|
|
|
|
_CARACT = {
|
|
"operator" : "/", \
|
|
"name" : "div",\
|
|
"priority" : 5, \
|
|
"arity" : 2, \
|
|
"txt" : "{op1} / {op2}",\
|
|
"tex" : "\\frac{{ {op1} }}{{ {op2} }}",\
|
|
}
|
|
|
|
def __init__(self):
|
|
""" Initiate Div Operator """
|
|
super(Div, self).__init__(**self._CARACT)
|
|
|
|
def __call__(self, op1, op2):
|
|
if op2 == 1:
|
|
return op1
|
|
else:
|
|
from ..fraction import Fraction
|
|
return Fraction(op1,op2)
|
|
|
|
def __tex__(self, *args):
|
|
# Pas besoin de parenthèses en plus pour \frac
|
|
replacement = {"op"+str(i+1): op for (i,op) in enumerate(args)}
|
|
|
|
ans = self.tex.format(**replacement)
|
|
ans = save_mainOp(ans, self)
|
|
return ans
|
|
|
|
|
|
# -----------------------------
|
|
# Reglages pour 'vim'
|
|
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
|
# cursor: 16 del
|