Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ep_readability

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ep_readability - npm Package Compare versions

Comparing version 0.0.13 to 0.0.14

1

locales/de.json

@@ -17,2 +17,3 @@ {

, "readability.info.fleschIndex": "Flesch Index: "
, "readability.info.language": "Sprache: "
, "readability.info.sentences": "Sätze: "

@@ -19,0 +20,0 @@ , "readability.info.words": "Wörter: "

@@ -17,2 +17,3 @@ {

, "readability.info.fleschIndex": "Flesch index: "
, "readability.info.language": "Language: "
, "readability.info.sentences": "Sentences: "

@@ -19,0 +20,0 @@ , "readability.info.words": "Words: "

5

package.json
{
"name": "ep_readability",
"version": "0.0.13",
"version": "0.0.14",
"description": "Calculates the Flesch readability index in Etherpad, client based.",

@@ -17,4 +17,5 @@ "author": {

"readability",
"etherpad"
"etherpad",
"amstad"
]
}
# Click button to calculate the Flesch readability index
There'll be a button which shows the Flesch redability index.
There'll be a button which calculates and displays the Flesch redability index.
Colours indicate the readability of the text: red, orange, yellow, green.
Numeric values detail the readability:
* Negative numbers or near "0" indicate texts which are very difficult to read.
* Numbers near "100" indicate very easy texts.
Calculating is triggered by entering !, ?, RETURN or BACKSPACE. Or by pushing the button.

@@ -16,2 +10,4 @@

The original Flesch index is calculated for the English language. The Amstad index is calculated for the German language.
## Readability

@@ -18,0 +14,0 @@

@@ -35,3 +35,10 @@ // ----------------------------------------------------------------------------

.replace(/^\s+/gm,'') // Strip leading whitespace
.replace(/\s+$/gm,''); // Strip trailing whitespace
.replace(/\s+$/gm,'') // Strip trailing whitespace
.replace(/ä/gm, 'a') // Consider German umlauts
.replace(/Ä/gm, 'a')
.replace(/ü/gm, 'u')
.replace(/Ü/gm, 'u')
.replace(/ö/gm, 'o')
.replace(/Ö/gm, 'o')
.replace(/ß/gm, 'ss');

@@ -43,3 +50,3 @@ console.log(text);

exports.fleschReadingEase = function(text) {
exports.fleschReadingEase = function(text, lang) {
var flesch = wordCount = sentenceCount = syllCount = averageWordsPerSentence = averageSyllablesPerWord = null;

@@ -50,8 +57,7 @@

averageWordsPerSentence = wordCount / sentenceCount;
syllCount = 0;
// Syllables
var words = '';
text.split(/[\s\.]+/).forEach(function(word) {
words += word + '_';
syllCount += exports.syllableCount(word);
syllCount += exports.syllableCount(word); // exports.countSyllables(word);
});

@@ -61,3 +67,6 @@ averageSyllablesPerWord = (syllCount || 1) / wordCount;

// Flesch
flesch = Math.round((206.835 - (1.015 * averageWordsPerSentence) - (84.6 * averageSyllablesPerWord))*10)/10;
if(lang == 'de')
flesch = Math.round( (180 - averageWordsPerSentence - (58.5 * averageSyllablesPerWord))*10 )/10;
else
flesch = Math.round( (206.835 - (1.015 * averageWordsPerSentence) - (84.6 * averageSyllablesPerWord))*10 )/10;

@@ -76,2 +85,13 @@ var result = {

/*
Evaluate: https://github.com/brbcoding/Readability/blob/master/readability.js
exports.countSyllables = function(word) {
word = word.toLowerCase();
if(word.length <= 3) { return 1; }
word = word.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, '');
word = word.replace(/^y/, '');
console.log(word);
return word.match(/[aeiouy]{1,2}/g).length;
}; */
//

@@ -87,4 +107,4 @@ // I need to go through this function in detail and check it

// Prepare word - make lower case and remove non-word characters
word = word.toLowerCase().replace(/[^a-z]/g,"");
word = word.toLowerCase();//.replace(/[^a-z]/g,"");
// Specific common exceptions that don't follow the rule set below are handled individually

@@ -237,2 +257,11 @@ // Array of problem words (with word as key, syllable count as value)

// @TODO proper language detection
exports.detectLangage = function(text) {
var lang = 'en';
if(text.match(/ä|Ä|ü|Ü|ö|Ö|ß/gm).length > 0)
lang = 'de';
console.log('Language detected: ' + lang);
return lang;
}
exports.documentReady = function(hook_name, args, cb) {

@@ -248,7 +277,7 @@

+ window._('readability.info.advice');
var lang = exports.detectLangage(text);
text = exports.cleanText(text);
if(text.length > 0) {
result = exports.fleschReadingEase( text );
result = exports.fleschReadingEase( text, lang );
jQuery.each(colorOrder, function(index, item) {

@@ -263,2 +292,3 @@ //alert(result.flesch +" - "+ item)

toolTip = window._('readability.info.fleschIndex') + result.flesch + ' ' + window._('readability.info.fleschScale') + "\n"
+ window._('readability.info.language') + lang + "\n"
+ window._('readability.info.sentences') + result.sentenceCount + "\n"

@@ -265,0 +295,0 @@ + window._('readability.info.words') + result.wordCount + "\n"

@@ -20,4 +20,4 @@ var readab = require('../static/js/readability_button.js');

text = '<div id="magicdomid6" class=""><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z">»</span><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z i"><i>Die Politik ist hier besonders gefragt, Entwicklung und Einsatz freier Verschlüsselungsanwendungen zu fördern</i></span><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z">.«</span></div>';
result = 'Die Politik ist hier besonders gefragt Entwicklung und Einsatz freier Verschlüsselungsanwendungen zu fördern.';
text = '<div id="magicdomid6" class=""><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z">»</span><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z i"><i>Die Politik ist hier besonders gefragt, Entwicklung und Einsatz freier Verschlusselungsanwendungen zu fordern</i></span><span class="author-a-eyz86zqg38z79zx2z82z0z70zsz89zz76z">.«</span></div>';
result = 'Die Politik ist hier besonders gefragt Entwicklung und Einsatz freier Verschlusselungsanwendungen zu fordern.';
test.equal(result, readab.cleanText(text));

@@ -43,4 +43,4 @@

exports.cleanTextWorkBreakInline = function(test) {
var text = '<div id="magicdomid15" class=""><span class="author-a-z65zjckdup0xdseeity">Aus Transparenzgründen soll ein solches Register auf der Internetseite des Bundesta- ges veröffentlicht werden. Es muss maschinenlesbar gestaltet sein, um im Sinne von OpenData die Verknüpfung mit Abgeordneten- und Abstimmungsdaten zu ermögli- chen und um Sortier- und Durchsuchbarkeit sicherzustellen.</span></div>';
var result = 'Aus Transparenzgründen soll ein solches Register auf der Internetseite des Bundestages veröffentlicht werden. Es muss maschinenlesbar gestaltet sein um im Sinne von OpenData die Verknüpfung mit Abgeordneten und Abstimmungsdaten zu ermöglichen und um Sortier und Durchsuchbarkeit sicherzustellen.';
var text = '<div id="magicdomid15" class=""><span class="author-a-z65zjckdup0xdseeity">Aus Transparenzgrunden soll ein solches Register auf der Internetseite des Bundesta- ges veroffentlicht werden. Es muss maschinenlesbar gestaltet sein, um im Sinne von OpenData die Verknupfung mit Abgeordneten- und Abstimmungsdaten zu ermogli- chen und um Sortier- und Durchsuchbarkeit sicherzustellen.</span></div>';
var result = 'Aus Transparenzgrunden soll ein solches Register auf der Internetseite des Bundestages veroffentlicht werden. Es muss maschinenlesbar gestaltet sein um im Sinne von OpenData die Verknupfung mit Abgeordneten und Abstimmungsdaten zu ermoglichen und um Sortier und Durchsuchbarkeit sicherzustellen.';
test.equal(result, readab.cleanText(text));

@@ -55,4 +55,4 @@ test.done();

text = '<div id="magicdomid2" class=""><span class="author-a-z65zjckdup0xdseeity">Bedingungsloses Grundeinkommen und Mindestlohn&nbsp;</span></div><div id="magicdomid3" class=""><span class="author-a-z65zjckdup0xdseeity">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div><div id="magicdomid4" class=""><span class="author-a-z65zjckdup0xdseeity">Wir Piraten setzen uns für die Einführung eines bedingungslosen Grundeinkommens ein, das die Ziele des „Rechts auf sichere Existenz und gesellschaftlicher Teilhabe“ aus unserem Parteiprogramm erfüllt. Es soll:&nbsp;</span></div>';
result = 'Bedingungsloses Grundeinkommen und Mindestlohn. Wir Piraten setzen uns für die Einführung eines bedingungslosen Grundeinkommens ein das die Ziele des Rechts auf sichere Existenz und gesellschaftlicher Teilhabe aus unserem Parteiprogramm erfüllt. Es soll';
text = '<div id="magicdomid2" class=""><span class="author-a-z65zjckdup0xdseeity">Bedingungsloses Grundeinkommen und Mindestlohn&nbsp;</span></div><div id="magicdomid3" class=""><span class="author-a-z65zjckdup0xdseeity">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></div><div id="magicdomid4" class=""><span class="author-a-z65zjckdup0xdseeity">Wir Piraten setzen uns fur die Einfuhrung eines bedingungslosen Grundeinkommens ein, das die Ziele des „Rechts auf sichere Existenz und gesellschaftlicher Teilhabe“ aus unserem Parteiprogramm erfullt. Es soll:&nbsp;</span></div>';
result = 'Bedingungsloses Grundeinkommen und Mindestlohn. Wir Piraten setzen uns fur die Einfuhrung eines bedingungslosen Grundeinkommens ein das die Ziele des Rechts auf sichere Existenz und gesellschaftlicher Teilhabe aus unserem Parteiprogramm erfullt. Es soll';
test.equal(result, readab.cleanText(text));

@@ -59,0 +59,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc