textlint-util-to-string
Convert Paragraph
Node to plain text with SourceMap.
SourceMap mean that could revert position
in plain text to position
in Node.
This library is for textlint and textstat.
Installation
npm install textlint-util-to-string
Terminology
The concepts position
and index
are the same as those explained in Constellation/structured-source.
Note: the column
property of position
as it is 0-based index.
Usage
Constructor(rootNode): source
Return instance of Source.
originalIndexFromIndex(generatedIndex): number
Get original index from generated index value
originalPositionFromPosition(position): Position
Get original position from generated position
originalIndexFromPosition(generatedPosition): number
Get original index from generated position
originalPositionFromIndex(generatedIndex): Position
Get original position from generated index
import assert from "power-assert"
import {parse} from "markdown-to-ast";
import StringSource from "textlint-util-to-string";
let originalText = "This is [Example!?](http://example.com/)";
let AST = parse(originalText);
let source = new StringSource(AST);
let result = source.toString();
assert.equal(result, "This is Example!?");
let index1 = result.indexOf("Example");
assert.equal(index1, 8);
assert.equal(source.originalIndexFromIndex(index1), 9);
assert.deepEqual(source.originalPositionFromPosition({
line: 1,
column: 8
}), {
line: 1,
column: 9
);
let index2 = result.indexOf("!?");
assert.equal(index2, 15);
assert.equal(source.originalIndexFromIndex(index2), 16);
FAQ
Why return relative position from rootNode?
let AST = ....
let rootNode = AST.children[10];
let source = new StringSource(rootNode);
source.originalIndexFor(0);
To return relative position easy to compute position(We think).
One space has a single absolute position, The other should be relative position.
Tests
npm test
Contributing
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
License
MIT