retext directionality detection.
npm:
npm install retext-directionality
retext-directionality is also available for bower, component, and duo, and as an AMD, CommonJS, and globals module, uncompressed and compressed.
var retext = require('retext');
var inspect = require('unist-util-inspect');
var direction = require('retext-directionality');
retext().use(direction).use(function () {
return function (cst) {
console.log(inspect(cst));
};
}).process('A simple, Anglais, بسيطة.');
Yields:
RootNode[1] [data={"direction":"neutral"}]
└─ ParagraphNode[1] [data={"direction":"neutral"}]
└─ SentenceNode[10] [data={"direction":"neutral"}]
├─ WordNode[1] [data={"direction":"ltr"}]
│ └─ TextNode: 'A' [data={"direction":"ltr"}]
├─ WhiteSpaceNode: ' ' [data={"direction":"neutral"}]
├─ WordNode[1] [data={"direction":"ltr"}]
│ └─ TextNode: 'simple' [data={"direction":"ltr"}]
├─ PunctuationNode: ',' [data={"direction":"neutral"}]
├─ WhiteSpaceNode: ' ' [data={"direction":"neutral"}]
├─ WordNode[1] [data={"direction":"ltr"}]
│ └─ TextNode: 'Anglais' [data={"direction":"ltr"}]
├─ PunctuationNode: ',' [data={"direction":"neutral"}]
├─ WhiteSpaceNode: ' ' [data={"direction":"neutral"}]
├─ WordNode[1] [data={"direction":"rtl"}]
│ └─ TextNode: 'بسيطة' [data={"direction":"rtl"}]
└─ PunctuationNode: '.' [data={"direction":"neutral"}]
None, retext-directionality automatically detects the direction of each
Text
(using
wooorm/direction), either "ltr"
,
"rtl"
, or "neutral"
), and stores the direction in node.data.direction
.
All parents (such as words, sentences, paragraphs, root) also receive a
direction
property (parent.data.direction
): If every
Text
inside a parent has the same
(or neutral) direction, the parent has the same direction, otherwise, the
parent has a neutral direction.