75 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| # encoding: utf-8
 | |
| 
 | |
| 
 | |
| from .operator import Operator
 | |
| from ..generic import flatten_list
 | |
| 
 | |
| class Sub(Operator):
 | |
| 
 | |
|     """ The operator -
 | |
| 
 | |
|     >>> sub = Sub()
 | |
|     >>> sub
 | |
|     -
 | |
|     >>> sub(1, 2)
 | |
|     -1
 | |
|     >>> sub.__tex__('1','2')
 | |
|     '1 - 2'
 | |
|     >>> sub.__tex__('1','-2')
 | |
|     '1 - ( -2 )'
 | |
|     >>> sub.__tex__('-1','2')
 | |
|     '-1 - 2'
 | |
|     >>> sub.__txt__('1','2')
 | |
|     '1 - 2'
 | |
|     >>> sub.__txt__('1','-2')
 | |
|     '1 - ( -2 )'
 | |
|     >>> sub.__txt__('-1','2')
 | |
|     '-1 - 2'
 | |
|     """
 | |
|     _CARACT = {
 | |
|         "operator" : "-", \
 | |
|         "name" : "sub",\
 | |
|         "priority" : 2, \
 | |
|         "arity" : 2, \
 | |
|         "actions" : ("__sub__","__rsub__"), \
 | |
|         "txt" :  "{op1} - {op2}",\
 | |
|         "tex" :  "{op1} - {op2}",\
 | |
|         }
 | |
| 
 | |
|     def __init__(self):
 | |
|         """ Initiate Sub Operator """
 | |
|         super(Sub, self).__init__(**self._CARACT)
 | |
| 
 | |
|     def l_parenthesis(self, op, str_join=False):
 | |
|         return op
 | |
| 
 | |
|     def r_parenthesis(self, op, str_join=False):
 | |
|         try:
 | |
|             if op.mainOp.priority <= self.priority:
 | |
|                 op = flatten_list(["(", op, ")"])
 | |
|             elif op[0] == '-':
 | |
|                 op = flatten_list(["(", op, ")"])
 | |
|         except AttributeError:
 | |
|             # op has not the attribute priority
 | |
|             try:
 | |
|                 if int(op) < 0:
 | |
|                     op = ['(', op, ')']
 | |
|             except ValueError:
 | |
|                 pass
 | |
|         ans = flatten_list([op])
 | |
|         if str_join:
 | |
|             ans = ' '.join([str(i) for i in ans])
 | |
|         return ans
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| # -----------------------------
 | |
| # Reglages pour 'vim'
 | |
| # vim:set autoindent expandtab tabstop=4 shiftwidth=4:
 | |
| # cursor: 16 del
 |