Just in time processing on a character stream: Difference between revisions
Content added Content deleted
Line 503: | Line 503: | ||
Silence-Dogood. |
Silence-Dogood. |
||
</pre> |
</pre> |
||
=={{header|Python}}== |
|||
{{trans|D}} |
|||
<lang python>import sys |
|||
class UserInput: |
|||
def __init__(self,chunk): |
|||
self.formFeed = int(chunk[0]) |
|||
self.lineFeed = int(chunk[1]) |
|||
self.tab = int(chunk[2]) |
|||
self.space = int(chunk[3]) |
|||
def __str__(self): |
|||
return "(ff=%d; lf=%d; tb=%d; sp%d)" % (self.formFeed,self.lineFeed,self.tab,self.space) |
|||
def chunks(l,n): |
|||
for i in xrange(0, len(l), n): |
|||
yield l[i:i+n] |
|||
def getUserInput(): |
|||
h = "0 18 0 0 0 68 0 1 0 100 0 32 0 114 0 45 0 38 0 26 0 16 0 21 0 17 0 59 0 11 "\ |
|||
"0 29 0 102 0 0 0 10 0 50 0 39 0 42 0 33 0 50 0 46 0 54 0 76 0 47 0 84 2 28" |
|||
ha = h.split() |
|||
return [UserInput(chunk) for chunk in chunks(ha, 4)] |
|||
def decode(filename,uiList): |
|||
f = open(filename, "r") |
|||
text = f.read() |
|||
def decode2(ui): |
|||
f = 0 |
|||
l = 0 |
|||
t = 0 |
|||
s = 0 |
|||
for c in text: |
|||
if f == ui.formFeed and l == ui.lineFeed and t == ui.tab and s == ui.space: |
|||
if c == '!': |
|||
return False |
|||
sys.stdout.write(c) |
|||
return True |
|||
if c == '\u000c': |
|||
f=f+1 |
|||
l=0 |
|||
t=0 |
|||
s=0 |
|||
elif c == '\n': |
|||
l=l+1 |
|||
t=0 |
|||
s=0 |
|||
elif c == '\t': |
|||
t=t+1 |
|||
s=0 |
|||
else: |
|||
s=s+1 |
|||
return False |
|||
for ui in uiList: |
|||
if not decode2(ui): |
|||
break |
|||
print |
|||
##### Main ##### |
|||
uiList = getUserInput() |
|||
decode("theRaven.txt", uiList)</lang> |
|||
{{out}} |
|||
<pre>Silence-Dogood.</pre> |
|||
=={{header|REXX}}== |
=={{header|REXX}}== |