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.
1934 1935 1936 1937 1938 1939 |
# File 'lib/syntax_tree/node.rb', line 1934 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
1929 1930 1931 |
# File 'lib/syntax_tree/node.rb', line 1929 def block_close @block_close end |
#block_open ⇒ Object (readonly)
- LBrace | Keyword
-
the node that opens the block
1926 1927 1928 |
# File 'lib/syntax_tree/node.rb', line 1926 def block_open @block_open end |
#node ⇒ Object (readonly)
- BraceBlock | DoBlock
-
the block node to be formatted
1923 1924 1925 |
# File 'lib/syntax_tree/node.rb', line 1923 def node @node end |
#statements ⇒ Object (readonly)
- BodyStmt | Statements
-
the statements inside the block
1932 1933 1934 |
# File 'lib/syntax_tree/node.rb', line 1932 def statements @statements end |
Instance Method Details
#format(q) ⇒ Object
1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 |
# File 'lib/syntax_tree/node.rb', line 1941 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 { format_flat(q, flat_opening, flat_closing) } end end |