* Adds some simple specs too.
+var Chunker = require('../utils/chunker');
+
module.exports = function Tokenizer(data, minifyContext) {
var chunker = new Chunker(data, 128);
var chunk = chunker.next();
}
};
};
-
-// Divides `data` into chunks of `chunkSize` for faster processing
-var Chunker = function(data, chunkSize) {
- var chunks = [];
- for (var cursor = 0, dataSize = data.length; cursor < dataSize;) {
- var nextCursor = cursor + chunkSize > dataSize ?
- dataSize - 1 :
- cursor + chunkSize;
-
- if (data[nextCursor] != '}')
- nextCursor = data.indexOf('}', nextCursor);
- if (nextCursor == -1)
- nextCursor = data.length - 1;
-
- chunks.push(data.substring(cursor, nextCursor + 1));
- cursor = nextCursor + 1;
- }
-
- return {
- isEmpty: function() {
- return chunks.length === 0;
- },
-
- next: function() {
- return chunks.shift() || '';
- }
- };
-};
--- /dev/null
+module.exports = function Chunker(data, chunkSize) {
+// Divides `data` into chunks of `chunkSize` for faster processing
+ var chunks = [];
+ for (var cursor = 0, dataSize = data.length; cursor < dataSize;) {
+ var nextCursor = cursor + chunkSize > dataSize ?
+ dataSize - 1 :
+ cursor + chunkSize;
+
+ if (data[nextCursor] != '}')
+ nextCursor = data.indexOf('}', nextCursor);
+ if (nextCursor == -1)
+ nextCursor = data.length - 1;
+
+ chunks.push(data.substring(cursor, nextCursor + 1));
+ cursor = nextCursor + 1;
+ }
+
+ return {
+ isEmpty: function() {
+ return chunks.length === 0;
+ },
+
+ next: function() {
+ return chunks.shift();
+ }
+ };
+};
--- /dev/null
+var vows = require('vows');
+var assert = require('assert');
+var Chunker = require('../../lib/utils/chunker');
+
+vows.describe(Chunker)
+ .addBatch({
+ 'empty string': {
+ topic: new Chunker('', 128),
+ 'is empty': function (chunker) {
+ assert.isTrue(chunker.isEmpty());
+ },
+ 'has no next': function (chunker) {
+ assert.isUndefined(chunker.next());
+ }
+ },
+ 'css': {
+ topic: new Chunker('a{color:red}p{}', 3),
+ 'is not empty': function (chunker) {
+ assert.isFalse(chunker.isEmpty());
+ },
+ 'breaks at first brace': function (chunker) {
+ assert.equal('a{color:red}', chunker.next());
+ },
+ 'breaks at second brace': function (chunker) {
+ assert.equal('p{}', chunker.next());
+ }
+ }
+ })
+ .export(module);