#! /usr/bin/env python # -*- coding: utf-8 -*- # vim:fenc=utf-8 # # Copyright © 2017 lafrite # # Distributed under terms of the MIT license. """ Expression """ from ..core import Tree, compute, tree2txt, tree2tex class Expression(object): """ Expression class :example: >>> e = Expression.from_str("2+3*4") >>> e2 = e.simplify() >>> print(e2) 14 >>> e2.explain() '2 + 3 * 4' '2 + 12' '15' """ RENDER = tree2txt def __init__(self, tree): """ """ self._tree = tree @classmethod def from_str(cls, string): """ Initiate the expression from a string :param string: TODO :returns: TODO """ t = Tree.from_str(string) return cls(t) @classmethod def random(self, template, conditions = [], shuffle = False): """ Initiate randomly the expression :param template: the template of the expression :param conditions: conditions on randomly generate variable :param shuffle: allowing to shuffle the tree :returns: TODO """ pass @classmethod def set_render(cls, render): """ Define default render function :param render: render function Tree -> str :example: >>> e = Expression.from_str("2+3*4") >>> print(e) 2 + 3 * 4 >>> Expression.set_render(tree2tex) >>> print(e) 2 + 3 \\times 4 """ cls.RENDER = render def __str__(self): return self.__class__.RENDER(self._tree) def __repr__(self): return f"" # ----------------------------- # Reglages pour 'vim' # vim:set autoindent expandtab tabstop=4 shiftwidth=4: # cursor: 16 del