|
@@ -1,5 +1,52 @@
|
|
|
|
|
|
(function() {
|
|
|
+
|
|
|
+
|
|
|
+ function betterTrim(snippetEl) {
|
|
|
+
|
|
|
+ function trimLeft(val) {
|
|
|
+
|
|
|
+ return val.replace(/^[\s\uFEFF\xA0]+/g, '');
|
|
|
+ }
|
|
|
+ function trimLineBreaks(input) {
|
|
|
+ var lines = input.split('\n');
|
|
|
+
|
|
|
+
|
|
|
+ for (var i = 0; i < lines.length; i++) {
|
|
|
+ if (lines[i].trim() === '') {
|
|
|
+ lines.splice(i--, 1);
|
|
|
+ } else break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ for (var i = lines.length-1; i >= 0; i--) {
|
|
|
+ if (lines[i].trim() === '') {
|
|
|
+ lines.splice(i, 1);
|
|
|
+ } else break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return lines.join('\n');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return (function(snippetEl) {
|
|
|
+ var content = trimLineBreaks(snippetEl.innerHTML);
|
|
|
+ var lines = content.split('\n');
|
|
|
+
|
|
|
+ var pad = lines.reduce(function(acc, line) {
|
|
|
+ if (line.length > 0 && trimLeft(line).length > 0 && acc > line.length - trimLeft(line).length) {
|
|
|
+ return line.length - trimLeft(line).length;
|
|
|
+ }
|
|
|
+ return acc;
|
|
|
+ }, Number.POSITIVE_INFINITY);
|
|
|
+
|
|
|
+ return lines.map(function(line, index) {
|
|
|
+ return line.slice(pad);
|
|
|
+ })
|
|
|
+ .join('\n');
|
|
|
+ })(snippetEl);
|
|
|
+ }
|
|
|
+
|
|
|
if( typeof window.addEventListener === 'function' ) {
|
|
|
var hljs_nodes = document.querySelectorAll( 'pre code' );
|
|
|
|
|
@@ -8,7 +55,7 @@
|
|
|
|
|
|
|
|
|
if( element.hasAttribute( 'data-trim' ) && typeof element.innerHTML.trim === 'function' ) {
|
|
|
- element.innerHTML = element.innerHTML.trim();
|
|
|
+ element.innerHTML = betterTrim(element);
|
|
|
}
|
|
|
|
|
|
|