6.13.10.2.20. Tangler Constructors

These are convenience functions that construct tanglers and associated sinks. The argument is a filename which is used to construct a sink to which the tangler is linked. The tanglers are linked to the current weaver.
Start python section to interscript/frames/inputf.py[30 /40 ] Next Prev Last
   754: #line 1060 "input_frame.ipk"
   755:   def data_output(self,f): return self.tangler(f,'data')
   756:   def c_output(self,f): return self.tangler(f,'c')
   757:   def cpp_output(self,f): return self.tangler(f,'cpp')
   758:   def python_output(self,f): return self.tangler(f,'python')
   759:   def perl_output(self,f): return self.tangler(f,'perl')
   760: 
   761:   # temporarily, we'll use a data tangler
   762:   def interscript_output(self,f):
   763:     filename = self.master.tangler_directory+f
   764:     sink = named_file_sink(self.pass_frame,filename,self.master.tangler_prefix)
   765:     return data_tangler(sink,self.get_weaver())
   766: 
   767:   def tangler(self,device, language=deduce):
   768:     if has_protocol(device, 'string'):
   769:       filename = self.master.tangler_directory+device
   770:       sink = named_file_sink(
   771:         self.pass_frame,
   772:         filename,
   773:         self.master.tangler_prefix)
   774:     elif has_protocol(device, 'sink'):
   775:       sink = device
   776:     else: raise TypeError,'tangler device argument must be string or sink'
   777: 
   778:     if language is None: language = 'data'
   779:     if language is deduce:
   780:       try:
   781:         splitup = string.split(sink.name,'.')
   782:         if len(splitup)>1:
   783:           extension = splitup[-1]
   784:           language = extension_table [extension]
   785:         else: language = 'data'
   786:       except KeyError: language = 'data'
   787:       except IndexError: language = 'data'
   788:     language = string.lower(language)
   789:     language = string.replace(language,'++','pp') # C++ hack
   790:     language = string.replace(language,'-','_') # obj-C etc
   791:     cmd = 't='+language+'_tangler(sink,self.current_weaver)'
   792:     exec cmd
   793:     return t
   794: 
End python section to interscript/frames/inputf.py[30]