Code coverage report for 6to5/lib/6to5/generation/whitespace.js

Statements: 100% (40 / 40)      Branches: 100% (10 / 10)      Functions: 100% (4 / 4)      Lines: 100% (40 / 40)      Ignored: none     

All files » 6to5/lib/6to5/generation/ » whitespace.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 691   1   1 12210 12210     1 230430 230430 230430 230430   230430 133902534     133902534 230430 230430 230430       230430     1 230430 230430 230430 230430   230430 136268023     136268023 230430 230430 230430       230430 12090   218340       1 448770 448770   448770   448770 550136 332151 332151       448770    
module.exports = Whitespace;
 
var _ = require("lodash");
 
function Whitespace(tokens, comments) {
  this.tokens = _.sortBy(tokens.concat(comments), "start");
  this.used   = [];
}
 
Whitespace.prototype.getNewlinesBefore = function (node) {
  var startToken;
  var endToken;
  var tokens = this.tokens;
  var token;
 
  for (var i = 0; i < tokens.length; i++) {
    token = tokens[i];
 
    // this is the token this node starts with
    if (node.start === token.start) {
      startToken = tokens[i - 1];
      endToken = token;
      break;
    }
  }
 
  return this.getNewlinesBetween(startToken, endToken);
};
 
Whitespace.prototype.getNewlinesAfter = function (node) {
  var startToken;
  var endToken;
  var tokens = this.tokens;
  var token;
 
  for (var i = 0; i < tokens.length; i++) {
    token = tokens[i];
 
    // this is the token this node ends with
    if (node.end === token.end) {
      startToken = token;
      endToken = tokens[i + 1];
      break;
    }
  }
 
  if (endToken.type.type === "eof") {
    return 1;
  } else {
    return this.getNewlinesBetween(startToken, endToken);
  }
};
 
Whitespace.prototype.getNewlinesBetween = function (startToken, endToken) {
  var start = startToken ? startToken.loc.end.line : 1;
  var end   = endToken.loc.start.line;
 
  var lines = 0;
 
  for (var line = start; line < end; line++) {
    if (!_.contains(this.used, line)) {
      this.used.push(line);
      lines++;
    }
  }
 
  return lines;
};