Textstat
textstat is a statistics tool for text, markdown and html.
Install / Use
/learn @azu/TextstatREADME
:warning: textstat is re-implemented: https://github.com/textlint/textstat
textstat
textstat is plugable statistics tool for text, markdown and html.
textstat is built on top of textlint.
Features
- Support text, markdown and html
- Analyze text and show information
- Write statistics rule by JavaScript
- Write plugins by JavaScript
Installation
npm install textstat
Usage
The same way of textlint.
The difference between textstat and textlint is that textstat has some built-in rules.
CLI
textstat [options] file.md [file.txt] [dir]
Options:
-h, --help Show help.
-c, --config path::String Use configuration from this file or sharable config.
--plugin [String] Specify plugins
--rule [path::String] Set rule package name and set all default rules to off.
--rulesdir [path::String] Set rules from this directory and set all default rules to off.
-f, --format String Use a specific output format.
-v, --version Outputs the version number.
--ext [String] Specify text file extensions.
-o, --output-file path::String Enable report to be written to a file.
--quiet Report errors only. - default: false
--stdin Lint code provided on <STDIN>. - default: false
Example:
$ textstat ja/ESLint/
┌──────────────────────┬─────────────────────┐
│ filePath │ ja/ESLint/README.md │
├──────────────────────┼─────────────────────┤
│ fileSize │ 14.46 kB │
├──────────────────────┼─────────────────────┤
│ number of characters │ 8681 │
├──────────────────────┼─────────────────────┤
│ number of Lines │ 306 │
├──────────────────────┼─────────────────────┤
│ number of Images │ 0 │
├──────────────────────┼─────────────────────┤
│ number of Links │ 22 │
├──────────────────────┼─────────────────────┤
│ number of List Items │ 22 │
├──────────────────────┼─────────────────────┤
│ number of sentences │ 160 │
├──────────────────────┼─────────────────────┤
│ share of code │ 30% │
└──────────────────────┴─────────────────────┘
.textstatrc
.textstatrc is config file that is loaded as YAML, JSON or JS via MoOx/rc-loader.
$ textstat --rule number-of-lines README.md
is equal to
{
"rules": {
"number-of-lines": true
}
}
The config object can define rule's option.
{
"rules": {
"number-of-lines": false, // disable
"very-nice-rule": {
"key": "value"
}
}
}
Pass rule's options("key": "value") to very-nice-rule.
It mean that use the following format:
{
"rules": {
"<rule-name>": true | false | object
}
}
Plugins
textstat plugin is a set of rules and rulesConfig or customize parser.
To enable plugin, put the plugin-name into .textstat.
// `.textstatrc`
{
"plugins": [
"plugin-name"
],
// overwrite-plugins rules config
// <plugin>/<rule>
"rules": {
"plugin-name/rule-name" : false
}
}
Example
$ npm install textstat-plugin-ja textstat -D
To enable ja plugin and add to .textstatrc
{
"plugins":[
"ja"
]
}
Create Rule
You can create new rule by JavaScript.
See
- src/rules
- textlint/create-rules.md is of help
- textstat's rule is the same way of textlint.
- The difference between textstat and textlint is that second arguments is a object of
report(node, object).
number-of-characters rule:
export default function (context) {
let { Syntax, getSource, report } = context;
return {
// node's type
// see https://github.com/textlint/textlint/blob/master/docs/txtnode.md
[Syntax.Document](node){
let text = getSource(node);
let charactersCount = text.length;
// report(node, { "key": "value" });
report(node, {
"number of characters": charactersCount
});
}
}
}
Tips
Disable built-in rules
Add false to the rule of .textstatrc
{
"rules": {
"file-size" : false,
"share-of-code" : false
}
}
for japanese
textstatで使える日本語向けの統計ルール集
$ npm install textstat-plugin-ja textstat -g
$ textstat --plugin ja README.md
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
Related Skills
node-connect
342.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
342.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.7kCommit, push, and open a PR
