From 06d8db291ebe307dd8a6e76c860eb73d8f838f2b Mon Sep 17 00:00:00 2001
From: Patrick Seal
Date: Thu, 9 Jun 2022 16:25:15 -0700
Subject: [PATCH 1/6] add settings configuration via attributes
---
plugins/normalize-whitespace/demo.html | 15 +++++++++
plugins/normalize-whitespace/index.html | 12 ++++++-
.../prism-normalize-whitespace.js | 33 +++++++++++++++++++
.../prism-normalize-whitespace.min.js | 2 +-
4 files changed, 60 insertions(+), 2 deletions(-)
diff --git a/plugins/normalize-whitespace/demo.html b/plugins/normalize-whitespace/demo.html
index a6bcf22bea..068cdd76f5 100644
--- a/plugins/normalize-whitespace/demo.html
+++ b/plugins/normalize-whitespace/demo.html
@@ -17,6 +17,21 @@
+
-
+
+
+
diff --git a/plugins/normalize-whitespace/index.html b/plugins/normalize-whitespace/index.html
index ce049d8f55..a145fc6332 100644
--- a/plugins/normalize-whitespace/index.html
+++ b/plugins/normalize-whitespace/index.html
@@ -57,7 +57,7 @@
+
+
+ var there_is_a_very_very_very_very_long_line_it_can_break_it_for_you = true;
+
+ if (there_is_a_very_very_very_very_long_line_it_can_break_it_for_you === true) {
+ };
+
+
+
+
+How to use
});
The following settings are available:
+The following settings are available and can be set via the data-[setting]
attribute on the <pre<
element:
Date: Fri, 10 Jun 2022 08:42:25 -0700
Subject: [PATCH 3/6] Use Number() instead of +
---
plugins/normalize-whitespace/prism-normalize-whitespace.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.js b/plugins/normalize-whitespace/prism-normalize-whitespace.js
index 16a4a5d70e..0e8848e8cf 100644
--- a/plugins/normalize-whitespace/prism-normalize-whitespace.js
+++ b/plugins/normalize-whitespace/prism-normalize-whitespace.js
@@ -186,7 +186,7 @@
value = (value === 'true' || value === '') || (value === 'false' ? false : undefined);
break;
case 'number':
- value = (value === '' ? undefined : (isNaN(+value) ? undefined : +value));
+ value = (value === '' || (isNaN(Number(value))) ? undefined : Number(value));
break;
}
if (value !== undefined) {
From 428363a7874d7c0334e3894ff839dcffe82b27ce Mon Sep 17 00:00:00 2001
From: Patrick Seal
Date: Fri, 10 Jun 2022 09:21:17 -0700
Subject: [PATCH 4/6] Use JSON.parse
Co-authored-by: Michael Schmidt
---
.../prism-normalize-whitespace.js | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.js b/plugins/normalize-whitespace/prism-normalize-whitespace.js
index 0e8848e8cf..b491cefc31 100644
--- a/plugins/normalize-whitespace/prism-normalize-whitespace.js
+++ b/plugins/normalize-whitespace/prism-normalize-whitespace.js
@@ -180,17 +180,13 @@
if (Object.hasOwnProperty.call(settingsConfig, key)) {
var settingType = settingsConfig[key];
if (pre.hasAttribute('data-' + key)) {
- var value = pre.getAttribute('data-' + key);
- switch (settingType) {
- case 'boolean':
- value = (value === 'true' || value === '') || (value === 'false' ? false : undefined);
- break;
- case 'number':
- value = (value === '' || (isNaN(Number(value))) ? undefined : Number(value));
- break;
- }
- if (value !== undefined) {
- env.settings[key] = value;
+ try {
+ var value = JSON.parse(pre.getAttribute('data-' + key) || 'true')
+ if (typeof value === settingType) {
+ env.settings[key] = value;
+ }
+ } catch (_error) {
+ // ignore error
}
}
}
From fcb595217d1341846f4163e7dcc655dfa14e4385 Mon Sep 17 00:00:00 2001
From: Patrick Seal
Date: Fri, 10 Jun 2022 09:29:31 -0700
Subject: [PATCH 5/6] Add semicolon
---
plugins/normalize-whitespace/prism-normalize-whitespace.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.js b/plugins/normalize-whitespace/prism-normalize-whitespace.js
index b491cefc31..4dc89bcf2d 100644
--- a/plugins/normalize-whitespace/prism-normalize-whitespace.js
+++ b/plugins/normalize-whitespace/prism-normalize-whitespace.js
@@ -181,7 +181,7 @@
var settingType = settingsConfig[key];
if (pre.hasAttribute('data-' + key)) {
try {
- var value = JSON.parse(pre.getAttribute('data-' + key) || 'true')
+ var value = JSON.parse(pre.getAttribute('data-' + key) || 'true');
if (typeof value === settingType) {
env.settings[key] = value;
}
From 1d5d8967f10326c901abe7574663de8899176c04 Mon Sep 17 00:00:00 2001
From: Patrick Seal
Date: Fri, 10 Jun 2022 10:23:37 -0700
Subject: [PATCH 6/6] Add built plugin file
---
plugins/normalize-whitespace/prism-normalize-whitespace.min.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugins/normalize-whitespace/prism-normalize-whitespace.min.js b/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
index 360b4373c0..56918926b3 100644
--- a/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
+++ b/plugins/normalize-whitespace/prism-normalize-whitespace.min.js
@@ -1 +1 @@
-!function(){if("undefined"!=typeof Prism){var e=Object.assign||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e},n={"remove-trailing":"boolean","remove-indent":"boolean","left-trim":"boolean","right-trim":"boolean","break-lines":"number",indent:"number","remove-initial-line-feed":"boolean","tabs-to-spaces":"number","spaces-to-tabs":"number"};t.prototype={setDefaults:function(n){this.defaults=e(this.defaults,n)},normalize:function(n,t){for(var r in t=e(this.defaults,t)){var i=r.replace(/-(\w)/g,(function(e,n){return n.toUpperCase()}));"normalize"!==r&&"setDefaults"!==i&&t[r]&&this[i]&&(n=this[i].call(this,n,t[r]))}return n},leftTrim:function(e){return e.replace(/^\s+/,"")},rightTrim:function(e){return e.replace(/\s+$/,"")},tabsToSpaces:function(e,n){return n=0|n||4,e.replace(/\t/g,new Array(++n).join(" "))},spacesToTabs:function(e,n){return n=0|n||4,e.replace(RegExp(" {"+n+"}","g"),"\t")},removeTrailing:function(e){return e.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(e){return e.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(e){var n=e.match(/^[^\S\n\r]*(?=\S)/gm);return n&&n[0].length?(n.sort((function(e,n){return e.length-n.length})),n[0].length?e.replace(RegExp("^"+n[0],"gm"),""):e):e},indent:function(e,n){return e.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++n).join("\t")+"$&")},breakLines:function(e,n){n=!0===n?80:0|n||80;for(var t=e.split("\n"),i=0;in&&(o[s]="\n"+o[s],a=l)}t[i]=o.join("")}return t.join("\n")}},"undefined"!=typeof module&&module.exports&&(module.exports=t),Prism.plugins.NormalizeWhitespace=new t({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",(function(e){var t=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings["whitespace-normalization"])&&Prism.util.isActive(e.element,"whitespace-normalization",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&"pre"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),n)if(Object.hasOwnProperty.call(n,i)){var o=n[i];if(r.hasAttribute("data-"+i)){var a=r.getAttribute("data-"+i);switch(o){case"boolean":a="true"===a;break;case"number":a=isNaN(+a)?0:+a}e.settings[i]=a}}for(var s=r.childNodes,l="",c="",u=!1,m=0;mt&&(o[l]="\n"+o[l],a=s)}n[i]=o.join("")}return n.join("\n")}},"undefined"!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({"remove-trailing":!0,"remove-indent":!0,"left-trim":!0,"right-trim":!0}),Prism.hooks.add("before-sanity-check",(function(e){var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings["whitespace-normalization"])&&Prism.util.isActive(e.element,"whitespace-normalization",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&"pre"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){var o=t[i];if(r.hasAttribute("data-"+i))try{var a=JSON.parse(r.getAttribute("data-"+i)||"true");typeof a===o&&(e.settings[i]=a)}catch(e){}}for(var l=r.childNodes,s="",c="",u=!1,m=0;m