Class: SyntaxTree::BlockFormatter
- Inherits:
-
Object
- Object
- SyntaxTree::BlockFormatter
- Defined in:
- lib/syntax_tree/node.rb
Overview
Responsible for formatting either a BraceBlock or a DoBlock.
Defined Under Namespace
Classes: BlockOpenFormatter
Instance Attribute Summary collapse
-
#block_close ⇒ Object
readonly
- String
-
the string that closes the block.
-
#block_open ⇒ Object
readonly
- LBrace | Keyword
-
the node that opens the block.
-
#node ⇒ Object
readonly
- BraceBlock | DoBlock
-
the block node to be formatted.
-
#statements ⇒ Object
readonly
- BodyStmt | Statements
-
the statements inside the block.
Instance Method Summary collapse
- #format(q) ⇒ Object
-
#initialize(node, block_open, block_close, statements) ⇒ BlockFormatter
constructor
A new instance of BlockFormatter.
Constructor Details
#initialize(node, block_open, block_close, statements) ⇒ BlockFormatter
Returns a new instance of BlockFormatter.
1996 1997 1998 1999 2000 2001 |
# File 'lib/syntax_tree/node.rb', line 1996 def initialize(node, block_open, block_close, statements) @node = node @block_open = block_open @block_close = block_close @statements = statements end |
Instance Attribute Details
#block_close ⇒ Object (readonly)
- String
-
the string that closes the block
1991 1992 1993 |
# File 'lib/syntax_tree/node.rb', line 1991 def block_close @block_close end |
#block_open ⇒ Object (readonly)
- LBrace | Keyword
-
the node that opens the block
1988 1989 1990 |
# File 'lib/syntax_tree/node.rb', line 1988 def block_open @block_open end |
#node ⇒ Object (readonly)
- BraceBlock | DoBlock
-
the block node to be formatted
1985 1986 1987 |
# File 'lib/syntax_tree/node.rb', line 1985 def node @node end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the statements inside the block
1994 1995 1996 |
# File 'lib/syntax_tree/node.rb', line 1994 def statements @statements end |
Instance Method Details
#format(q) ⇒ Object
2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 |
# File 'lib/syntax_tree/node.rb', line 2003 def format(q) # If this is nested anywhere inside of a Command or CommandCall node, then # we can't change which operators we're using for the bounds of the block. break_opening, break_closing, flat_opening, flat_closing = if unchangeable_bounds?(q) [block_open.value, block_close, block_open.value, block_close] elsif forced_do_end_bounds?(q) %w[do end do end] elsif forced_brace_bounds?(q) %w[{ } { }] else %w[do end { }] end # If the receiver of this block a Command or CommandCall node, then there # are no parentheses around the arguments to that command, so we need to # break the block. case q.parent.call when Command, CommandCall q.break_parent format_break(q, break_opening, break_closing) return end q.group do q .if_break { format_break(q, break_opening, break_closing) } .if_flat { format_flat(q, flat_opening, flat_closing) } end end |