eaw v0.1.5
eaw
The Node.js module to calculate the width of east Asian characters. (based on Unicode 9.0.0)
The script of this module is generated with EastAsianWidth.txt that Unicode Character Database provides.
- The generator script is ./scripts/generate.js.
- The generated script is ./lib/is-narrow-character.js.
The generator script is used to maintain this module as following to latest Unicode.
πΏ Installation
This module can be installed by npm.
$ npm install --save eaw- It requires Node.js
>=4.0.0. - It can be used in browsers by browserify-like tools.
π Usage
CLI
This module provides a CLI command: eaw
The command calculates the width of east Asian characters for each line.
Usage: eaw [OPTIONS]
It calculates the width of given east Asian characters.
It reads the characters from stdin or `--text` option.
OPTIONS:
-s, --split <NUMBER> ... It splits the given text by LF to make the
width of each line shorter than the given
number.
-t, --text <TEXT> ...... The characters that eaw processes instead of
stdin.
Example:
$ eaw --text "hello, δΈη"
11
$ cat hello.txt | eaw
11
$ cat hello.txt | eaw --split 4
hell
o,
δΈηNode.js
This module provides Node.js module.
const eaw = require("eaw")
console.log(eaw.isNarrowCharacter("A")) // β true
console.log(eaw.isNarrowCharacter("γ")) // β false
console.log(eaw.getWidth("A")) // β 1
console.log(eaw.getWidth("γ")) // β 2
console.log(eaw.getWidth("hello, δΈη")) // β 11
console.log(eaw.getWidth(["hello, δΈη", "πβ€"])) // β [11, 4]
console.log(eaw.split("hello, δΈη", 4)) // β ["hell", "o, ", "δΈη"]
console.log(eaw.split(["hello, δΈη", "πβ€π"], 4)) // β ["hell", "o, ", "δΈη", "πβ€", "π"]
process.stdin
.pipe(eaw.createWidthStream())
.pipe(process.stdout)
process.stdin
.pipe(eaw.createSplitStream(4))
.pipe(process.stdout)eaw.isNarrowCharacter(character: string): boolean
It checks whether the given character is a narrow character or not.
This function checks the first code point if the argument has 2 or more characters.
eaw.getWidth(characters: string, widthOfWideCharacters?: number = 2): number eaw.getWidth(characters: string[], widthOfWideCharacters?: number = 2): number[] eaw.getWidth(characters: Iterable<string>, widthOfWideCharacters?: number = 2): Iterable<number>
It returns the total width of the given characters.
eaw.split(characters: string, maxPerLine: number, widthOfWideCharacters?: number = 2): string[] eaw.split(characters: string[], maxPerLine: number, widthOfWideCharacters?: number = 2): string[] eaw.split(characters: Iterable<string>, maxPerLine: number, widthOfWideCharacters?: number = 2): Iterable<string>
It splits the given characters to make the width of each line shorter than the given number.
eaw.createWidthStream(widthOfWideCharacters?: number = 2): stream.Transform
It returns the transform stream to calculate the width of each line.
eaw.createSplitStream(maxPerLine: number, widthOfWideCharacters?: number = 2): stream.Transform
It returns the transform stream to split the given characters to make the width of each line shorter than the given number.
π° Changelog
See GitHub Releases
πͺ Contributing
Welcom your contributing!
Please use GitHub's issues/PRs.
Development tools
npm testruns tests.npm run buildgenerates the script from EastAsianWidth.txt.npm run cleanremoves the coverage result of the lastnpm testcommand.npm run coverageopens the coverage of the lastnpm testcommand by browsers.npm run lintruns ESLint.npm run watchruns tests for each file change.