def tangler(self, device, language=deduce, *args, **kwds): "Create a tangle object from a dvice specification (either a filename or sink object" if has_protocol(device, 'filename'): filename = self.master.tangler_directory + str(device) sink = named_file_sink(self.pass_frame, filename, self.master.tangler_prefix) elif has_protocol(device, 'sink'): sink = device else: raise TypeError('tangler device argument must be string or sink') if language is None: language = 'data' if language is deduce: try: splitup = sink.name.split('.') if len(splitup) > 1: extension = splitup[-1] #language = extension_table [extension] language = extension else: language = 'data' except KeyError: language = 'data' except IndexError: language = 'data' language = language.lower() language = language.replace('++', 'pp') # C++ hack language = language.replace('-', '_') # obj-C etc try: import imp import interscript.tanglers try: file, pathname, description = imp.find_module( language, interscript.tanglers.__path__) except: #print "imp.find_module failed for '"+language+'"' raise exceptions.UserWarning("Can't load tangler") try: tmod = imp.load_module(language, file, pathname, description) except: print("imp.load_module failed for '" + pathname + "'") raise exceptions.UserWarning("Can't load tangler") try: class_name = language + "_tangler" tglr = getattr(tmod, class_name) except: print("tangler class '" + class_name + "' not found in module ") raise exceptions.UserWarning("Can't load tangler") t = tglr(sink, self.current_weaver, self.inhibit_sref) except: print('Unable to load', language, 'tangler for "' + device + '": using data') t = data_tangler(sink, self.current_weaver) return t
def tangler(self,device, language=deduce, *args, **kwds): "Create a tangle object from a dvice specification (either a filename or sink object" if has_protocol(device, 'filename'): filename = self.master.tangler_directory+str(device) sink = named_file_sink( self.pass_frame, filename, self.master.tangler_prefix) elif has_protocol(device, 'sink'): sink = device else: raise TypeError('tangler device argument must be string or sink') if language is None: language = 'data' if language is deduce: try: splitup = sink.name.split('.') if len(splitup)>1: extension = splitup[-1] #language = extension_table [extension] language = extension else: language = 'data' except KeyError: language = 'data' except IndexError: language = 'data' language = language.lower() language = language.replace('++','pp') # C++ hack language = language.replace('-','_') # obj-C etc try: import imp import interscript.tanglers try: file,pathname,description = imp.find_module(language,interscript.tanglers.__path__) except: #print "imp.find_module failed for '"+language+'"' raise exceptions.UserWarning("Can't load tangler") try: tmod = imp.load_module(language,file,pathname,description) except: print("imp.load_module failed for '"+pathname+"'") raise exceptions.UserWarning("Can't load tangler") try: class_name = language + "_tangler" tglr = getattr(tmod,class_name) except: print("tangler class '"+class_name+"' not found in module ") raise exceptions.UserWarning("Can't load tangler") t = tglr(sink,self.current_weaver,self.inhibit_sref) except: print('Unable to load',language,'tangler for "'+device+'": using data') t=data_tangler(sink,self.current_weaver) return t
def interscript_output(self,f): filename = self.master.tangler_directory+f sink = named_file_sink(self.pass_frame,filename,self.master.tangler_prefix) return self.tangler(sink,'data')
def interscript_output(self, f): filename = self.master.tangler_directory + f sink = named_file_sink(self.pass_frame, filename, self.master.tangler_prefix) return self.tangler(sink, 'data')