edit: replace custom paragraph breaks by sentence wrapping
authorMischa POSLAWSKY <perl@shiar.org>
Fri, 15 Sep 2017 17:31:19 +0000 (19:31 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 18 Sep 2017 18:21:28 +0000 (20:21 +0200)
Attempt to improve readability of HTML source (and line-based diffs).

edit.js

diff --git a/edit.js b/edit.js
index c32bd5b81ef3540a775a9dad36ea6b2485f56588..b97ed87611cd8b8299ae03e953d73d48d7835612 100644 (file)
--- a/edit.js
+++ b/edit.js
@@ -3,7 +3,14 @@ CKEDITOR.plugins.add('inlinesave', {
                editor.addCommand( 'inlinesave', {
                        exec: function (editor) {
                                var pagename = window.location.pathname.replace(/\/$/, '/index');
-                               var data = 'body='+encodeURIComponent(editor.getData());
+                               var body = editor.getData().replace(/^(\t*).{73,}/mg, function (line, indent) {
+                                       // wrap long line after each sentence
+                                       var dot = '(?:[^<]|<[^>]*>)'; // one character
+                                       var dots = '(?:'+dot+'{24,72}|'+dot+'{73,}?)'; // chars before punctuation
+                                       var wrap = new RegExp('('+dots+'[.;:!?]) (?=[A-Z])', 'g'); // separate lines
+                                       return line.replace(wrap, '$1\n'+indent+'\t');
+                               });
+                               var data = 'body='+encodeURIComponent(body);
                                ajaxpost = new XMLHttpRequest();
                                ajaxpost.open('POST', '/edit'+pagename, true);
                                ajaxpost.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
@@ -66,16 +73,6 @@ CKEDITOR.on('instanceCreated', function (event) {
        });
 });
 
-       CKEDITOR.on('instanceReady', function (event) {
-               var editor = event.editor;
-               var writer = editor.dataProcessor.writer;
-               writer.selfClosingEnd = ' />';
-               writer.setRules( 'p', {
-                       breakAfterOpen: true,
-                       breakBeforeClose: true,
-               });
-       });
-
        CKEDITOR.disableAutoInline = true;
 
 // add edit link to menu