Vitaly Puzrin
10 years ago
7 changed files with 47 additions and 26 deletions
@ -0,0 +1,41 @@ |
|||
// Normalize input string
|
|||
|
|||
'use strict'; |
|||
|
|||
|
|||
var TABS_SCAN_RE = /[\n\t]/g; |
|||
var NEWLINES_RE = /\r[\n\u0085]|[\u2424\u2028\u0085]/g; |
|||
var NULL_RE = /\u0000/g; |
|||
|
|||
|
|||
module.exports = function inline(state) { |
|||
var str, lineStart, lastTabPos; |
|||
|
|||
if (!state.normalizeInput) { return; } |
|||
|
|||
// Normalize newlines
|
|||
str = state.src.replace(NEWLINES_RE, '\n'); |
|||
|
|||
// Strin NULL characters
|
|||
str = str.replace(NULL_RE, '\uFFFD'); |
|||
|
|||
// Replace tabs with proper number of spaces (1..4)
|
|||
if (str.indexOf('\t') >= 0) { |
|||
lineStart = 0; |
|||
lastTabPos = 0; |
|||
|
|||
str = str.replace(TABS_SCAN_RE, function (match, offset) { |
|||
var result; |
|||
if (str.charCodeAt(offset) === 0x0A) { |
|||
lineStart = offset + 1; |
|||
lastTabPos = 0; |
|||
return match; |
|||
} |
|||
result = ' '.slice((offset - lineStart - lastTabPos) % 4); |
|||
lastTabPos = offset - lineStart + 1; |
|||
return result; |
|||
}); |
|||
} |
|||
|
|||
state.src = str; |
|||
}; |
Loading…
Reference in new issue