From 854f1a89bb8a2ef38ac819a01e3982d9175ca0f1 Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Thu, 17 Nov 2022 11:21:37 +0100 Subject: [PATCH] I'm not a fan of CloudFlare (https://framagit.org/dCF/deCloudflare/). --- afpy/static/js/Markdown.Converter.min.js | 1 + afpy/static/js/Markdown.Sanitizer.min.js | 1 + afpy/templates/_parts/html_head.jinja2 | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 afpy/static/js/Markdown.Converter.min.js create mode 100644 afpy/static/js/Markdown.Sanitizer.min.js diff --git a/afpy/static/js/Markdown.Converter.min.js b/afpy/static/js/Markdown.Converter.min.js new file mode 100644 index 0000000..3c978c0 --- /dev/null +++ b/afpy/static/js/Markdown.Converter.min.js @@ -0,0 +1 @@ +var Markdown;Markdown="object"==typeof exports&&"function"==typeof require?exports:{},function(){function e(e){return e}function t(){return!1}function i(){}function n(){}i.prototype={chain:function(t,i){var n=this[t];if(!n)throw Error("unknown hook "+t);this[t]=n===e?i:function(e){return i(n(e))}},set:function(e,t){if(!this[e])throw Error("unknown hook "+e);this[e]=t},addNoop:function(t){this[t]=e},addFalse:function(e){this[e]=t}},Markdown.HookCollection=i,n.prototype={set:function(e,t){this["s_"+e]=t},get:function(e){return this["s_"+e]}},Markdown.Converter=function(){function e(e){return e=e.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm,function(e,t,i,n,r,s){return t=t.toLowerCase(),M.set(t,C(i)),r?n:(s&&N.set(t,s.replace(/"/g,""")),"")})}function t(e){return e=e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,r),e=e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,r),e=e.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,r),e=e.replace(/\n\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g,r),e=e.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,r)}function r(e,t){var i=t;return i=i.replace(/^\n+/,""),i=i.replace(/\n+$/g,""),i="\n\n~K"+(R.push(i)-1)+"K\n\n"}function s(e,i){e=d(e);var n="
\n";return e=e.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,n),e=e.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,n),e=e.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,n),e=p(e),e=m(e),e=L(e),e=t(e),e=x(e,i)}function o(e){return e=y(e),e=a(e),e=w(e),e=c(e),e=l(e),e=S(e),e=e.replace(/~P/g,"://"),e=C(e),e=b(e),e=e.replace(/ +\n/g,"
\n")}function a(e){var t=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;return e=e.replace(t,function(e){var t=e.replace(/(.)<\/?code>(?=.)/g,"$1`");return t=k(t,"!"==e.charAt(1)?"\\`*_/":"\\`*_")})}function l(e){return e=e.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,h),e=e.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,h),e=e.replace(/(\[([^\[\]]+)\])()()()()()/g,h)}function h(e,t,i,n,r,s,o,a){void 0==a&&(a="");var l=t,h=i.replace(/:\/\//g,"~P"),c=n.toLowerCase(),u=r,d=a;if(""==u)if(""==c&&(c=h.toLowerCase().replace(/ ?\n/g," ")),u="#"+c,void 0!=M.get(c))u=M.get(c),void 0!=N.get(c)&&(d=N.get(c));else{if(!(l.search(/\(\s*\)$/m)>-1))return l;u=""}u=T(u),u=k(u,"*_");var p='"}function c(e){return e=e.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,u),e=e.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,u)}function u(e,t,i,n,r,s,o,a){var l=t,h=i,c=n.toLowerCase(),u=r,d=a;if(d||(d=""),""==u){if(""==c&&(c=h.toLowerCase().replace(/ ?\n/g," ")),u="#"+c,void 0==M.get(c))return l;u=M.get(c),void 0!=N.get(c)&&(d=N.get(c))}h=k(h.replace(/"/g,"""),"*_[]()"),u=k(u,"*_");var p=''+h+'"+o(t)+"\n\n"}),e=e.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(e,t){return"

"+o(t)+"

\n\n"}),e=e.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(e,t,i){var n=t.length;return""+o(i)+"\n\n"})}function p(e){e+="~0";var t=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return D?e=e.replace(t,function(e,t,i){var n=t,r=i.search(/[*+-]/g)>-1?"ul":"ol",s=f(n,r);return s=s.replace(/\s+$/,""),s="<"+r+">"+s+"\n"}):(t=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,e=e.replace(t,function(e,t,i,n){var r=t,s=i,o=n.search(/[*+-]/g)>-1?"ul":"ol",a=f(s,o);return a=r+"<"+o+">\n"+a+"\n"})),e=e.replace(/~0/,"")}function f(e,t){D++,e=e.replace(/\n{2,}$/,"\n"),e+="~0";var i=I[t],n=RegExp("(^[ \\t]*)("+i+")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1("+i+")[ \\t]+))","gm"),r=!1;return e=e.replace(n,function(e,t,i,n){var a=n,l=/\n\n$/.test(a),h=l||a.search(/\n{2,}/)>-1;return h||r?a=s(E(a),!0):(a=p(E(a)),a=a.replace(/\n$/,""),a=o(a)),r=l,"
  • "+a+"
  • \n"}),e=e.replace(/~0/g,""),D--,e}function m(e){return e+="~0",e=e.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(e,t,i){var n=t,r=i;return n=v(E(n)),n=_(n),n=n.replace(/^\n+/g,""),n=n.replace(/\n+$/g,""),n="
    "+n+"\n
    ","\n\n"+n+"\n\n"+r}),e=e.replace(/~0/,"")}function g(e){return e=e.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(R.push(e)-1)+"K\n\n"}function y(e){return e=e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(e,t,i,n){var r=n;return r=r.replace(/^([ \t]*)/g,""),r=r.replace(/[ \t]*$/g,""),r=v(r),r=r.replace(/:\/\//g,"~P"),t+""+r+""})}function v(e){return e=e.replace(/&/g,"&"),e=e.replace(//g,">"),e=k(e,"*_{}[]\\",!1)}function b(e){return e=e.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g,"$1$3$4"),e=e.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g,"$1$3$4")}function L(e){return e=e.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(e,t){var i=t;return i=i.replace(/^[ \t]*>[ \t]?/gm,"~0"),i=i.replace(/~0/g,""),i=i.replace(/^[ \t]+$/gm,""),i=s(i),i=i.replace(/(^|\n)/g,"$1 "),i=i.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(e,t){var i=t;return i=i.replace(/^  /gm,"~0"),i=i.replace(/~0/g,"")}),g("
    \n"+i+"\n
    ")})}function x(e,t){e=e.replace(/^\n+/g,""),e=e.replace(/\n+$/g,"");for(var i=e.split(/\n{2,}/g),n=[],r=/~K(\d+)K/,s=i.length,a=0;s>a;a++){var l=i[a];r.test(l)?n.push(l):/\S/.test(l)&&(l=o(l),l=l.replace(/^([ \t]*)/g,"

    "),l+="

    ",n.push(l))}if(!t){s=n.length;for(var a=0;s>a;a++)for(var h=!0;h;)h=!1,n[a]=n[a].replace(/~K(\d+)K/g,function(e,t){return h=!0,R[t]})}return n.join("\n\n")}function C(e){return e=e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),e=e.replace(/<(?![a-z\/?\$!])/gi,"<")}function w(e){return e=e.replace(/\\(\\)/g,P),e=e.replace(/\\([`*_{}\[\]()>#+-.!])/g,P)}function S(e){e=e.replace(/(^|\s)(https?|ftp)(:\/\/[-A-Z0-9+&@#\/%?=~_|\[\]\(\)!:,\.;]*[-A-Z0-9+&@#\/%=~_|\[\]])($|\W)/gi,"$1<$2$3>$4");var t=function(e,t){return'
    '+A.plainLinkText(t)+""};return e=e.replace(/<((https?|ftp):[^'">\s]+)>/gi,t)}function O(e){return e=e.replace(/~E(\d+)E/g,function(e,t){var i=parseInt(t);return String.fromCharCode(i)})}function E(e){return e=e.replace(/^(\t|[ ]{1,4})/gm,"~0"),e=e.replace(/~0/g,"")}function _(e){if(!/\t/.test(e))return e;var t,i=[" "," "," "," "],n=0;return e.replace(/[\n\t]/g,function(e,r){return"\n"===e?(n=r+1,e):(t=(r-n)%4,n=r+1,i[t])})}function T(e){if(!e)return"";var t=e.length;return e.replace(F,function(i,n){return"~D"==i?"%24":":"!=i||n!=t-1&&!/[0-9\/]/.test(e.charAt(n+1))?"%"+i.charCodeAt(0).toString(16):":"})}function k(e,t,i){var n="(["+t.replace(/([\[\]\\])/g,"\\$1")+"])";i&&(n="\\\\"+n);var r=RegExp(n,"g");return e=e.replace(r,P)}function P(e,t){var i=t.charCodeAt(0);return"~E"+i+"E"}var A=this.hooks=new i;A.addNoop("plainLinkText"),A.addNoop("preConversion"),A.addNoop("postConversion");var M,N,R,D;this.makeHtml=function(i){if(M)throw Error("Recursive call to converter.makeHtml");return M=new n,N=new n,R=[],D=0,i=A.preConversion(i),i=i.replace(/~/g,"~T"),i=i.replace(/\$/g,"~D"),i=i.replace(/\r\n/g,"\n"),i=i.replace(/\r/g,"\n"),i="\n\n"+i+"\n\n",i=_(i),i=i.replace(/^[ \t]+$/gm,""),i=t(i),i=e(i),i=s(i),i=O(i),i=i.replace(/~D/g,"$$"),i=i.replace(/~T/g,"~"),i=A.postConversion(i),R=N=M=null,i};var I={ol:"\\d+[.]",ul:"[*+-]"},F=/(?:["'*()[\]:]|~D)/g}}(); \ No newline at end of file diff --git a/afpy/static/js/Markdown.Sanitizer.min.js b/afpy/static/js/Markdown.Sanitizer.min.js new file mode 100644 index 0000000..7f1c0a0 --- /dev/null +++ b/afpy/static/js/Markdown.Sanitizer.min.js @@ -0,0 +1 @@ +(function(){function e(e){return e.replace(/<[^>]*>?/gi,t)}function t(e){return e.match(s)||e.match(o)||e.match(a)?e:""}function i(e){if(""==e)return"";var t=/<\/?\w+[^>]*(\s|$|>)/g,i=e.toLowerCase().match(t),n=(i||[]).length;if(0==n)return e;for(var r,s,o,a="



  • ",l=[],h=[],c=!1,u=0;n>u;u++)if(r=i[u].replace(/<\/?(\w+).*/,"$1"),!(l[u]||a.search("<"+r+">")>-1)){if(s=i[u],o=-1,!/^<\//.test(s))for(var d=u+1;n>d;d++)if(!l[d]&&i[d]==""){o=d;break}-1==o?c=h[u]=!0:l[o]=!0}if(!c)return e;var u=0;return e=e.replace(t,function(e){var t=h[u]?"":e;return u++,t})}var n,r;"object"==typeof exports&&"function"==typeof require?(n=exports,r=require("./Markdown.Converter").Converter):(n=window.Markdown,r=n.Converter),n.getSanitizingConverter=function(){var t=new r;return t.hooks.chain("postConversion",e),t.hooks.chain("postConversion",i),t};var s=/^(<\/?(b|blockquote|code|del|dd|dl|dt|em|h1|h2|h3|i|kbd|li|ol|p|pre|s|sup|sub|strong|strike|ul)>|<(br|hr)\s?\/?>)$/i,o=/^(]+")?\s?>|<\/a>)$/i,a=/^(]*")?(\stitle="[^"<>]*")?\s?\/?>)$/i})(); \ No newline at end of file diff --git a/afpy/templates/_parts/html_head.jinja2 b/afpy/templates/_parts/html_head.jinja2 index 11dcee5..e992102 100644 --- a/afpy/templates/_parts/html_head.jinja2 +++ b/afpy/templates/_parts/html_head.jinja2 @@ -5,6 +5,7 @@ AFPY - Le site web de l'Association Francophone Python - {{ pagedown.include_pagedown() }} + + {% endblock %}