Module: Transpec::Syntax::Mixin::BlockOwner

Extended by:
ActiveSupport::Concern
Included in:
Examplish, Pending
Defined in:
lib/transpec/syntax/mixin/block_owner.rb

Instance Method Summary collapse

Instance Method Details

#block_base_indentationObject



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_lineObject



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_lineObject



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_nodeObject



42
43
44
# File 'lib/transpec/syntax/mixin/block_owner.rb', line 42

def block_body_node
  block_node.children[2]
end

#block_body_rangeObject



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_lineObject



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

Returns:

  • (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_bodyObject



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_endObject



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