streader v1.0.1
Basic Overview
Streader is a String Reader which simplifies the way we read through strings.
Library can be used both in Node.js and directly in Browser. It is well-documented and completely covered with test specs (excluding webpack bundling definitions and expressions).
If you want to add some features or to suggest any idea, feel free ? contributions are always welcome.
How to Install
Using NPM
To use Streader with NPM simply call:
npm install --save streader
In Browser
To use Streader directly in browser simply download this repository and copy dist/streader.js into your project. Next, include it on your .html page:
<script src="path/to/your/js/streader.js"></script>
Get Started
You are able to use Streader as the importable npm package or directly in browser.
In Node.js
import Streader from "streader";
var reader = new Streader("example");
while( !reader.eof() ) {
var char = reader.read();
// Do something with each char
}
In Browser
<script>
var reader = new Streader("example");
while( !reader.eof() ) {
var char = reader.read();
// Do something with each char
}
</script>
API
read(count)
Reads the next characters. Count - optional count of characters to read
var reader = new Streader("Example");
var chars = reader.read(7); // chars => "Example"
peek(count, offset)
Reads the next character without advancing the cursor. Count - optional count of characters to read; Offset - optional offset to start read at
var reader = new Streader("Example");
var chars = reader.peek(3, 2); // chars => "amp"
skip(count)
Skips the next characters. Count - optional count of characters to read.
var reader = new Streader("Example");
var skipped = reader.skip(3); // skipped => 3
readPattern(pattern)
Reads characters that match either string or regexp pattern.
var reader = new Streader("Pattern Example");
var chars = reader.readPattern("Pattern"); // chars => "Pattern"
var index = reader.getIndex(); // index => 7
var chars = reader.readPattern(/\s+/); // chars => " "
var index = reader.getIndex(); // index => 8
peekPattern(pattern, offset)
Reads characters that match either string or regexp pattern without advancing the cursor.
var reader = new Streader("Pattern Example");
var chars = reader.peekPattern("Ex", 8); // chars => "Ex"
var index = reader.getIndex(); // index => 0
var chars = reader.peekPattern(/\w+/); // chars => "Pattern"
var index = reader.getIndex(); // index => 0
skipPattern(pattern)
Skips characters that match either string or regexp.
var reader = new Streader("Pattern Example");
var skipped = reader.skipPattern("Pattern"); // skipped => 7
var skipped = reader.skipPattern(/\s|\n/); // skipped => 1
eof()
Checks if we're at the end of the source
var reader = new Streader("example");
reader.read(100); // Read all characters
var isEof = reader.eof(); // isEof => true
reset()
Resets current cursor position
var reader = new Streader("example");
reader.read(5); // Read 5 characters for example
reader.reset();
var index = reader.getIndex(); // index => 0
getSource()
Gets the current reader's source string.
var reader = new Streader("example");
var source = reader.getSource(); // source => "example"
getIndex()
Gets the current index of the cursor.
var reader = new Streader("example");
reader.read(5); // shift cursor for example
var index = reader.getIndex(); // index => 5
setSource(text)
Loads the new text source to StringReader. Method resets current cursor data. Useful for deferred read.
var reader = new Streader("old");
reader.read(2); // shift cursor for example
reader.setSource("new");
var source = reader.getSource(); // source => "new"
var index = reader.getIndex(); // index => 0
Contributing to Streader
Contributions are always welcome. Before contributing please read the code of conduct & search the issue tracker (your issue may have already been discussed or fixed).
To contribute, follow next steps:
- Fork Streader
- Commit your changes
- Open a Pull Request.
Feature Requests
Feature requests should be submitted in the issue tracker, with a description of the expected behavior & use case, where they?ll remain closed until sufficient interest (e.g. ? reactions). Before submitting a feature request, please search for similar ones in the closed issues.
License
Released under the MIT License