@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) • 3.48 kB
JavaScript
!function(t,i){"function"==typeof define&&define.amd?define([],i):"undefined"!=typeof exports?i():(i(),t.unknown={})}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,function(){"use strict";function r(t,i){return(r=Object.setPrototypeOf||function(t,i){return t.__proto__=i,t})(t,i)}
/*!
* 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 v="text";function h(t,i){if(t)for(var n=Object.keys(t),e=0;e<n.length;e++)i(t[n[e]],n[e])}function f(t,i){if(void 0===i&&(i=""),!t)throw new Error(i)}function a(t,i){return t.charAt(0)===i}var u=!(void 0===/x/.sticky);var t,i=function(t){var i,n;function e(){return t.apply(this,arguments)||this}return n=t,(i=e).prototype=Object.create(n.prototype),r(i.prototype.constructor=i,n),e.prototype.run=function(t,i){for(var n=this.tokenize(t,i),e=0;e<n.length;e++)for(var r=n[e],s=0,o=0;o<r.length;o++){var f=r[o],h=f[1].length,a=f[2],u="rc__token rc__"+f[0].split(".")[0],c=f[1].replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");f[2]={category:f[0],code:f[1],html:'<code class="'+u+'">'+c+"</code>",from:s,to:s+h,index:o,state:a.state,depth:a.depth,head:a.head,tail:a.tail,distance:a.distance,language:a.language,split:a.split},s+=h}return n},e}(function(){function t(t){this.language=t,this.init(t)}var i=t.prototype;return i.init=function(n){var e=this;h(n.grammar,function(t,i){n.grammar[i]=e.merge(n,t)}),h(n.use,this.init.bind(this))},i.merge=function(i,t){for(var e=[],n=0;n<t.length;n++){var r=t[n],s=t[n],o=s[0],f=s[1];a(o,"#")&&!f?e.push.apply(e,this.merge(i,i.grammar[o.slice(1)])):function(){var t=f.toString().match(/[gimsy]*$/)[0].replace(/[gy]/g,""),n=f.source+(u?"":"|()");h(i.source,function(t,i){n=n.replace(new RegExp("%"+i,"g"),t.source)}),r[1]=new RegExp(n,(u?"y":"g")+t),e.push(r)}()}return e},i.parse=function(t,i,n,e){var r=0,s=0;this.depth++;t:for(;r<t.length&&!this.aborted;){for(var o=0;o<n.length;o++){var f=n[o],h=f[1],a=f[2];h.lastIndex=r;h=h.exec(t);if(h&&h[0]){if(s<r&&this.push([v,t.slice(s,r)],i,e),"@back"===a){s=r;break t}s=r+=this.handle(h,i,f,e)||1;if("@break"===a)break t;continue t}}r++}return s<r&&this.push([v,t.slice(s)],i,e),this.depth--,r},i.push=function(t,i,n){for(var e=this.depth,r=t[0],s=t[1],o=this.index,f=0,h=0;-1<f&&!this.aborted;){var f=s.indexOf("\n",h),a=this.lines[this.index],u=h===f&&!a.length,c=u?"\n":s.slice(h,f<0?void 0:f),d={depth:e,language:i.id,state:n};c&&(r!==v&&(d.head=-1<f&&!h,d.tail=f<0&&!!h,d.split=-1<f||!!h,d.distance=this.index-o),a.push([r===v&&u?"lb":r,c,d])),-1<f&&(this.index++,this.aborted=this.limit&&this.index>=this.limit,this.aborted||(h=f+1,this.lines[this.index]=[]))}},i.handle=function(t,i,n,e){var r=n[0];if(!r)return 0;var s=t[0];if("@debug"===n[3]&&console.log(s,n),a(r,"@")){f(i.use);var o=i.use[r.slice(1)];return f(o),this.parse(s,o,o.grammar.main,r)}if(a(r,"#")){o=i.grammar[r.slice(1)];return f(o),"@rest"===n[2]&&(s=t.input.slice(t.index)),this.parse(s,i,o,r)}return this.push([r,s],i,e),s.length},i.tokenize=function(t,i){return this.lines=[[]],this.index=0,this.depth=-1,this.limit=i||0,this.aborted=!1,this.parse(t,this.language,this.language.grammar.main,"#main"),this.lines},t}());"undefined"!=typeof window&&window.RyuseiCode&&window.RyuseiCode.register({id:(t={id:"none",name:"",grammar:{main:[]}}).id,language:t,lexer:new i(t)})});