diff options
Diffstat (limited to 'node_modules/de-indent')
| -rw-r--r-- | node_modules/de-indent/.npmignore | 2 | ||||
| -rw-r--r-- | node_modules/de-indent/index.js | 45 | ||||
| -rw-r--r-- | node_modules/de-indent/package.json | 25 | ||||
| -rw-r--r-- | node_modules/de-indent/test.js | 30 |
4 files changed, 102 insertions, 0 deletions
diff --git a/node_modules/de-indent/.npmignore b/node_modules/de-indent/.npmignore new file mode 100644 index 00000000..fd4f2b06 --- /dev/null +++ b/node_modules/de-indent/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store diff --git a/node_modules/de-indent/index.js b/node_modules/de-indent/index.js new file mode 100644 index 00000000..87123e8f --- /dev/null +++ b/node_modules/de-indent/index.js @@ -0,0 +1,45 @@ +var splitRE = /\r?\n/g +var 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 +} diff --git a/node_modules/de-indent/package.json b/node_modules/de-indent/package.json new file mode 100644 index 00000000..4c97e522 --- /dev/null +++ b/node_modules/de-indent/package.json @@ -0,0 +1,25 @@ +{ + "name": "de-indent", + "version": "1.0.2", + "description": "remove extra indent from a block of code", + "main": "index.js", + "scripts": { + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/de-indent.git" + }, + "keywords": [ + "deindent" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/yyx990803/de-indent/issues" + }, + "homepage": "https://github.com/yyx990803/de-indent#readme", + "devDependencies": { + "mocha": "^2.3.4" + } +} diff --git a/node_modules/de-indent/test.js b/node_modules/de-indent/test.js new file mode 100644 index 00000000..68b6036c --- /dev/null +++ b/node_modules/de-indent/test.js @@ -0,0 +1,30 @@ +var assert = require('assert') +var deindent = require('./index') + +describe('de-indent', function () { + + it('0 indent', function () { + var str = '\nabc\n bcd\n cde\nefg' + var res = deindent(str) + assert.equal(str, res) + }) + + it('non-0 indent', function () { + var str = ' abc\n bcd\n cde\n efg' + var res = deindent(str) + assert.equal(res, 'abc\n bcd\ncde\n efg') + }) + + it('tabs', function () { + var str = '\tabc\n\t\tbcd\n\tcde\n\t\tefg' + var res = deindent(str) + assert.equal(res, 'abc\n\tbcd\ncde\n\tefg') + }) + + it('single line', function () { + var str = '\n <h2 class="red">{{msg}}</h2>\n' + var res = deindent(str) + assert.equal(res, '\n<h2 class="red">{{msg}}</h2>\n') + }) + +}) |
