From 5a4f7d7f75c22d57a2cb8ffefce423832893a13f Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sat, 23 Jul 2016 06:17:22 +0300 Subject: [PATCH] Output tokens to an output stream instead of printing Convert a list of tokens tokens to a string. --- mysql2sql/print_tokens.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/mysql2sql/print_tokens.py b/mysql2sql/print_tokens.py index 05af1c1..bfcaad9 100644 --- a/mysql2sql/print_tokens.py +++ b/mysql2sql/print_tokens.py @@ -1,20 +1,35 @@ import sys +try: + from cStringIO import StringIO +except ImportError: + try: + from StringIO import StringIO + except ImportError: + from io import StringIO from sqlparse.sql import TokenList -def print_subtree(token_list, ident=0): +def print_subtree(token_list, outfile=sys.stdout, ident=0): for token in token_list: - print " "*ident, repr(token) + outfile.write(" "*ident) + outfile.write(repr(token)) + outfile.write("\n") if isinstance(token, TokenList): - print_subtree(token, ident+4) + print_subtree(token, outfile, ident+4) -def print_tokens(token_list, level=0): +def print_tokens(token_list, outfile=sys.stdout, level=0): for token in token_list: if not isinstance(token, TokenList): - sys.stdout.write(token.normalized) + outfile.write(token.normalized) if isinstance(token, TokenList): - print_tokens(token, level+1) + print_tokens(token, outfile, level+1) if level == 0: - print ';' + outfile.write(';\n') + + +def get_tokens_str(token_list): + sio = StringIO() + print_tokens(token_list, outfile=sio) + return sio.getvalue() -- 2.39.5