module DeepCover::Reporter::Istanbul::Converters

Public Instance Methods

convert_block(node) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
:a, :b, :c

> {'1': :a, '2': :b, '3': :c}

# 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) click to toggle source
# 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

Private Instance Methods

_convert_function(node, name, decl) click to toggle source
# File lib/deep_cover/reporter/istanbul.rb, line 60
def _convert_function(node, name, decl)
  loc = node.body ? node.body.expression : decl.end
  {
    name: name,
    line: node.expression.line,
    decl: convert_range(decl),
    loc:  convert_range(loc),
  }
end