(fileName, _encoding)
| 7332 | } |
| 7333 | } |
| 7334 | function readFileWorker(fileName, _encoding) { |
| 7335 | var buffer; |
| 7336 | try { |
| 7337 | buffer = _fs.readFileSync(fileName); |
| 7338 | } |
| 7339 | catch (e) { |
| 7340 | return undefined; |
| 7341 | } |
| 7342 | var len = buffer.length; |
| 7343 | if (len >= 2 && buffer[0] === 0xFE && buffer[1] === 0xFF) { |
| 7344 | // Big endian UTF-16 byte order mark detected. Since big endian is not supported by node.js, |
| 7345 | // flip all byte pairs and treat as little endian. |
| 7346 | len &= ~1; // Round down to a multiple of 2 |
| 7347 | for (var i = 0; i < len; i += 2) { |
| 7348 | var temp = buffer[i]; |
| 7349 | buffer[i] = buffer[i + 1]; |
| 7350 | buffer[i + 1] = temp; |
| 7351 | } |
| 7352 | return buffer.toString("utf16le", 2); |
| 7353 | } |
| 7354 | if (len >= 2 && buffer[0] === 0xFF && buffer[1] === 0xFE) { |
| 7355 | // Little endian UTF-16 byte order mark detected |
| 7356 | return buffer.toString("utf16le", 2); |
| 7357 | } |
| 7358 | if (len >= 3 && buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) { |
| 7359 | // UTF-8 byte order mark detected |
| 7360 | return buffer.toString("utf8", 3); |
| 7361 | } |
| 7362 | // Default is UTF-8 with no byte order mark |
| 7363 | return buffer.toString("utf8"); |
| 7364 | } |
| 7365 | function readFile(fileName, _encoding) { |
| 7366 | ts.perfLogger.logStartReadFile(fileName); |
| 7367 | var file = readFileWorker(fileName, _encoding); |
no test coverage detected