56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
#! /usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# vim:fenc=utf-8
|
|
#
|
|
# Copyright © 2017 lafrite <lafrite@Poivre>
|
|
#
|
|
# Distributed under terms of the MIT license.
|
|
|
|
"""
|
|
Computing with MO
|
|
"""
|
|
|
|
from .exceptions import ComputeError
|
|
from .add import add
|
|
from .minus import minus
|
|
from .multiply import multiply
|
|
from .divide import divide
|
|
|
|
OPERATIONS = {
|
|
"+": add,
|
|
"-": minus,
|
|
"*": multiply,
|
|
"/": divide,
|
|
}
|
|
|
|
def compute(node, left_v, right_v):
|
|
"""
|
|
Computing a node
|
|
|
|
:example:
|
|
|
|
>>> from ..MO.mo import MOnumber
|
|
>>> compute("+", MOnumber(1), MOnumber(2))
|
|
<MOnumber 3>
|
|
>>> compute("-", None, MOnumber(2))
|
|
<MOnumber - 2>
|
|
>>> compute("*", MOnumber(1), MOnumber(2))
|
|
<MOnumber 2>
|
|
>>> compute("~", MOnumber(1), MOnumber(2))
|
|
Traceback (most recent call last):
|
|
...
|
|
mapytex.calculus.core.compute.exceptions.ComputeError: Unknown operation (~)
|
|
"""
|
|
try:
|
|
operation = OPERATIONS[node]
|
|
except KeyError:
|
|
raise ComputeError(f"Unknown operation ({node})")
|
|
|
|
return operation(left_v, right_v)
|
|
|
|
|
|
# -----------------------------
|
|
# Reglages pour 'vim'
|
|
# vim:set autoindent expandtab tabstop=4 shiftwidth=4:
|
|
# cursor: 16 del
|