@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) • 6.54 kB
JavaScript
!function(t,n){"function"==typeof define&&define.amd?define([],n):"undefined"!=typeof exports?n():(n(),t.unknown={})}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(){"use strict";function r(t,n){return(r=Object.setPrototypeOf||function(t,n){return t.__proto__=n,t})(t,n)}
/*!
* 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 i="keyword",o="comment",s="identifier",a="string",u="number",c="boolean",f="function",h="class",d="decorator",l="regexp",b="operator",v="bracket",p="delimiter",m="space",g="text";function y(t){return void 0===t}function w(t,n){if(t)for(var e=Object.keys(t),i=0;i<e.length;i++)n(t[e[i]],e[i])}function k(i){for(var t=arguments.length,n=new Array(1<t?t-1:0),e=1;e<t;e++)n[e-1]=arguments[e];return n.forEach(function(e){var t;null!==(t=e)&&"object"==typeof t&&w(e,function(t,n){y(e[n])||(i[n]=e[n])})}),i}function $(t,n){if(void 0===n&&(n=""),!t)throw new Error(n)}function x(t,n,e){n=function(t,n){for(var e=0;e<t.length;e++)if(t[e][0]===n)return e;return-1}(t,n);-1<n?t.splice.apply(t,[n,0].concat(e)):t.push.apply(t,e)}function F(t,n){return t.charAt(0)===n}var j=!y(/x/.sticky),_=/[+-]?(\d+\.?\d*|\d*\.?\d+)([eE][+-]?\d+)?/,A=/\b(?:true|false)\b/,z=/[[\]{}()]/,E=/[ \t]+/,O=/'(?:\\'|.)*?'/,q=/"(?:\\"|.)*?"/,C=/\/\*[\s\S]*?(\*\/|$)/,S=/\/\/.*/,T=/\b(?:break|catch|class|continue|do|else|extends|finally|for|function|if|implements|in|instanceof|interface|new|null|return|throw|try|while)\b/;function n(){var t=k({id:"javascript",name:"JavaScript",alias:["js"],source:{func:/[_$a-z\xA0-\uFFFF][_$a-z0-9\xA0-\uFFFF]*/},grammar:{main:[[a,O],[a,q],["#backtick",/`/,"@rest"],[o,C],[o,S],[l,/\/(\[.*?]|\\\/|.)+?\/[gimsuy]*/],[i,T],[i,/\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/],[i,/\b((get|set)(?=\s+%func))/i],[h,/\b[A-Z][\w$]*\b/],[f,/%func(?=\s*\()/i],[c,A],[d,/@[^\s(@]+/],[s,/\b[a-z_$][\w$]*\b/],[u,_],[b,/=>/],[b,/\+[+=]?|-[-=]?|\*\*?=?|[/%^]=?|&&?=?|\|\|?=?|\?\??=?|<<?=?|>>>=?|>>?=?|[!=]=?=?|[~:^]/],[v,z],[p,/[;.,]+/],[m,E]],backtick:[[a,/^`/],[a,/(\$[^{]|\\[$`]|[^`$])+/],["#expression",/\${/,"@rest"],[a,/`/,"@break"]],expression:[[p,/^\${/],[p,/}/,"@break"],["#main"]]}},{id:"typescript",name:"TypeScript",alias:["ts"]}),n=t.grammar,e=n.main;return x(e,i,[[i,/\b(?:declare|keyof|namespace|readonly|type|string|number|boolean|bigint|symbol|object|any|never|unknown|infer|is)\b/]]),x(e,f,[["#functions",/([_$a-z\xA0-\uFFFF][_$a-z0-9\xA0-\uFFFF]*)?(?:<[^>]+?>)?\s*?\(/]]),k(n,{functions:[[f,/^[\w$]+/]].concat(e.filter(function(t){return"#functions"!==t[0]}))}),t}var e=function(t){var n,e;function i(){return t.apply(this,arguments)||this}return e=t,(n=i).prototype=Object.create(e.prototype),r(n.prototype.constructor=n,e),i.prototype.run=function(t,n){for(var e=this.tokenize(t,n),i=0;i<e.length;i++)for(var r=e[i],o=0,s=0;s<r.length;s++){var a=r[s],u=a[1].length,c=a[2],f="rc__token rc__"+a[0].split(".")[0],h=a[1].replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");a[2]={category:a[0],code:a[1],html:'<code class="'+f+'">'+h+"</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 e},i}(function(){function t(t){this.language=t,this.init(t)}var n=t.prototype;return n.init=function(e){var i=this;w(e.grammar,function(t,n){e.grammar[n]=i.merge(e,t)}),w(e.use,this.init.bind(this))},n.merge=function(n,t){for(var i=[],e=0;e<t.length;e++){var r=t[e],o=t[e],s=o[0],a=o[1];F(s,"#")&&!a?i.push.apply(i,this.merge(n,n.grammar[s.slice(1)])):function(){var t=a.toString().match(/[gimsy]*$/)[0].replace(/[gy]/g,""),e=a.source+(j?"":"|()");w(n.source,function(t,n){e=e.replace(new RegExp("%"+n,"g"),t.source)}),r[1]=new RegExp(e,(j?"y":"g")+t),i.push(r)}()}return i},n.parse=function(t,n,e,i){var r=0,o=0;this.depth++;t:for(;r<t.length&&!this.aborted;){for(var s=0;s<e.length;s++){var a=e[s],u=a[1],c=a[2];u.lastIndex=r;u=u.exec(t);if(u&&u[0]){if(o<r&&this.push([g,t.slice(o,r)],n,i),"@back"===c){o=r;break t}o=r+=this.handle(u,n,a,i)||1;if("@break"===c)break t;continue t}}r++}return o<r&&this.push([g,t.slice(o)],n,i),this.depth--,r},n.push=function(t,n,e){for(var i=this.depth,r=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,h=f?"\n":o.slice(u,a<0?void 0:a),d={depth:i,language:n.id,state:e};h&&(r!==g&&(d.head=-1<a&&!u,d.tail=a<0&&!!u,d.split=-1<a||!!u,d.distance=this.index-s),c.push([r===g&&f?"lb":r,h,d])),-1<a&&(this.index++,this.aborted=this.limit&&this.index>=this.limit,this.aborted||(u=a+1,this.lines[this.index]=[]))}},n.handle=function(t,n,e,i){var r=e[0];if(!r)return 0;var o=t[0];if("@debug"===e[3]&&console.log(o,e),F(r,"@")){$(n.use);var s=n.use[r.slice(1)];return $(s),this.parse(o,s,s.grammar.main,r)}if(F(r,"#")){s=n.grammar[r.slice(1)];return $(s),"@rest"===e[2]&&(o=t.input.slice(t.index)),this.parse(o,n,s,r)}return this.push([r,o],n,i),o.length},n.tokenize=function(t,n){return this.lines=[[]],this.index=0,this.depth=-1,this.limit=n||0,this.aborted=!1,this.parse(t,this.language,this.language.grammar.main,"#main"),this.lines},t}());function R(i){for(var t=arguments.length,n=new Array(1<t?t-1:0),e=1;e<t;e++)n[e-1]=arguments[e];return n.forEach(function(e){var t;null!==(t=e)&&"object"==typeof t&&function(t,n){if(t)for(var e=Object.keys(t),i=0;i<e.length&&!1!==n(t[e[i]],e[i]);i++);}(e,function(t,n){void 0!==e[n]&&(i[n]=e[n])})}),i}function J(t){var n=t.Components,e=n.Input,t=e.info;if(t&&t.category===a)return!1;e=e.after;return!n.Scope.isIn("comment")&&(!e||/^\s/.test(e))}function Z(t){var n=t.Components,t=n.Selection.get().start,n=n.Code.lines.getInfoAt(t);return!(!n||n.category!==a)&&0===(n=[(t=t)[0],n.to-1],t[0]-n[0]||t[1]-n[1])}function t(){var t=n();return R({id:t.id,language:t,lexer:new e(t)},{lineComment:["//",""],blockComment:["/*","*/"],multiline:[["`","`",a,"#backtick"],["/*","*/",o]],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:J,skip:Z,remove:Z}]]})}"undefined"!=typeof window&&window.RyuseiCode&&window.RyuseiCode.register(t())});