You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
'use strict' |
|
|
|
var assert = require('assert') |
|
var codes = require('../character/codes.js') |
|
var values = require('../character/values.js') |
|
var fromCharCode = require('../constant/from-char-code.js') |
|
|
|
function _interopDefaultLegacy(e) { |
|
return e && typeof e === 'object' && 'default' in e ? e : {default: e} |
|
} |
|
|
|
var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert) |
|
|
|
function serializeChunks(chunks) { |
|
var index = -1 |
|
var result = [] |
|
var chunk |
|
var value |
|
var atTab |
|
|
|
while (++index < chunks.length) { |
|
chunk = chunks[index] |
|
|
|
if (typeof chunk === 'string') { |
|
value = chunk |
|
} else if (chunk === codes.carriageReturn) { |
|
value = values.cr |
|
} else if (chunk === codes.lineFeed) { |
|
value = values.lf |
|
} else if (chunk === codes.carriageReturnLineFeed) { |
|
value = values.cr + values.lf |
|
} else if (chunk === codes.horizontalTab) { |
|
value = values.ht |
|
} else if (chunk === codes.virtualSpace) { |
|
if (atTab) continue |
|
value = values.space |
|
} else { |
|
assert__default['default'].equal( |
|
typeof chunk, |
|
'number', |
|
'expected number' |
|
) |
|
// Currently only replacement character. |
|
value = fromCharCode(chunk) |
|
} |
|
|
|
atTab = chunk === codes.horizontalTab |
|
result.push(value) |
|
} |
|
|
|
return result.join('') |
|
} |
|
|
|
module.exports = serializeChunks
|
|
|