diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:50:21 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:50:21 +0800 |
| commit | 0379526e20e1ff212df23e6326741aa9c06df204 (patch) | |
| tree | 340143b0c4dc4280c88ba1591d137b53477005b3 /node_modules/split2/index.js | |
| parent | 7aba14fb7c970c6e6af82c805db2aef6d70bfe2b (diff) | |
added doiuse plugin for postcss
Diffstat (limited to 'node_modules/split2/index.js')
| -rw-r--r-- | node_modules/split2/index.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/node_modules/split2/index.js b/node_modules/split2/index.js new file mode 100644 index 00000000..b9682e04 --- /dev/null +++ b/node_modules/split2/index.js @@ -0,0 +1,83 @@ +/* +Copyright (c) 2014, Matteo Collina <hello@matteocollina.com> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +'use strict'; + +var through = require('through2') + +function transform(chunk, enc, cb) { + var list = chunk.toString('utf8').split(this.matcher) + , remaining = list.pop() + , i + + if (list.length >= 1) { + push(this, this.mapper((this._last + list.shift()))) + } else { + remaining = this._last + remaining + } + + for (i = 0; i < list.length; i++) { + push(this, this.mapper(list[i])) + } + + this._last = remaining + + cb() +} + +function flush(cb) { + if (this._last) + push(this, this.mapper(this._last)) + + cb() +} + +function push(self, val) { + if (val !== undefined) + self.push(val) +} + +function noop(incoming) { + return incoming +} + +function split(matcher, mapper, options) { + + if (typeof matcher === 'object' && !(matcher instanceof RegExp)) { + options = matcher + matcher = null + } + + if (typeof matcher === 'function') { + mapper = matcher + matcher = null + } + + options = options || {} + + var stream = through(options, transform, flush) + + // this stream is in objectMode only in the readable part + stream._readableState.objectMode = true; + + stream._last = '' + stream.matcher = matcher || /\r?\n/ + stream.mapper = mapper || noop + + return stream +} + +module.exports = split |
