def main(): if len(sys.argv) < 2: usage_exit() if sys.argv[1] == '-': reader = sys.stdin writer = StringIO.StringIO() Converter(RoughLexer(reader), writer).convert(False) argv = sys.argv[2:] os.execlp('python', 'python', '-c', writer.getvalue(), *argv) elif sys.argv[1] == '-c': if len(sys.argv) < 3: usage_exit() reader = StringIO.StringIO(sys.argv[2]) writer = StringIO.StringIO() Converter(RoughLexer(reader), writer).convert(False) argv = sys.argv[3:] os.execlp('python', 'python', '-c', writer.getvalue(), *argv) else: script = sys.argv[1] name, ext = os.path.splitext(script) if ext == ".py": print >> sys.stderr, 'An input file shoundn\'t be *.py.' sys.exit(1) py = name + '.py' reader = file(script, 'r') writer = file(py, 'w') Converter(RoughLexer(reader), writer).convert(True) writer.close() argv = sys.argv[2:] os.execlp('python', 'python', py, *argv)
def read_and_rewrite(path): try: content = file(path, 'r').read() lexer = RoughLexer(StringIO(content)) io = StringIO() converter = Converter(lexer, io, run_funcname='zsh.run') converter.convert(False) return io.getvalue() except: return None
def scan_and_convert(): lexer = ZshRoughLexer() tokens = [] for token in lexer: indent = token[0] if not indent and token[1] == 'python' and is_python_expr(token[2]): token = (token[0], token[1], 'print ' + token[2]) tokens.append(token) if not indent and zsh.native.cvar.curindentwidth == 0: break io = StringIO() converter = Converter(tokens, io, run_funcname='zsh.run') converter.convert(False) return io.getvalue()
def testExtractResponseNames_InAssignCmd(self): converter = Converter(None, None) names = converter.extractResponseNames( '(echo foo -> bar && echo baz => qux) -> piyo') self.assertEquals(['bar', 'qux', 'piyo'], names)
def testExtractResponseNames_InBinaryOp(self): converter = Converter(None, None) names = converter.extractResponseNames('echo foo -> bar && echo baz => qux') self.assertEquals(['bar', 'qux'], names)
def testExtractResponseNames_Redirection(self): converter = Converter(None, None) names = converter.extractResponseNames('echo foo => bar') self.assertEquals(['bar'], names)