nixfilter
Version:
Simplify the development of (UNIX) "Filters"
59 lines (50 loc) • 1.37 kB
text/coffeescript
'use strict'
bytes_reader = ->
(callback) ->
callback
byte_reader = ->
(callback) ->
bytes_reader() (input_bytes) ->
for input_byte in input_bytes
callback(input_byte)
return
# Import the "StringDecoder" class from the "string_decoder" module
StringDecoder = require('string_decoder').StringDecoder
characters_reader = (encoding) ->
encoding = (encoding or 'utf8')
(callback) ->
string_decoder = new StringDecoder(encoding)
(input_bytes) ->
input_characters = string_decoder.write(input_bytes)
if (input_characters.length > 0)
callback(input_characters)
return
character_reader = (encoding) ->
(callback) ->
characters_reader(encoding) (input_characters) ->
for input_character in input_characters
callback(input_character)
return
line_reader = (encoding) ->
(callback) ->
line_buffer = []
character_reader(encoding) (input_character) ->
if (input_character is '\n')
callback(line_buffer.join(''))
line_buffer = []
else
line_buffer.push(input_character)
return
json_line_reader = (encoding) ->
(callback) ->
line_reader(encoding) (input_line) ->
callback(JSON.parse(input_line))
return
# 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