nixfilter
Version:
Simplify the development of (UNIX) "Filters"
86 lines (76 loc) • 2.17 kB
JavaScript
;
var StringDecoder, byte_reader, bytes_reader, character_reader, characters_reader, json_line_reader, line_reader;
bytes_reader = function() {
return function(callback) {
return callback;
};
};
byte_reader = function() {
return function(callback) {
return bytes_reader()(function(input_bytes) {
var i, input_byte, len;
for (i = 0, len = input_bytes.length; i < len; i++) {
input_byte = input_bytes[i];
callback(input_byte);
}
});
};
};
// Import the "StringDecoder" class from the "string_decoder" module
StringDecoder = require('string_decoder').StringDecoder;
characters_reader = function(encoding) {
encoding = encoding || 'utf8';
return function(callback) {
var string_decoder;
string_decoder = new StringDecoder(encoding);
return function(input_bytes) {
var input_characters;
input_characters = string_decoder.write(input_bytes);
if (input_characters.length > 0) {
callback(input_characters);
}
};
};
};
character_reader = function(encoding) {
return function(callback) {
return characters_reader(encoding)(function(input_characters) {
var i, input_character, len;
for (i = 0, len = input_characters.length; i < len; i++) {
input_character = input_characters[i];
callback(input_character);
}
});
};
};
line_reader = function(encoding) {
return function(callback) {
var line_buffer;
line_buffer = [];
return character_reader(encoding)(function(input_character) {
if (input_character === '\n') {
callback(line_buffer.join(''));
line_buffer = [];
} else {
line_buffer.push(input_character);
}
});
};
};
json_line_reader = function(encoding) {
return function(callback) {
return line_reader(encoding)(function(input_line) {
callback(JSON.parse(input_line));
});
};
};
// What this module exports
module.exports = {
byte: byte_reader,
bytes: bytes_reader,
character: character_reader,
characters: characters_reader,
json_line: json_line_reader,
line: line_reader
};
//# sourceMappingURL=reader.js.map