#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2017 lafrite # # Distributed under terms of the MIT license. """ Tokens representing interger and decimal """ from .token import Token from ...core.MO import MOnumber, MOFraction from decimal import Decimal as _Decimal __all__ = ["Integer", "Decimal"] class Integer(Token): """ Token representing a integer """ def __init__(self, mo, name=""): if not isinstance(mo, MOnumber): raise TypeError if not isinstance(mo.value, int): raise TypeError Token.__init__(self, mo, name) self._mathtype = 'entier' @classmethod def random(cls): raise NotImplemented class Decimal(Token): """ Token representing a decimal """ def __init__(self, mo, name=""): if not isinstance(mo, MOnumber): raise TypeError if not isinstance(mo.value, _Decimal): raise TypeError Token.__init__(self, mo, name) self._mathtype = 'décimal' @classmethod def random(cls): raise NotImplemented class Fraction(Token): """ Token representing a fraction """ def __init__(self, mo, name=""): if not isinstance(mo, MOFraction): raise TypeError if not isinstance(mo._numerator, MOnumber): raise TypeError if not isinstance(mo._denominator, MOnumber): raise TypeError Token.__init__(self, mo, name) self._mathtype = 'fraction' @classmethod def random(cls): raise NotImplemented @property def numerator(self): return self._mo.numerator @property def denominator(self): return self._mo.denominator # ----------------------------- # Reglages pour 'vim' # vim:set autoindent expandtab tabstop=4 shiftwidth=4: # cursor: 16 del