WIP - add extractor, generate snippet_data
This commit is contained in:
46
node_modules/detab/index.js
generated
vendored
Normal file
46
node_modules/detab/index.js
generated
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = detab
|
||||
|
||||
var repeat = require('repeat-string')
|
||||
|
||||
var tab = 0x09
|
||||
var lineFeed = 0x0a
|
||||
var carriageReturn = 0x0d
|
||||
|
||||
// Replace tabs with spaces, being smart about which column the tab is at and
|
||||
// which size should be used.
|
||||
function detab(value, size) {
|
||||
var string = typeof value === 'string'
|
||||
var length = string && value.length
|
||||
var start = 0
|
||||
var index = -1
|
||||
var column = -1
|
||||
var tabSize = size || 4
|
||||
var results = []
|
||||
var code
|
||||
var add
|
||||
|
||||
if (!string) {
|
||||
throw new Error('detab expected string')
|
||||
}
|
||||
|
||||
while (++index < length) {
|
||||
code = value.charCodeAt(index)
|
||||
|
||||
if (code === tab) {
|
||||
add = tabSize - ((column + 1) % tabSize)
|
||||
column += add
|
||||
results.push(value.slice(start, index) + repeat(' ', add))
|
||||
start = index + 1
|
||||
} else if (code === lineFeed || code === carriageReturn) {
|
||||
column = -1
|
||||
} else {
|
||||
column++
|
||||
}
|
||||
}
|
||||
|
||||
results.push(value.slice(start))
|
||||
|
||||
return results.join('')
|
||||
}
|
||||
Reference in New Issue
Block a user