Module: DeepCover::Reporter::Istanbul::Converters

Included in:
CoveredCodeConverter
Defined in:
lib/deep_cover/reporter/istanbul.rb

Instance Method Summary collapse

Instance Method Details

#convert_block(node) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/deep_cover/reporter/istanbul.rb', line 32

def convert_block(node)
  decl = node.loc_hash[:begin]
  if (args = node.args.expression)
    decl = decl.join(args)
  end
  _convert_function(node, '(block)', decl)
end

#convert_branch(node, branches = node.branches) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/deep_cover/reporter/istanbul.rb', line 48

def convert_branch(node, branches = node.branches)
  # Currently, nyc seems to outputs the same location over and over...
  {
    loc: convert_range(node.expression),
    type: node.type,
    line: node.expression.line,
    locations: branches.map { |n| convert_range(n.expression || node.expression) },
  }
end

#convert_def(node) ⇒ Object



26
27
28
29
30
# File 'lib/deep_cover/reporter/istanbul.rb', line 26

def convert_def(node)
  ends_at = node.signature.loc_hash[:end] || node.loc_hash[:name]
  decl = node.loc_hash[:keyword].with(end_pos: ends_at.end_pos)
  _convert_function(node, node.method_name, decl)
end

#convert_function(node) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/deep_cover/reporter/istanbul.rb', line 40

def convert_function(node)
  if node.is_a?(Node::Block)
    convert_block(node)
  else
    convert_def(node)
  end
end

#convert_list(list) ⇒ Object

:a, :b, :c

> :a, ‘2’: :b, ‘3’: :c



22
23
24
# File 'lib/deep_cover/reporter/istanbul.rb', line 22

def convert_list(list)
  list.map.with_index { |val, i| [i.succ.to_s, val] }.to_h
end

#convert_range(range) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/deep_cover/reporter/istanbul.rb', line 9

def convert_range(range)
  {start: {
            line: range.line,
            column: range.column,
          },
   end: {
          line: range.last_line,
          column: range.last_column - 1, # Our ranges are exclusive, Istanbul's are inclusive
        },
  }
end