roguemap-parse-stream

0.1.4 • Public • Published

roguemap-parse-stream

This module is for parsing text maps in which each character represents something at a coordinate indicated by which text column and row it is in. For example:

........ttt.......
..hthtttt.....h...
...htt.t....t.h...
....tt.h....tbtt..
..b.tt...tb...t...
..h..t....h..tt...
hh.b.th.tt...tb.h.
.ttb...tt....tt.h.
.ttb........h.t...
..thb.t.....ttt...
....b..tthttt...t.
.......bttt.......

The module creates a through stream that reads the map via a stream of text chunks and writes out "cell objects", each of which contains a key and a zero-indexed coordinate, like so:

{
  key: 'b',
  coords: [4, 10]
}

Installation

npm install roguemap-parse-stream

Usage

Load the parser stream factory from the module.

var parserStreamFactory = require('roguemap-parse-stream');

Create a stream to read the map from a text file.

var fs = require('fs');
var fileStream = fs.createReadStream('map.txt');  

Create a new parser stream to parse the text from that stream.

var parserStream = parserStreamFactory();

Set up a writable stream to respond to parserStream's data events by do using the cell objects to create 'entities'.

var Writable = require('stream').Writable;
var yourStream = Writable({objectMode: true});
yourStream._write = function doSomethingWithMapACell(cell, enc, next) {
  var entity = createEntityForKey(cell.key);
  entity.location = cell.coords;
};

Plug the file stream into the parser stream and plug the parser stream into your stream.

fileStream.pipe(parserStream);
parserStream.pipe(yourStream);

Now an entity will be created for each character in the map.

Check out an example.

Tests

Run tests with npm test.

License

MIT.

Readme

Keywords

Package Sidebar

Install

npm i roguemap-parse-stream

Weekly Downloads

1

Version

0.1.4

License

ISC

Last publish

Collaborators

  • jimkang