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.
1904 1905 1906 1907 1908 1909 |
# File 'lib/syntax_tree/node.rb', line 1904 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
1899 1900 1901 |
# File 'lib/syntax_tree/node.rb', line 1899 def block_close @block_close end |
#block_open ⇒ Object (readonly)
- LBrace | Keyword
-
the node that opens the block
1896 1897 1898 |
# File 'lib/syntax_tree/node.rb', line 1896 def block_open @block_open end |
#node ⇒ Object (readonly)
- BraceBlock | DoBlock
-
the block node to be formatted
1893 1894 1895 |
# File 'lib/syntax_tree/node.rb', line 1893 def node @node end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the statements inside the block
1902 1903 1904 |
# File 'lib/syntax_tree/node.rb', line 1902 def statements @statements end |
Instance Method Details
#format(q) ⇒ Object
1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 |
# File 'lib/syntax_tree/node.rb', line 1911 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 |