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.
2301 2302 2303 2304 2305 2306 |
# File 'lib/syntax_tree/node.rb', line 2301 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
2296 2297 2298 |
# File 'lib/syntax_tree/node.rb', line 2296 def block_close @block_close end |
#block_open ⇒ Object (readonly)
- LBrace | Keyword
-
the node that opens the block
2293 2294 2295 |
# File 'lib/syntax_tree/node.rb', line 2293 def block_open @block_open end |
#node ⇒ Object (readonly)
- BraceBlock | DoBlock
-
the block node to be formatted
2290 2291 2292 |
# File 'lib/syntax_tree/node.rb', line 2290 def node @node end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the statements inside the block
2299 2300 2301 |
# File 'lib/syntax_tree/node.rb', line 2299 def statements @statements end |
Instance Method Details
#format(q) ⇒ Object
2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 |
# File 'lib/syntax_tree/node.rb', line 2308 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. receiver = q.parent.call if receiver.is_a?(Command) || receiver.is_a?(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 do format_flat(q, flat_opening, flat_closing) end end end |