summaryrefslogtreecommitdiff
path: root/sqlparse
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2017-11-24 11:52:36 +0100
committerGitHub <noreply@github.com>2017-11-24 11:52:36 +0100
commit4e44545cb759a7b321d85009e7258385fae71740 (patch)
treee9f1b99e47b2379975bac895b95d26d7e90b6112 /sqlparse
parentec1c5b189bdc6f1673eeebe3b12958ca5d527fa3 (diff)
parent8f5003bc8d06fc5b3167eb2a1bd24cc1fb399fa4 (diff)
downloadsqlparse-4e44545cb759a7b321d85009e7258385fae71740.tar.gz
Merge pull request #345 from johshoff/master
Option to indent after first line
Diffstat (limited to 'sqlparse')
-rwxr-xr-xsqlparse/cli.py7
-rw-r--r--sqlparse/filters/reindent.py4
-rw-r--r--sqlparse/formatter.py6
3 files changed, 15 insertions, 2 deletions
diff --git a/sqlparse/cli.py b/sqlparse/cli.py
index f73f5d4..f7a3728 100755
--- a/sqlparse/cli.py
+++ b/sqlparse/cli.py
@@ -102,6 +102,13 @@ def create_parser():
help='indentation width (defaults to 2 spaces)')
group.add_argument(
+ '--indent_after_first',
+ dest='indent_after_first',
+ action='store_true',
+ default=False,
+ help='indent after first line of statement (e.g. SELECT)')
+
+ group.add_argument(
'-a', '--reindent_aligned',
action='store_true',
default=False,
diff --git a/sqlparse/filters/reindent.py b/sqlparse/filters/reindent.py
index f077849..792133f 100644
--- a/sqlparse/filters/reindent.py
+++ b/sqlparse/filters/reindent.py
@@ -12,11 +12,11 @@ from sqlparse.utils import offset, indent
class ReindentFilter(object):
def __init__(self, width=2, char=' ', wrap_after=0, n='\n',
- comma_first=False):
+ comma_first=False, indent_after_first=False):
self.n = n
self.width = width
self.char = char
- self.indent = 0
+ self.indent = 1 if indent_after_first else 0
self.offset = 0
self.wrap_after = wrap_after
self.comma_first = comma_first
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']))