Mapytex/mapytex/calculus/core/compute/__init__.py

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