From 7cdefe9aa751fa54831cc1e64fbf4b16acc6c90e Mon Sep 17 00:00:00 2001 From: Johannes Hoff Date: Tue, 20 Jun 2017 20:18:15 -0700 Subject: Option to indent after first line This adds a command line argument `--indent_after_first` which sets the indentation of all lines after the first one, e.g. SELECT, UPDATE, etc. For example: $ sqlparse/__main__.py -r sample.sql UPDATE foo SET a = 1 WHERE a > 2 AND a < 10; $ sqlparse/__main__.py -r --indent_after_first sample.sql UPDATE foo SET a = 1 WHERE a > 2 AND a < 10; --- sqlparse/formatter.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'sqlparse/formatter.py') diff --git a/sqlparse/formatter.py b/sqlparse/formatter.py index a58d5af..b36fe56 100644 --- a/sqlparse/formatter.py +++ b/sqlparse/formatter.py @@ -70,6 +70,11 @@ def validate_options(options): elif reindent_aligned: options['strip_whitespace'] = True + indent_after_first = options.get('indent_after_first', False) + if indent_after_first not in [True, False]: + raise SQLParseError('Invalid value for indent_after_first: ' + '{0!r}'.format(indent_after_first)) + indent_tabs = options.get('indent_tabs', False) if indent_tabs not in [True, False]: raise SQLParseError('Invalid value for indent_tabs: ' @@ -153,6 +158,7 @@ def build_filter_stack(stack, options): stack.stmtprocess.append( filters.ReindentFilter(char=options['indent_char'], width=options['indent_width'], + indent_after_first=options['indent_after_first'], wrap_after=options['wrap_after'], comma_first=options['comma_first'])) -- cgit v1.2.1