@ryusei/code
Version:
<div align="center"> <a href="https://code.ryuseijs.com"> <img alt="RyuseiCode" src="https://code.ryuseijs.com/images/svg/logo.svg" width="70"> </a>
14 lines (13 loc) • 10.5 kB
JavaScript
!function(t,e){"function"==typeof define&&define.amd?define([],e):"undefined"!=typeof exports?e():(e(),t.unknown={})}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(){"use strict";function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}
/*!
* RyuseiCode.js
* Version : 0.1.17
* License : MIT
* Copyright: 2021 Naotoshi Fujita
*/
/*!
* RyuseiLight.js
* Version : 1.2.0
* License : MIT
* Copyright: 2020 Naotoshi Fujita
*/var t="keyword",r="comment",o="tag",s="tag.close",e="selector",n="atrule",a="attr",u="prop",c="value",f="entity",l="cdata",d="prolog",m="identifier",p="string",g="number",h="boolean",v="function",b="class",k="decorator",S="regexp",y="operator",w="bracket",x="delimiter",$="space",C="text";function A(t){return void 0===t}function F(t,e){if(t)for(var n=Object.keys(t),r=0;r<n.length;r++)e(t[n[r]],n[r])}function j(r){for(var t=arguments.length,e=new Array(1<t?t-1:0),n=1;n<t;n++)e[n-1]=arguments[n];return e.forEach(function(n){var t;null!==(t=n)&&"object"==typeof t&&F(n,function(t,e){A(n[e])||(r[e]=n[e])})}),r}function T(t,e){if(void 0===e&&(e=""),!t)throw new Error(e)}function _(t,e){return t.charAt(0)===e}var z=!A(/x/.sticky),q=/[+-]?(\d+\.?\d*|\d*\.?\d+)([eE][+-]?\d+)?/,D=/\b(?:true|false)\b/,E=/[[\]{}()]/,O=/[ \t]+/,B=/'(?:\\'|.)*?'/,R=/"(?:\\"|.)*?"/,H=/\/\*[\s\S]*?(\*\/|$)/,J=/\/\/.*/,L=/\b(?:break|catch|class|continue|do|else|extends|finally|for|function|if|implements|in|instanceof|interface|new|null|return|throw|try|while)\b/;function M(){return{id:"css",name:"CSS",grammar:{main:[["#common"],["#findSingleAtrule"],["#findBlock"]],findBlock:[["#block",/(?:(?![\t\n\r ;\{\}])[\s\S])(?:(?![;\{\}])[\s\S])*\{[\s\S]*?\}/,"@rest"]],findSingleAtrule:[["#atrule",/@(?:(?![;\{])[\s\S])+?;/]],findAtrule:[["#atrule",/@(?:(?![;\{])[\s\S])*?(?=[;\{])/]],findSelector:[["#selector",/(?:(?![\t\n\r ;\{\}])[\s\S])[\s\S]*?(?=\{)/]],common:[[p,/(["'])[\s\S]*?(?:(?!\\)[\s\S])\1/],[r,H],[$,O]],block:[["#inner",/{/,"@rest"],[w,/}/,"@break"],["#findAtrule"],["#findSelector"],[$,O]],inner:[[w,/{/],["#common"],["#findBlock"],["#props"],["#findAtrule"],["",/}/,"@back"]],atrule:[["#common"],["#url",/\burl\(/,"@rest"],[$,O],[n,/[^\s();]+/],[x,/[:;,]/],["#paren",/\(/,"@rest"]],paren:[[w,/^\(/],["#common"],["#paren",/\(/,"@rest"],[w,/\)/,"@break"],["#props"]],selector:[["#common"],[y,/[>+~]/],[w,/[[\]()]/],[x,/=/],[e,/::?\S+/],[e,/[\W\d]\S+/],[o,/\b[a-z]+|\*/i],[e,/\S+/]],url:[["#common"],[v,/^url/],[w,/\(/],[p,/[^)]+/],[w,/\)/,"@break"]],props:[[u,/[a-z0-9-_\xA0-\uFFFF]+(?=:)/i],["#url",/\burl\(/,"@rest"],[v,/\b[\w-]+(?=\()\b/],[t,/!important|\b(?:initial|inherit|unset)/],[u,/[a-z0-9-]+(?=:)/],[g,/#([0-9a-f]{6}|[0-9a-f]{3})/i],[g,/\bU\+[0-9a-f?-]+/i],[g,/[+-]?(\d+\.?\d*|\d*\.?\d+)/],[x,/[:;,]/],["#paren",/\(/,"@rest"],[w,/[[\])]/],[$,O]]}}}function P(){return{id:"javascript",name:"JavaScript",alias:["js"],source:{func:/[_$a-z\xA0-\uFFFF][_$a-z0-9\xA0-\uFFFF]*/},grammar:{main:[[p,B],[p,R],["#backtick",/`/,"@rest"],[r,H],[r,J],[S,/\/(\[.*?]|\\\/|.)+?\/[gimsuy]*/],[t,L],[t,/\b(?:as|async|await|case|catch|const|debugger|default|delete|enum|export|from|import|let|package|private|protected|public|super|switch|static|this|typeof|undefined|var|void|with|yield)\b/],[t,/\b((get|set)(?=\s+%func))/i],[b,/\b[A-Z][\w$]*\b/],[v,/%func(?=\s*\()/i],[h,D],[k,/@[^\s(@]+/],[m,/\b[a-z_$][\w$]*\b/],[g,q],[y,/=>/],[y,/\+[+=]?|-[-=]?|\*\*?=?|[/%^]=?|&&?=?|\|\|?=?|\?\??=?|<<?=?|>>>=?|>>?=?|[!=]=?=?|[~:^]/],[w,E],[x,/[;.,]+/],[$,O]],backtick:[[p,/^`/],[p,/(\$[^{]|\\[$`]|[^`$])+/],["#expression",/\${/,"@rest"],[p,/`/,"@break"]],expression:[[x,/^\${/],[x,/}/,"@break"],["#main"]]}}}function U(t){var e,n,e=j((n=((e=void 0===(e=t=void 0===t?{}:t)?{}:e).script||P)(),t=(e.style||M)(),e=[l,/<!\[CDATA\[[\s\S]*\]\]>/i],n.grammar.main.unshift(e),t.grammar.main.unshift(e),{id:"html",alias:["markup"],name:"HTML",use:{script:n,style:t},grammar:{main:[[r,/<!\x2D\x2D[\s\S]*?\x2D\x2D>/],[d,/<!DOCTYPE[\s\S]*?>/i],e,["#script",/<script[\s\S]*?>[\s\S]*?<\/script>/],["#style",/<style[\s\S]*?>[\s\S]*?<\/style>/],["#tag",/<[\s\S]*?>/],[f,/&[\da-z]+;|&#\d+;/i],[$,O]],script:[["#tag",/^<script[\s\S]*?>/],e,["@script",/[\s\S]+(?=<\/script>)/],["#tag",/<\/script>/]],style:[["#tag",/^<style[\s\S]*?>/],["@style",/[\s\S]+(?=<\/style>)/],["#tag",/<\/style>/]],tag:[["#closeTag",/<\/.+>/],["#tagContent"]],closeTag:[[s,/[^\s/<>"'=]+/],["#tagContent"]],tagContent:[["#attr",/[\t\n\r ]+[\s\S]+(?=[\t\n\r \/>])/],[o,/[^\s/<>"'=]+/],[w,/[<>]/],[x,/[/]/]],attr:[[$,O],[c,/(['"])(\\\1|.)*?\1/],[x,/[/=]/],[a,/[^\s/>"'=]+/]]}}),{id:"vue",name:"Vue",alias:[]});return e.grammar.main.push(["@script",/{{[\s\S]*?}}/]),e}var V=function(t){var e,n;function r(){return t.apply(this,arguments)||this}return n=t,(e=r).prototype=Object.create(n.prototype),i(e.prototype.constructor=e,n),r.prototype.run=function(t,e){for(var n=this.tokenize(t,e),r=0;r<n.length;r++)for(var i=n[r],o=0,s=0;s<i.length;s++){var a=i[s],u=a[1].length,c=a[2],f="rc__token rc__"+a[0].split(".")[0],l=a[1].replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");a[2]={category:a[0],code:a[1],html:'<code class="'+f+'">'+l+"</code>",from:o,to:o+u,index:s,state:c.state,depth:c.depth,head:c.head,tail:c.tail,distance:c.distance,language:c.language,split:c.split},o+=u}return n},r}(function(){function t(t){this.language=t,this.init(t)}var e=t.prototype;return e.init=function(n){var r=this;F(n.grammar,function(t,e){n.grammar[e]=r.merge(n,t)}),F(n.use,this.init.bind(this))},e.merge=function(e,t){for(var r=[],n=0;n<t.length;n++){var i=t[n],o=t[n],s=o[0],a=o[1];_(s,"#")&&!a?r.push.apply(r,this.merge(e,e.grammar[s.slice(1)])):function(){var t=a.toString().match(/[gimsy]*$/)[0].replace(/[gy]/g,""),n=a.source+(z?"":"|()");F(e.source,function(t,e){n=n.replace(new RegExp("%"+e,"g"),t.source)}),i[1]=new RegExp(n,(z?"y":"g")+t),r.push(i)}()}return r},e.parse=function(t,e,n,r){var i=0,o=0;this.depth++;t:for(;i<t.length&&!this.aborted;){for(var s=0;s<n.length;s++){var a=n[s],u=a[1],c=a[2];u.lastIndex=i;u=u.exec(t);if(u&&u[0]){if(o<i&&this.push([C,t.slice(o,i)],e,r),"@back"===c){o=i;break t}o=i+=this.handle(u,e,a,r)||1;if("@break"===c)break t;continue t}}i++}return o<i&&this.push([C,t.slice(o)],e,r),this.depth--,i},e.push=function(t,e,n){for(var r=this.depth,i=t[0],o=t[1],s=this.index,a=0,u=0;-1<a&&!this.aborted;){var a=o.indexOf("\n",u),c=this.lines[this.index],f=u===a&&!c.length,l=f?"\n":o.slice(u,a<0?void 0:a),d={depth:r,language:e.id,state:n};l&&(i!==C&&(d.head=-1<a&&!u,d.tail=a<0&&!!u,d.split=-1<a||!!u,d.distance=this.index-s),c.push([i===C&&f?"lb":i,l,d])),-1<a&&(this.index++,this.aborted=this.limit&&this.index>=this.limit,this.aborted||(u=a+1,this.lines[this.index]=[]))}},e.handle=function(t,e,n,r){var i=n[0];if(!i)return 0;var o=t[0];if("@debug"===n[3]&&console.log(o,n),_(i,"@")){T(e.use);var s=e.use[i.slice(1)];return T(s),this.parse(o,s,s.grammar.main,i)}if(_(i,"#")){s=e.grammar[i.slice(1)];return T(s),"@rest"===n[2]&&(o=t.input.slice(t.index)),this.parse(o,e,s,i)}return this.push([i,o],e,r),o.length},e.tokenize=function(t,e){return this.lines=[[]],this.index=0,this.depth=-1,this.limit=e||0,this.aborted=!1,this.parse(t,this.language,this.language.grammar.main,"#main"),this.lines},t}());function W(t,e){return-1<t.indexOf(e)}function Y(r){for(var t=arguments.length,e=new Array(1<t?t-1:0),n=1;n<t;n++)e[n-1]=arguments[n];return e.forEach(function(n){var t;null!==(t=n)&&"object"==typeof t&&function(t,e){if(t)for(var n=Object.keys(t),r=0;r<n.length&&!1!==e(t[n[r]],n[r]);r++);}(n,function(t,e){void 0!==n[e]&&(r[e]=n[e])})}),r}function Z(){var t=M();return Y({id:t.id,language:t,lexer:new V(t)},{lineComment:["/*","*/"],blockComment:["/*","*/"],multiline:[["/*","*/",r]],indent:[[/{$/,/^}/,t=["!comment","!string"]]],autoClose:[["(",")",t={close:t,skip:t,remove:t}],["[","]",t],["{","}",t],["'","'",t={close:"@quotes",skip:"@quotes",remove:"@quotes"}],['"','"',t]]})}function G(){var t=P();return Y({id:t.id,language:t,lexer:new V(t)},{lineComment:["//",""],blockComment:["/*","*/"],multiline:[["`","`",p,"#backtick"],["/*","*/",r]],indent:[[/\($/,/^\)/,t=["!comment","!string"]],[/\[$/,/^]/,t],[/{$/,/^}/,t]],autoClose:[["(",")",t={close:t,skip:t,remove:t}],["[","]",t],["{","}",t],["'","'",t={close:"@quotes",skip:"@quotes",remove:"@quotes"}],['"','"',t],["`","`",{close:I,skip:K,remove:K}]]})}function I(t){var e=t.Components,n=e.Input,t=n.info;if(t&&t.category===p)return!1;n=n.after;return!e.Scope.isIn("comment")&&(!n||/^\s/.test(n))}function K(t){var e=t.Components,t=e.Selection.get().start,e=e.Code.lines.getInfoAt(t);return!(!e||e.category!==p)&&0===(e=[(t=t)[0],e.to-1],t[0]-e[0]||t[1]-e[1])}var N=["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],Q=500;function X(t){t=t.Components;return t.Scope.isIn(["#attr","#tag","#openTag","!value"])&&/(^|[ \t])[^\s/<>"'=]+=$/.test(t.Input.before)}function tt(t){return!!it(t)}function et(t,e,n){t=t.Components;if(t.Scope.isIn(["#attr"])){if(n)return!0;t=t.Input;return new RegExp("=\\s*?"+e[0]+"$").test(t.before)}}function nt(t,e){return et(t,e,!1)}function rt(t,e){return et(t,e,!0)}function it(t){var e=t.Components,n=e.Selection.get(),r=n.start[1]-1;if(0<=r){var i=e.Code,t=e.Code.lines,e=n.start[0],n=t.getInfoAt([e,r]);if(n&&n.category===w&&">"===n.code){r=t.scanUp([e,n.from],[w,/</]),t=r.row,r=r.info,n=i.sliceRange([t,r.from],[e,n.to]),n=/<([^\s/<>"'=]+)/.exec(n);if(n&&!W(N,n[1]))return n[1]}}}function ot(t){t=it(t);return t?"</"+t+">":""}function st(t){var e=t.Components,n=e.Selection.get().start,t=e.Code.lines,e=t.scanUp(n,[s,/./],null,0,Q),n=t.scanUp(n,[o,/./],null,0,Q);if(n&&e&&(n.row-e.row||n.info.from-e.info.from)<0)return">";n=n.info.code;return W(N,n)?">":n+">"}function at(t){var e=(t=void 0===t?{}:t).script||{language:G(),use:{config:G(),code:"<script>",depth:2}},n=t.style||{language:Z(),use:{config:Z(),code:"<style>",depth:2}},t=U({script:function(){return e.language.language},style:function(){return n.language.language}});return Y({id:t.id,language:t,lexer:new V(t),use:((t={})[e.language.id]=e.use,t[n.language.id]=n.use,t)},{lineComment:["\x3c!--","--\x3e"],blockComment:["\x3c!--","--\x3e"],multiline:[["\x3c!--","--\x3e",r]],indent:[[tt,/^<\/\w+/]],autoClose:[["'","'",t={close:nt,skip:rt,remove:rt}],['"','"',t],[">",ot],["/",st],["=",'""',{close:X,offset:1}]]})}"undefined"!=typeof window&&window.RyuseiCode&&window.RyuseiCode.register(at())});