mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
Use CONVENTIONAL_CASE for non-class CONSTANTS
This commit is contained in:
parent
3d4360a0c8
commit
84ef434c60
1 changed files with 13 additions and 20 deletions
|
@ -13,13 +13,13 @@ class Pry
|
||||||
attr_reader :stack
|
attr_reader :stack
|
||||||
|
|
||||||
# The amount of spaces to insert for each indent level.
|
# The amount of spaces to insert for each indent level.
|
||||||
Spaces = ' '
|
SPACES = ' '
|
||||||
|
|
||||||
# Hash containing all the tokens that should increase the indentation
|
# Hash containing all the tokens that should increase the indentation
|
||||||
# level. The keys of this hash are open tokens, the values the matching
|
# level. The keys of this hash are open tokens, the values the matching
|
||||||
# tokens that should prevent a line from being indented if they appear on
|
# tokens that should prevent a line from being indented if they appear on
|
||||||
# the same line.
|
# the same line.
|
||||||
OpenTokens = {
|
OPEN_TOKENS = {
|
||||||
'def' => 'end',
|
'def' => 'end',
|
||||||
'class' => 'end',
|
'class' => 'end',
|
||||||
'module' => 'end',
|
'module' => 'end',
|
||||||
|
@ -32,22 +32,19 @@ class Pry
|
||||||
'(' => ')'
|
'(' => ')'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Collection of tokens that decrease the indentation level.
|
|
||||||
ClosingTokens = ['end', ']', '}']
|
|
||||||
|
|
||||||
# Collection of token types that should be ignored. Without this list
|
# Collection of token types that should be ignored. Without this list
|
||||||
# keywords such as "class" inside strings would cause the code to be
|
# keywords such as "class" inside strings would cause the code to be
|
||||||
# indented incorrectly.
|
# indented incorrectly.
|
||||||
IgnoreTokens = [:space, :content, :string, :delimiter, :method, :ident]
|
IGNORE_TOKENS = [:space, :content, :string, :delimiter, :method, :ident]
|
||||||
|
|
||||||
# Tokens that indicate the end of a statement (i.e. that, if they appear
|
# Tokens that indicate the end of a statement (i.e. that, if they appear
|
||||||
# directly before an "if" indicates that that if applies to the same line,
|
# directly before an "if" indicates that that if applies to the same line,
|
||||||
# not the next line)
|
# not the next line)
|
||||||
EndOfStatementTokens = IgnoreTokens + [:regexp, :integer, :float]
|
STATEMENT_END_TOKENS = IGNORE_TOKENS + [:regexp, :integer, :float]
|
||||||
|
|
||||||
# Collection of tokens that should only increase the indentation level of
|
# Collection of tokens that should only increase the indentation level of
|
||||||
# the next line.
|
# the next line.
|
||||||
OpenTokensNext = ['else', 'elsif']
|
OPEN_TOKENS_NEXT = ['else', 'elsif']
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
reset
|
reset
|
||||||
|
@ -88,18 +85,17 @@ class Pry
|
||||||
#
|
#
|
||||||
def indent(input)
|
def indent(input)
|
||||||
output = ''
|
output = ''
|
||||||
open_tokens = OpenTokens.keys
|
open_tokens = OPEN_TOKENS.keys
|
||||||
prefix = indent_level
|
prefix = indent_level
|
||||||
|
|
||||||
input.lines.each do |line|
|
input.lines.each do |line|
|
||||||
|
|
||||||
tokens = CodeRay.scan(line, :ruby)
|
tokens = CodeRay.scan(line, :ruby)
|
||||||
|
|
||||||
before, after = indentation_delta(tokens)
|
before, after = indentation_delta(tokens)
|
||||||
|
|
||||||
prefix.sub!(Spaces * before, '')
|
before.times{ prefix.sub! SPACES, '' }
|
||||||
output += prefix + line.strip + "\n"
|
output += prefix + line.strip + "\n"
|
||||||
prefix += Spaces * after
|
prefix += SPACES * after
|
||||||
end
|
end
|
||||||
|
|
||||||
@stack = [prefix]
|
@stack = [prefix]
|
||||||
|
@ -121,9 +117,6 @@ class Pry
|
||||||
# @return [Array[Integer]]
|
# @return [Array[Integer]]
|
||||||
#
|
#
|
||||||
def indentation_delta(tokens)
|
def indentation_delta(tokens)
|
||||||
closing = OpenTokens[open_token]
|
|
||||||
open = OpenTokens.keys
|
|
||||||
|
|
||||||
@useful_stack ||= []
|
@useful_stack ||= []
|
||||||
seen_for = false
|
seen_for = false
|
||||||
last_token, last_kind = [nil, nil]
|
last_token, last_kind = [nil, nil]
|
||||||
|
@ -138,16 +131,16 @@ class Pry
|
||||||
is_singleline_if = (token == "if" || token == "while") && end_of_statement?(last_token, last_kind)
|
is_singleline_if = (token == "if" || token == "while") && end_of_statement?(last_token, last_kind)
|
||||||
last_token, last_kind = token, kind unless kind == :space
|
last_token, last_kind = token, kind unless kind == :space
|
||||||
|
|
||||||
next if IgnoreTokens.include?(kind)
|
next if IGNORE_TOKENS.include?(kind)
|
||||||
|
|
||||||
# handle the optional "do" on for statements.
|
# handle the optional "do" on for statements.
|
||||||
seen_for ||= token == "for"
|
seen_for ||= token == "for"
|
||||||
|
|
||||||
if OpenTokens.keys.include?(token) && (token != "do" || !seen_for) && !is_singleline_if
|
if OPEN_TOKENS.keys.include?(token) && (token != "do" || !seen_for) && !is_singleline_if
|
||||||
@useful_stack << token
|
@useful_stack << token
|
||||||
depth += 1
|
depth += 1
|
||||||
after += 1
|
after += 1
|
||||||
elsif token == OpenTokens[@useful_stack.last]
|
elsif token == OPEN_TOKENS[@useful_stack.last]
|
||||||
@useful_stack.pop
|
@useful_stack.pop
|
||||||
depth -= 1
|
depth -= 1
|
||||||
if depth < 0
|
if depth < 0
|
||||||
|
@ -155,7 +148,7 @@ class Pry
|
||||||
else
|
else
|
||||||
after -= 1
|
after -= 1
|
||||||
end
|
end
|
||||||
elsif OpenTokensNext.include?(token)
|
elsif OPEN_TOKENS_NEXT.include?(token)
|
||||||
if depth <= 0
|
if depth <= 0
|
||||||
before += 1
|
before += 1
|
||||||
after += 1
|
after += 1
|
||||||
|
@ -169,7 +162,7 @@ class Pry
|
||||||
# If the code just before an "if" or "while" token on a line looks like the end of a statement,
|
# If the code just before an "if" or "while" token on a line looks like the end of a statement,
|
||||||
# then we want to treat that "if" as a singleline, not multiline statement.
|
# then we want to treat that "if" as a singleline, not multiline statement.
|
||||||
def end_of_statement?(last_token, last_kind)
|
def end_of_statement?(last_token, last_kind)
|
||||||
(last_token =~ /^[)\]}\/]$/ || EndOfStatementTokens.include?(last_kind))
|
(last_token =~ /^[)\]}\/]$/ || STATEMENT_END_TOKENS.include?(last_kind))
|
||||||
end
|
end
|
||||||
|
|
||||||
# Fix the indentation for closing tags (notably 'end'). Note that this
|
# Fix the indentation for closing tags (notably 'end'). Note that this
|
||||||
|
|
Loading…
Reference in a new issue