Module: Transpec::Syntax::Mixin::BlockOwner
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/transpec/syntax/mixin/block_owner.rb
Instance Method Summary collapse
- #block_base_indentation ⇒ Object
- #block_beginning_line ⇒ Object
- #block_body_line ⇒ Object
- #block_body_node ⇒ Object
- #block_body_range ⇒ Object
- #block_end_line ⇒ Object
- #block_has_body? ⇒ Boolean
- #convert_singleline_block_to_multiline! ⇒ Object
- #range_between_block_begin_and_body ⇒ Object
- #range_between_block_body_and_end ⇒ Object
Instance Method Details
#block_base_indentation ⇒ Object
34 35 36 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 34 def block_base_indentation Util.indentation_of_line(block_node) end |
#block_beginning_line ⇒ Object
46 47 48 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 46 def block_beginning_line block_node.loc.begin.line end |
#block_body_line ⇒ Object
50 51 52 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 50 def block_body_line block_body_node.loc.expression.line end |
#block_body_node ⇒ Object
42 43 44 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 42 def block_body_node block_node.children[2] end |
#block_body_range ⇒ Object
66 67 68 69 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 66 def block_body_range block_body_node = block_node.children[2] block_body_node.loc.expression end |
#block_end_line ⇒ Object
54 55 56 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 54 def block_end_line block_node.loc.end.line end |
#block_has_body? ⇒ Boolean
38 39 40 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 38 def block_has_body? !block_body_node.nil? end |
#convert_singleline_block_to_multiline! ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 13 def convert_singleline_block_to_multiline! return unless block_has_body? # TODO has_inserted_linefeed = false if block_beginning_line == block_body_line replace(range_between_block_begin_and_body, "\n#{block_base_indentation} ") has_inserted_linefeed = true end if block_end_line == block_body_line replace(range_between_block_body_and_end, "\n#{block_base_indentation}") has_inserted_linefeed = true end if has_inserted_linefeed replace(block_node.loc.begin, 'do') replace(block_node.loc.end, 'end') end end |
#range_between_block_begin_and_body ⇒ Object
58 59 60 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 58 def range_between_block_begin_and_body block_node.loc.begin.end.join(block_body_node.loc.expression.begin) end |
#range_between_block_body_and_end ⇒ Object
62 63 64 |
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 62 def range_between_block_body_and_end block_body_node.loc.expression.end.join(block_node.loc.end.begin) end |