Explain now explain thing only once
This commit is contained in:
parent
b4df404cbd
commit
190b247fe4
@ -19,11 +19,13 @@ class Explicable(Renderable):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(Explicable, self).__init__()
|
super(Explicable, self).__init__()
|
||||||
self.steps = []
|
self.steps = []
|
||||||
|
self.explainator = 0
|
||||||
|
|
||||||
def explain(self, noself=True):
|
def explain(self):
|
||||||
r""" Generate and render steps which leed to itself
|
r""" Generate and render steps which leed to itself
|
||||||
|
|
||||||
:param noself: does explain return self
|
After beening explained, the Explicable become amnesiac.
|
||||||
|
See 'history_generator' to explain it once again.
|
||||||
|
|
||||||
>>> action = Explicable()
|
>>> action = Explicable()
|
||||||
>>> from .expression import Expression
|
>>> from .expression import Expression
|
||||||
@ -34,10 +36,38 @@ class Explicable(Renderable):
|
|||||||
2 + 10 \times 4
|
2 + 10 \times 4
|
||||||
2 + 40
|
2 + 40
|
||||||
42
|
42
|
||||||
|
>>> # Now action is amnesiac
|
||||||
|
>>> for i in action.explain():
|
||||||
|
... print(i)
|
||||||
|
|
||||||
|
"""
|
||||||
|
if not self.explainator:
|
||||||
|
self.explainator = self.history_generator()
|
||||||
|
|
||||||
|
return self.explainator
|
||||||
|
|
||||||
|
def history_generator(self):
|
||||||
|
r""" Generator for rendered steps which leed to itself
|
||||||
|
|
||||||
|
This is the called method in explain which create the generator.
|
||||||
|
It create a new generator at each call.
|
||||||
|
|
||||||
|
>>> action = Explicable()
|
||||||
|
>>> from .expression import Expression
|
||||||
|
>>> action.postfix_tokens = Expression('42')
|
||||||
|
>>> action.this_append_before([Expression('2+10*4'), Expression('2+40')])
|
||||||
|
>>> for i in action.history_generator():
|
||||||
|
... print(i)
|
||||||
|
2 + 10 \times 4
|
||||||
|
2 + 40
|
||||||
|
42
|
||||||
|
>>> for i in action.history_generator():
|
||||||
|
... print(i)
|
||||||
|
2 + 10 \times 4
|
||||||
|
2 + 40
|
||||||
|
42
|
||||||
"""
|
"""
|
||||||
old_s = ''
|
old_s = ''
|
||||||
# les étapes pour l'atteindre
|
|
||||||
try:
|
try:
|
||||||
for s in self.steps:
|
for s in self.steps:
|
||||||
try:
|
try:
|
||||||
@ -52,11 +82,10 @@ class Explicable(Renderable):
|
|||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if noself:
|
# if noself:
|
||||||
# Lui même
|
new_s = self.STR_RENDER(self.postfix_tokens)
|
||||||
new_s = self.STR_RENDER(self.postfix_tokens)
|
if not self.is_same_step(new_s, old_s):
|
||||||
if not self.is_same_step(new_s, old_s):
|
yield new_s
|
||||||
yield new_s
|
|
||||||
|
|
||||||
def is_same_step(self, new, old):
|
def is_same_step(self, new, old):
|
||||||
"""Return whether the new step is the same than old step
|
"""Return whether the new step is the same than old step
|
||||||
|
Loading…
Reference in New Issue
Block a user