textlint/textlint: The pluggable natural language linter for text and markdown.
Je vais essayer de me renseigner auprès de l'API.
Notez qu'une erreur se produira si le dossier de l'application est le même que le nom du package à installer ultérieurement, tel que textlint
.
app/
├ .textlintrc //Réglage
├ app.js //web principal
└ a.py //client
Il convient que «--save» soit bon
$ npm init --yes
$ npm install --save-dev express
$ npm install --save-dev textlint
//Règles pour vérifier TODO
$ npm install --save-dev textlint-rule-no-todo
//Règles de vérification des kanji consécutifs
$ npm install --save-dev textlint-rule-max-kanji-continuous-len
La version actuelle est la suivante.
$ node --version
v10.21.0
$ npm --version
6.14.4
$ rpm list
[email protected]
[email protected]
[email protected]
[email protected]
app.js
const TextLintEngine = require('textlint').TextLintEngine;
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
//Magie qui analyse JSON des données post
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
//Attendez au port 8080
app.listen(8080, () => {
console.log('Running at Port 8080...');
});
app.post('/api/textlint', (req, res, next) => {
const req_text = req.body.text;
const engine = new TextLintEngine();
engine.executeOnText(req_text).then(results => {
res.json({
messages: results[0].messages
});
});
});
//Erreur 404 pour les autres demandes
app.use((req, res) => {
res.sendStatus(404);
});
Reportez-vous à github de chaque règle pour savoir comment écrire
.textlintrc
{
"filters": {},
"rules": {
"no-todo": true,
"max-kanji-continuous-len": true,
}
}
Appliquer une charpie à la chaîne de la variable de texte
a.py
import json
import urllib.request
url = 'http://localhost:8080/api/textlint'
text = '''
TODO: this is TODO
1 2 3 4 5 6
'''.strip()
data = {"text": text}
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
try:
with urllib.request.urlopen(req) as res:
body = json.load(res)
json_str = json.dumps(body)
print(json_str)
except:
print("fail")
$ node app.js
Running at Port 8080...
$ python3 a.py | jq .
{
"messages": [
{
"type": "lint",
"ruleId": "no-todo",
"message": "Found TODO: 'TODO: this is TODO'",
"index": 0,
"line": 1,
"column": 1,
"severity": 2
},
{
"type": "lint",
"ruleId": "max-kanji-continuous-len",
"message": "6 kanji ou plus d'affilée:1 2 3 4 5 6",
"index": 19,
"line": 2,
"column": 1,
"severity": 2
}
]
}
Bien sûr, vous pouvez également appeler depuis la ligne de commande
$ curl -X POST -H "Content-Type: application/json" \
-d '{"text":"TODO: this is TODO\n 1 2 3 4 5 6"}' \
localhost:8080/api/textlint | jq .
{
"messages": [
{
"type": "lint",
"ruleId": "no-todo",
"message": "Found TODO: 'TODO: this is TODO'",
"index": 0,
"line": 1,
"column": 1,
"severity": 2
},
{
"type": "lint",
"ruleId": "max-kanji-continuous-len",
"message": "6 kanji ou plus d'affilée:1 2 3 4 5 6",
"index": 19,
"line": 2,
"column": 1,
"severity": 2
}
]
}
Création d'un serveur local avec Node \ .js et Express \ (1 ) ―Introduction de Node \ .js et npm― \ -Qiita Exécutez textlint à partir du code \ -Qiita Exécutez textlint dans l'environnement nodejs / express [le résultat de l'exécution du nœud \ .js \ -Textlint est vide \ -Stack overflow](https://ja.stackoverflow.com/questions/60015/textlint-%E3%81%AE%E5%AE%9F % E8% A1% 8C% E7% B5% 90% E6% 9E% 9C% E3% 81% 8C% E7% A9% BA% E3% 81% AB% E3% 81% AA% E3% 82% 8B / 70543 ) Renseignez-vous sur l'API Web après avoir obtenu les données POST avec Node \ .js \ + Express \ -Qiita Comprendre le corps \ -parser du nœud \ .js \ (express ) \ -Qiita
Recommended Posts