Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.handle_word(current_token)
elif current_token.type == TOKEN.RESERVED:
self.handle_word(current_token)
elif current_token.type == TOKEN.SEMICOLON:
self.handle_semicolon(current_token)
elif current_token.type == TOKEN.STRING:
self.handle_string(current_token)
elif current_token.type == TOKEN.EQUALS:
self.handle_equals(current_token)
elif current_token.type == TOKEN.OPERATOR:
self.handle_operator(current_token)
elif current_token.type == TOKEN.COMMA:
self.handle_comma(current_token)
elif current_token.type == TOKEN.BLOCK_COMMENT:
self.handle_block_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.COMMENT:
self.handle_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.DOT:
self.handle_dot(current_token)
elif current_token.type == TOKEN.EOF:
self.handle_eof(current_token)
elif current_token.type == TOKEN.UNKNOWN:
self.handle_unknown(current_token, preserve_statement_flags)
else:
self.handle_unknown(current_token, preserve_statement_flags)
def handle_token(self, current_token, preserve_statement_flags=False):
if current_token.type == TOKEN.START_EXPR:
self.handle_start_expr(current_token)
elif current_token.type == TOKEN.END_EXPR:
self.handle_end_expr(current_token)
elif current_token.type == TOKEN.START_BLOCK:
self.handle_start_block(current_token)
elif current_token.type == TOKEN.END_BLOCK:
self.handle_end_block(current_token)
elif current_token.type == TOKEN.WORD:
self.handle_word(current_token)
elif current_token.type == TOKEN.RESERVED:
self.handle_word(current_token)
elif current_token.type == TOKEN.SEMICOLON:
self.handle_semicolon(current_token)
elif current_token.type == TOKEN.STRING:
self.handle_string(current_token)
elif current_token.type == TOKEN.EQUALS:
self.handle_equals(current_token)
elif current_token.type == TOKEN.OPERATOR:
self.handle_operator(current_token)
elif current_token.type == TOKEN.COMMA:
def __init__(self, mode):
self.mode = mode
self.parent = None
self.last_token = Token(TOKEN.START_BLOCK, '')
self.last_word = ''
self.declaration_statement = False
self.declaration_assignment = False
self.multiline_frame = False
self.inline_frame = False
self.if_block = False
self.else_block = False
self.do_block = False
self.do_while = False
self.import_block = False
self.in_case = False
self.in_case_statement = False
self.case_body = False
self.indentation_level = 0
self.alignment = 0
self.line_indent_level = 0
self.handle_word(current_token)
elif current_token.type == TOKEN.SEMICOLON:
self.handle_semicolon(current_token)
elif current_token.type == TOKEN.STRING:
self.handle_string(current_token)
elif current_token.type == TOKEN.EQUALS:
self.handle_equals(current_token)
elif current_token.type == TOKEN.OPERATOR:
self.handle_operator(current_token)
elif current_token.type == TOKEN.COMMA:
self.handle_comma(current_token)
elif current_token.type == TOKEN.BLOCK_COMMENT:
self.handle_block_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.COMMENT:
self.handle_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.DOT:
self.handle_dot(current_token)
elif current_token.type == TOKEN.EOF:
self.handle_eof(current_token)
elif current_token.type == TOKEN.UNKNOWN:
self.handle_unknown(current_token, preserve_statement_flags)
else:
self.handle_unknown(current_token, preserve_statement_flags)
# function() vs function (), typeof() vs typeof ()
# function*() vs function* (), yield*() vs yield* ()
if (
self._flags.last_token.type == TOKEN.RESERVED and (
self._flags.last_word == 'function' or self._flags.last_word == 'typeof')) or (
self._flags.last_token.text == '*' and (
self._last_last_text in [
'function', 'yield'] or (
self._flags.mode == MODE.ObjectLiteral and self._last_last_text in [
'{', ',']))):
self._output.space_before_token = self._options.space_after_anon_function
if self._flags.last_token.text == ';' or self._flags.last_token.type == TOKEN.START_BLOCK:
self.print_newline()
elif self._flags.last_token.type in [TOKEN.END_EXPR, TOKEN.START_EXPR, TOKEN.END_BLOCK, TOKEN.COMMA] or self._flags.last_token.text == '.':
# do nothing on (( and )( and ][ and ]( and .(
# TODO: Consider whether forcing this is required. Review failing
# tests when removed.
self.allow_wrap_or_preserved_newline(
current_token, current_token.newlines)
self.print_token(current_token)
self.set_mode(next_mode)
if self._options.space_in_paren:
self._output.space_before_token = True
# In all cases, if we newline while inside an expression it should be
# indented.
self.indent()
do_loop = (
check_token.type != TOKEN.EOF and not (
check_token.type == TOKEN.END_BLOCK and check_token.opened == current_token))
if (self._options.brace_style == 'expand' or (self._options.brace_style ==
'none' and current_token.newlines)) and not self._flags.inline_frame:
if self._flags.last_token.type != TOKEN.OPERATOR and (
empty_anonymous_function or self._flags.last_token.type == TOKEN.EQUALS or (
reserved_array(self._flags.last_token, _special_word_set) and self._flags.last_token.text != 'else')):
self._output.space_before_token = True
else:
self.print_newline(preserve_statement_flags=True)
else: # collapse || inline_frame
if self.is_array(
self._previous_flags.mode) and (
self._flags.last_token.type == TOKEN.START_EXPR or self._flags.last_token.type == TOKEN.COMMA):
# if we're preserving inline,
# allow newline between comma and next brace.
if self._flags.inline_frame:
self.allow_wrap_or_preserved_newline(current_token)
self._flags.inline_frame = True
self._previous_flags.multiline_frame = self._previous_flags.multiline_frame or self._flags.multiline_frame
self._flags.multiline_frame = False
elif self._flags.last_token.type == TOKEN.COMMA:
self._output.space_before_token = True
elif self._flags.last_token.type not in [TOKEN.OPERATOR, TOKEN.START_EXPR]:
if self._flags.last_token.type == TOKEN.START_BLOCK and not self._flags.inline_frame:
self.print_newline()
else:
self._output.space_before_token = True
self.print_newline(preserve_statement_flags=True)
else: # collapse || inline_frame
if self.is_array(
self._previous_flags.mode) and (
self._flags.last_token.type == TOKEN.START_EXPR or self._flags.last_token.type == TOKEN.COMMA):
# if we're preserving inline,
# allow newline between comma and next brace.
if self._flags.inline_frame:
self.allow_wrap_or_preserved_newline(current_token)
self._flags.inline_frame = True
self._previous_flags.multiline_frame = self._previous_flags.multiline_frame or self._flags.multiline_frame
self._flags.multiline_frame = False
elif self._flags.last_token.type == TOKEN.COMMA:
self._output.space_before_token = True
elif self._flags.last_token.type not in [TOKEN.OPERATOR, TOKEN.START_EXPR]:
if self._flags.last_token.type == TOKEN.START_BLOCK and not self._flags.inline_frame:
self.print_newline()
else:
self._output.space_before_token = True
self.print_token(current_token)
self.indent()
# Except for specific cases, open braces are followed by a new line.
if not empty_braces and not (
self._options.brace_preserve_inline and
self._flags.inline_frame):
self.print_newline()
elif self._flags.last_token.type == TOKEN.OPERATOR or self._flags.last_token.text == '=':
# foo = function
self._output.space_before_token = True
elif not self._flags.multiline_frame and (self.is_expression(self._flags.mode) or self.is_array(self._flags.mode)):
# (function
pass
else:
self.print_newline()
self.print_token(current_token)
self._flags.last_word = current_token.text
return
prefix = 'NONE'
if self._flags.last_token.type == TOKEN.END_BLOCK:
if self._previous_flags.inline_frame:
prefix = 'SPACE'
elif not reserved_array(current_token, ['else', 'catch', 'finally', 'from']):
prefix = 'NEWLINE'
else:
if self._options.brace_style in ['expand', 'end-expand'] or (
self._options.brace_style == 'none' and current_token.newlines):
prefix = 'NEWLINE'
else:
prefix = 'SPACE'
self._output.space_before_token = True
elif self._flags.last_token.type == TOKEN.SEMICOLON and self._flags.mode == MODE.BlockStatement:
# TODO: Should this be for STATEMENT as well?
prefix = 'NEWLINE'
elif self._flags.last_token.type == TOKEN.SEMICOLON and self.is_expression(self._flags.mode):
prefix = 'SPACE'
self.handle_semicolon(current_token)
elif current_token.type == TOKEN.STRING:
self.handle_string(current_token)
elif current_token.type == TOKEN.EQUALS:
self.handle_equals(current_token)
elif current_token.type == TOKEN.OPERATOR:
self.handle_operator(current_token)
elif current_token.type == TOKEN.COMMA:
self.handle_comma(current_token)
elif current_token.type == TOKEN.BLOCK_COMMENT:
self.handle_block_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.COMMENT:
self.handle_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.DOT:
self.handle_dot(current_token)
elif current_token.type == TOKEN.EOF:
self.handle_eof(current_token)
elif current_token.type == TOKEN.UNKNOWN:
self.handle_unknown(current_token, preserve_statement_flags)
else:
self.handle_unknown(current_token, preserve_statement_flags)
def handle_token(self, current_token, preserve_statement_flags=False):
if current_token.type == TOKEN.START_EXPR:
self.handle_start_expr(current_token)
elif current_token.type == TOKEN.END_EXPR:
self.handle_end_expr(current_token)
elif current_token.type == TOKEN.START_BLOCK:
self.handle_start_block(current_token)
elif current_token.type == TOKEN.END_BLOCK:
self.handle_end_block(current_token)
elif current_token.type == TOKEN.WORD:
self.handle_word(current_token)
elif current_token.type == TOKEN.RESERVED:
self.handle_word(current_token)
elif current_token.type == TOKEN.SEMICOLON:
self.handle_semicolon(current_token)
elif current_token.type == TOKEN.STRING:
self.handle_string(current_token)
elif current_token.type == TOKEN.EQUALS:
self.handle_equals(current_token)
elif current_token.type == TOKEN.OPERATOR:
self.handle_operator(current_token)
elif current_token.type == TOKEN.COMMA:
self.handle_comma(current_token)
elif current_token.type == TOKEN.BLOCK_COMMENT:
self.handle_block_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.COMMENT:
self.handle_comment(current_token, preserve_statement_flags)
elif current_token.type == TOKEN.DOT:
self.handle_dot(current_token)
elif current_token.type == TOKEN.EOF:
self.handle_eof(current_token)
elif current_token.type == TOKEN.UNKNOWN: