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:
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')
790: language = string.replace(language,'-','_')
791: cmd = 't='+language+'_tangler(sink,self.current_weaver)'
792: exec cmd
793: return t
794: