6.3.3.1. Memory Driver

6.3.3.1. Memory Driver

The memory driver is both a source and sink and can is used as a simple form of macro. By tangling sections of code into memory, a sction can be built which is later emitted in a single block. In this sense the tangler driving the memory device is defining a macro, and its later inclusion in te source stream can be considered expanding the macro.
Start python section to interscript/drivers/storage/memory.py[1]
     1: #line 14 "storage_drivers.ipk"
     2: from interscript.drivers.sources.base import source
     3: from interscript.drivers.sources.base import eof
     4: from interscript.drivers.sinks.base import sink
     5: 
     6: class memory(source,sink):
     7:   def __init__(self,name,**kwds):
     8:     source.__init__(self)
     9:     self.name = name
    10:     self.saved = ''
    11:     self.list = []
    12:     for k in kwds.keys():
    13:       self.k = kwds[k]
    14: 
    15: 
    16:   def readline(self):
    17:     print 'reading memory object',self.name,'line',self.lines_read
    18:     if len(self.list)>self.lines_read:
    19:       line = self.list[self.lines_read]
    20:     else:
    21:       raise eof
    22:     if len(line) and line[-1]=='\n':
    23:       line = line[:-1]
    24:     self.lines_read = self.lines_read + 1
    25:     return line
    26: 
    27:   def writeline(self,line=''):
    28:     self.list.append(self.saved+line)
    29:     self.saved = ''
    30: 
    31:   def rewind(self):
    32:     self.lines_read = 0
    33: 
    34:   def write(self,data):
    35:     self.saved = self.saved + data
    36: 
End python section to interscript/drivers/storage/memory.py[1]