-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmarkable.min.js
6 lines (6 loc) · 4.2 KB
/
markable.min.js
1
2
3
4
5
6
/**
* markable - make non-English Markdown plain text markable
* Copyright (c) 2020, Guxi11. (MIT Licensed)
* https://github.com/hbhde/markable
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).markable=t()}(this,function(){"use strict";var s=/(^|[^\[])\^/g;var n={"=`=":/`·/,"=~=":/~~/,"={=":/「/,"=}=":/」/,"=<=":/<《〈/,"=>=":/>》〉/,"=:=":/::/,"=!=":/!!/,"=_=":/——/,"=$=":/¥/,'="=':/"“”/,"='=":/'‘’/,"=\\\\\\[=":/\[【/,"=\\\\\\]=":/\]】/,"=\\\\\\(=":/\((/,"=\\\\\\)=":/\))/,"=\\\\\\|=":/|/,"=\\\\\\.=":/。/},r=function(l){l=l.source;var i={replace:function(e,t){return t=(t=t.source).replace(s,"$1"),l=l.replace(e,t),i},replaceAllByDict:function(e){for(var t in e){var n=t,r=e[t];r=(r=r.source).replace(s,"$1"),l=l.replace(RegExp(n,"g"),r)}return i},getRegex:function(){return new RegExp(l)}};return i},e={newline:/^\n+/,fences:/^ {0,3}([=`=]{3,}(?=[^\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[=`=]* *(?:\n+|$)|$)/,blockquote:/^ {0,3}[=>=]+(([^\n]*)(?:\n|$))/,listquote:/^ *bull ?blockquote/,text:/^[^\n]+/,bullet:/(?:[*+-]|\d{1,9}\.)/};e.listquote=r(e.listquote).replace("bull",e.bullet).replace("blockquote",e.blockquote).getRegex();var t={link:/^[=!=]?[=\[=](label)[=\]=][=\(=]\s*(href)(?:\s+(title))?\s*[=\)=]/,reflink:/^[=!=]?[=\[=](label)[=\]=][=\[=](id)[=\]=]/,linkdefinition:/^[=\[=](id)[=\]=][=:=]\s*(href)(?:\s+(title))?/,code:/^([=`=]+)([^=`=]|[^=`=][\s\S]*?[^=`=])\1(?![=`=])/,text:/^([=`=]+|[^=`=])(?:[\s\S]*?(?:(?=[\\<!=\[==`=*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/,_label:/(?:[=\[=][^=\[==\]=]*[=\]=]|\\.|[=`=][^=`=]*[=`=]|[^=\[==\]=\\=`=])*?/,_href:/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,_title:/[="=](?:\\[="=]?|[^="=\\])*[="=]|[='=](?:\\[='=]?|[^='=\\])*[='=]|[=\(=](?:\\[=\)=]?|[^)\\])*[=\)=]/,_id:/(?!\s*[=\]=])((?:\\[=\[==\]=]?|[^=\[==\]=\\])+)/};t.link=r(t.link).replace("label",t._label).replace("href",t._href).replace("title",t._title).getRegex(),t.reflink=r(t.reflink).replace("label",t._label).replace("id",t._id).getRegex(),t.linkdefinition=r(t.linkdefinition).replace("id",t._id).replace("href",t._href).replace("title",t._title).getRegex(),[e,t].map(function(e){for(var t in e)e[t]=r(e[t]).replaceAllByDict(n).getRegex()});var l={block:e,inline:t},i=l.inline,a=function(){function t(){this.rules=i}return t.translate=function(e){return(new t).translate(e)},t.prototype.translate=function(e){for(var t,n,r,l="";e;)(t=this.rules.link.exec(e))?(e=e.substring(t[0].length),n=t[0].substring(0,t[0].indexOf(t[1])).replace(/!/,"!").replace(/【/,"["),r=t[0].substring(t[0].indexOf(t[1])+t[1].length).replace(/】/,"]").replace(/(/,"(").replace(/)/,")").replace(/[“”]/g,'"'),l+=n+this.translate(t[1])+r):(t=this.rules.reflink.exec(e))?(e=e.substring(t[0].length),n=t[0].substring(0,t[0].indexOf(t[1])).replace(/【/,"["),r=t[0].substring(t[0].indexOf(t[1])+t[1].length).replace(/【/,"[").replace(/】/g,"]"),l+=n+this.translate(t[1])+r):(t=this.rules.linkdefinition.exec(e))?(e=e.substring(t[0].length),l+=t[0].replace(/【/,"[").replace(/】/,"]").replace(/:/,":").replace(/[“”]/g,'"')):(t=this.rules.code.exec(e))?(e=e.substring(t[0].length),l+=t[0].replace(/·/g,"`")):(t=this.rules.text.exec(e))&&(e=e.substring(t[0].length),l+=t[0]);return l},t}(),c=l.block,u=function(){function t(){this.rules=c,this.dest=""}return t.translate=function(e){return(new t).translate(e)},t.prototype.translate=function(e){var t,n;for(e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," ");e;)(t=this.rules.newline.exec(e))&&(e=e.substring(t[0].length),this.dest+=t[0]),(t=this.rules.fences.exec(e))?(e=e.substring(t[0].length),this.dest+=t[0].replace(/[·]{3}/g,"```")):(t=this.rules.blockquote.exec(e)||this.rules.listquote.exec(e))?(e=e.substring(t[0].length),n=t[0].substring(0,t[0].indexOf(t[1])).replace(/[》〉]/g,">"),this.dest+=n+a.translate(t[1])):(t=this.rules.text.exec(e))&&(e=e.substring(t[0].length),this.dest+=a.translate(t[0]));return this.dest},t}();return function(e){if(null==e)throw new Error("markable(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("markable(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");return u.translate(e)}});