| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | var splitRE = /\r?\n/gvar emptyRE = /^\s*$/var needFixRE = /^(\r?\n)*[\t\s]/module.exports = function deindent (str) {  if (!needFixRE.test(str)) {    return str  }  var lines = str.split(splitRE)  var min = Infinity  var type, cur, c  for (var i = 0; i < lines.length; i++) {    var line = lines[i]    if (!emptyRE.test(line)) {      if (!type) {        c = line.charAt(0)        if (c === ' ' || c === '\t') {          type = c          cur = count(line, type)          if (cur < min) {            min = cur          }        } else {          return str        }      } else {        cur = count(line, type)        if (cur < min) {          min = cur        }      }    }  }  return lines.map(function (line) {    return line.slice(min)  }).join('\n')}function count (line, type) {  var i = 0  while (line.charAt(i) === type) {    i++  }  return i}
 |