character-scanner v2.0.2
character-scanner
character-scanner.js
This is a scanner for scanning streams of characters (like you get from keyboard or "wedge" devices). It's built to be a common basis for wedge drivers, but could also be used directly.
Usage
Character scanner supports buildless execution in all supported environments.
require the library
import { CharacterScanner } from 'character-scanner';
// OR: import { CharacterScanner } from 'character-scanner/src/index.ts';
// OR: const { CharacterScanner } = require('character-scanner');the simplest way is to just use a function to determine what we're looking for:
const keyboardBuffer = new CharacterScanner();
keyboardBuffer.addScanner(function(bufferString){
//return truthy value whether bufferString is selected
});A more explicit way is to set it with options:
keyboardBuffer.addScanner({
name: 'email',
interval: 5000,
scan: function(bufferString){
//return truthy value whether bufferString is selected
},
callback: function(value){
//do stuff
}
});And if you do provide a name you can then subscribe directly to events on the object instead of, or in addition to, the callback:
keyboardBuffer.on('email', function(value){
//do stuff
})Then you just wire the input stream to the scanner, by piping in characters:
keyboardBuffer.input(chars);Testing
validate the typescript with
npm run tsvalidate the module with
node ./src/index.mjsvalidate the commonjs with
node ./src/index.cjsRun the es module tests to test the typescript files
npm run ts-testRun the es module tests to test the modules
npm run import-testto run the same test inside the browser:
npm run browser-testto run the same test headless in chrome:
npm run headless-browser-testto run the same test inside docker:
npm run container-testRun the commonjs tests against the /dist commonjs source (generated with the build-commonjs target).
npm run require-testDevelopment
All work is done in the .mjs files and will be transpiled on commit to commonjs and tested.
If the above tests pass, then attempt a commit which will generate .d.ts files alongside the src files and commonjs classes in dist