markdown-proofing
Version:
A markdown proofing platform for individuals, teams, and organizations.
102 lines (69 loc) • 4.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _analyzerResult = require('../analyzer-result');
var _analyzerResult2 = _interopRequireDefault(_analyzerResult);
var _textProcessor = require('../text-processor');
var _textProcessor2 = _interopRequireDefault(_textProcessor);
var _textStatistics = require('text-statistics');
var _textStatistics2 = _interopRequireDefault(_textStatistics);
var _readTime = require('read-time');
var _readTime2 = _interopRequireDefault(_readTime);
var _roundTo = require('round-to');
var _roundTo2 = _interopRequireDefault(_roundTo);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var StatisticsAnalyzer = function () {
function StatisticsAnalyzer() {
_classCallCheck(this, StatisticsAnalyzer);
}
_createClass(StatisticsAnalyzer, [{
key: 'analyze',
value: function analyze(str) {
var result = new _analyzerResult2.default();
var text = _textProcessor2.default.markdownToText(str);
var stats = (0, _textStatistics2.default)(text || ' ');
var statsFullTextContent = (0, _textStatistics2.default)(str || ' ');
var addMessage = function addMessage(messageType, numericValue) {
result.addMessage(messageType, (0, _roundTo2.default)(numericValue, 2));
};
//
// General statistics
//
addMessage('statistics-text-length', statsFullTextContent.textLength());
addMessage('statistics-letter-count', stats.letterCount());
addMessage('statistics-sentence-count', stats.sentenceCount());
addMessage('statistics-word-count', stats.wordCount());
addMessage('statistics-average-words-per-sentence', stats.averageWordsPerSentence());
addMessage('statistics-average-syllables-per-word', stats.averageSyllablesPerWord());
addMessage('statistics-words-with-three-syllables', stats.wordsWithThreeSyllables());
addMessage('statistics-percentage-words-with-three-syllables', stats.percentageWordsWithThreeSyllables());
//
// Readability
//
// https://en.wikipedia.org/wiki/Flesch–Kincaid_readability_tests
addMessage('statistics-flesch-kincaid-reading-ease', stats.fleschKincaidReadingEase());
addMessage('statistics-flesch-kincaid-grade-level', stats.fleschKincaidGradeLevel());
// https://en.wikipedia.org/wiki/Gunning_fog_index
addMessage('statistics-gunning-fog-score', stats.gunningFogScore());
// https://en.wikipedia.org/wiki/Coleman%E2%80%93Liau_index
addMessage('statistics-coleman-liau-index', stats.colemanLiauIndex());
// https://en.wikipedia.org/wiki/SMOG
addMessage('statistics-smog-index', stats.smogIndex());
// https://en.wikipedia.org/wiki/Automated_readability_index
addMessage('statistics-automated-readability-index', stats.automatedReadabilityIndex());
//
// Estimated read time
//
var readTimeResult = (0, _readTime2.default)(text);
result.addMessage('statistics-estimated-read-time', readTimeResult.text);
result.addMessage('statistics-estimated-read-time-minutes', readTimeResult.m);
return result;
}
}]);
return StatisticsAnalyzer;
}();
exports.default = StatisticsAnalyzer;
module.exports = exports['default'];