markuno_lib 1.0.63 → 1.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/marked.js +1 -1
- package/bin/markuno.js +1 -1
- package/package.json +1 -1
package/bin/marked.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function escape(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function replace(e,t){return e=e.source,t=t||"",function self(s,r){return s?(r=(r=r.source||r).replace(/(^|[^\[])\^/g,"$1"),e=e.replace(s,r),self):new RegExp(e,t)}}function noop(){}function merge(e){for(var t,s,r=1;r<arguments.length;r++)for(s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}noop.exec=noop;var e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-])/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};e.item=replace(e.item,"gm")(/bull/g,e.bullet)(),e.list=replace(e.list)(/bull/g,e.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+e.def.source+")")(),e.blockquote=replace(e.blockquote)("def",e.def)(),e._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",e.html=replace(e.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,e._tag)(),e.paragraph=replace(e.paragraph)("hr",e.hr)("heading",e.heading)("lheading",e.lheading)("blockquote",e.blockquote)("tag","<"+e._tag)("def",e.def)(),e.normal=merge({},e),e.gfm=merge({},e.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/,formula:/^ *(\${2,})([\s\S]*?)\s*\1 *(?:\n+|$)/}),e.gfm.paragraph=replace(e.paragraph)("(?!","(?!"+e.gfm.fences.source.replace("\\1","\\2")+"|"+e.list.source.replace("\\1","\\3")+"|")(),e.tables=merge({},e.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :0123456789]*)\n((?: *\|.*(?:\n|$))*)\n*/});var t={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,blink:/^\[\[([\s\S]+?)\]\](?!\])/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,ico:/^\:\:([\s\S]+?)\:\:/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,colorbase:noop,coloralt:noop,text:/^[\s\S]+?(?=[\\<!\[_*\:`]| {2,}\n|$)/,_inside:/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/,_href:/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/};t.link=replace(t.link)("inside",t._inside)("href",t._href)(),t.reflink=replace(t.reflink)("inside",t._inside)(),t.normal=merge({},t),t.pedantic=merge({},t.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),t.gfm=merge({},t.normal,{escape:replace(t.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~~(?=\S)([\s\S]*?\S)~~~/,colorbase:/^~(?=\S)([\s\S]*?\S)~/,coloralt:/^~~(?=\S)([\s\S]*?\S)~~/,formula:/^\$(?=\S)([\s\S]*?\S)\$/,text:replace(t.text)("]|","~$]|")("|","|https?://|")()}),t.breaks=merge({},t.gfm,{br:replace(t.br)("{2,}","*")(),text:replace(t.gfm.text)("{2,}","*")()});const s={s:"subtitle",k:"keywords",g:"gruppo",e:"editore",y:"datapub",d:"datapub",p:"priority",a:"autore",u:"base",t:"title",l:"link",i:"img","#":"title"};const r=new class AliasInfo{constructor(){this.alias=JSON.parse(JSON.stringify(s)),this.check()}check(){var e=new Set,checkr=t=>{t&&t.length>2&&!e.has(t)&&e.add(t)};for(var t in this.alias)this.alias[t]?(checkr(t),checkr(this.alias[t])):delete this.alias[t];this.retoalias=function retroalias(e){var t={};for(var s in e)e[s]&&(t[e[s]]=s);return t}(this.alias),e=`^\\s*\\:(${(e=[...e]).join("|")}|\\w{1,2})\\:(.*)$`,this.regex=e}add(e,t){return e&&(this.alias[e]=t,this.check()),this}removeAll(){return this.alias={},this.check(),this}setmappa(e){for(var t in this.alias={},e)this.alias[t]=e[t];this.alias["#"]||(this.alias["#"]="title"),this.check()}parse(e,t,s){s&&this.setmappa();var r=e,n={};t&&((n=Object.assign(n,t)).info=!0),(o=/^\s*\#\s+(.*?)\s*$/im.exec(r))&&(n[this.alias["#"]]=o[1].toLowerCase());for(var i=0;i<20;i++){if(!(o=/:::(.*)([^]+?):::/im.exec(r)))break;var a=o[1];a||(a=i+""),n.comments||(n.comments=[]),n.comments.push({k:a,v:o[2]}),r=r.substr(o.index+o[0].length)}r=e;var l=new RegExp(this.regex,"im");for(i=0;i<50;i++){var o;if(!((o=l.exec(r))&&o.length>=2))break;r=r.substr(o.index+o[0].length),n.info=!0;var c=(o[2]||"").trim(),p=this.alias[o[1].toLowerCase()];p||(p=o[1].toLowerCase()),"l"==p||"link"==p?(n[p]||(n[p]=[]),n[p].push(c)):n[p]=c}return n}};var tokenize=(t,s,n=!1)=>{function _parsetable(e,t){var s,r={type:"table",headers:[],align:[],cells:[],cols:0},n=t.split("\n"),i=!1;function checkcols(e){if(r.cols<e){for(var t=r.cols;t<e;t++)for(var s of(r.align[t]="left",r.headers[t]=[],r.cells))s[t]=[];r.cols=e}}for(var a of n)if((a=a.trim()).length)if(a.length>2&&a.startsWith("|")&&a.endsWith("|")&&(a=a.slice(1,-1)),checkcols((s=a.split("|")).length),0==i&&/^[\- :]+\|[\- :\|]*$/im.test(a)){for(var l=0;l<s.length;l++){var o=(u=s[l]).slice(0,1),c=u.slice(-1);r.align[l]=":"==o&&":"==c?"center":":"==c?"right":"left"}i=!0}else{var p=[];for(l=0;l<s.length;l++){var u=s[l];if(i){var g=[];_tokenize(g,u,!1),p.push(g)}else _tokenize(r.headers[l],u,!1)}i&&r.cells.push(p)}e.push(r)}function _pushtoken(e,t){var s=/^([\d\.]+)\s*/.exec(t),r="",n="";s&&(r=s[1],t=t.substring(s.index+s[0].length)),(s=/^([\w\s]*?):.*$/gim.exec(t))&&(n=s[1],t=t.substring(s.index+s[1].length)),e.push({type:"list_item_start",num:r}),n&&(e.push({type:"list_title_start"}),_tokenize(e,n,!1),e.push({type:"list_title_end"})),t=t.replace(/\n +/gim,"<br>"),_tokenize(e,t,!1),e.push({type:"list_item_end"})}function _parselista(e,t,s,r){var n=[s];for(e.push({type:"list_start",ordered:t});;){var i=/^( *)([*\-+])[\s$]/im.exec(r);if(!i){_pushtoken(e,r);break}i.index&&_pushtoken(e,r.substring(0,i.index));var a=i[1].length;if(a>n[n.length-1])e.push({type:"list_start",ordered:t}),n.push(a);else for(;;){var l=n[n.length-1];if(1==n.length||l<=a)break;e.push({type:"list_end"}),n.pop()}r=r.substring(i.index+i[0].length)}for(var o of n)e.push({type:"list_end"})}var _tokenize=(e,t,r,n)=>{var a;for(t=t.replace(/^ +$/gm,"");t;){if(s){var l=0;for(var o of e)o.text||o.html?l=l+o.text.length+2:l+=3;if(l>s)break}if((a=i.newline.exec(t))&&(t=t.substring(a[0].length),a[0].length>1&&e.push({type:"space"})),a=i.formula.exec(t))t=t.substring(a[0].length),e.push({type:"code",lang:"math",text:a[2]||""});else if(a=/^(\s*`{3})(.*)([^]+?)(`{3})/gim.exec(t)){a.index>0&&_tokenize(e,t.substring(0,a.index),r);var c=(a[3]||"").replace(/^\n/,"").replace(/\n+$/,"");e.push({type:"code",lang:a[2],text:c}),t=t.substring(a.index+a[0].length)}else if(a=i.heading.exec(t))t=t.substring(a[0].length),e.push({type:"heading",depth:a[1].length,text:a[2]});else if(r&&(a=/^\|.*\|\s*(?:\n\|.*\|)+/gim.exec(t)))a.index>0&&_tokenize(e,t.substring(0,a.index),r),_parsetable(e,a[0]),t=t.substring(a.index+a[0].length);else if(r&&(a=/^(.*?\|.*\n\|?[\-: ]+\|[\-\| :]*\n.*?\|[^]*?)[\n\n|\n^\|]/gim.exec(t)))a.index>0&&_tokenize(e,t.substring(0,a.index),r),_parsetable(e,a[1]),t=t.substring(a.index+a[0].length);else if(a=i.lheading.exec(t))t=t.substring(a[0].length),e.push({type:"heading",depth:"="===a[2]?1:2,text:a[1]});else if(a=i.hr.exec(t))t=t.substring(a[0].length),e.push({type:"hr"});else if(a=i.blockquote.exec(t))t=t.substring(a[0].length),e.push({type:"blockquote_start"}),_tokenize(e,a[0].replace(/^ *> ?/gm,""),r,!0),e.push({type:"blockquote_end"});else if((a=/^[\s-:]*?\|[\s-:\|]*/im.exec(t))||!(a=/^( *)([*\-+])[\s$]/im.exec(t))){if(a=i.html.exec(t))t=t.substring(a[0].length),e.push({type:"html",pre:"pre"===a[1]||"script"===a[1]||"style"===a[1],text:a[0]});else if(!n&&r&&(a=i.def.exec(t)))t=t.substring(a[0].length),e.push({type:"code",text:`??${a[0]}??${i.def}??`});else if(r&&(a=i.paragraph.exec(t)))t=t.substring(a[0].length),e.push({type:"paragraph",text:"\n"===a[1].charAt(a[1].length-1)?a[1].slice(0,-1):a[1]});else if(a=i.text.exec(t))t=t.substring(a[0].length),e.push({type:"text",text:a[0]});else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{a.index>0&&_tokenize(e,t.substring(0,a.index)),t=t.substring(a.index+a[0].length);var p=/([^]*?)(\n\n|\n\s*[#\>])/im.exec(t+"\n\n");p?(_parselista(e,"*"==a[2],a[1].length,p[1]),t=t.substring(p[1].length)):e.push({type:"text??",text:a[0]})}}return e},i=e.tables;return t=function removeInfo(e,t=!1){var s=e.replace(/:::([^]+?):::/gim,"").replace(new RegExp(r.regex,"gim"),"").replace(/^\s*#\s+/im,"# ").replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");if(t){const e=/(^\s*\#\s+(.*)?\s*)$/im;var n=e.exec(s);n&&0==n.index&&(s=s.replace(e,""))}return s}(t,n),_tokenize([],t,!0)},n={string:/(".*?[^\\]"|'.*?[^\\]'|`[^]*?[^\\]`|""|''|``)/m,puntuaction:/(-[-=]?|,|;|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3})/g,parentesis:/(\(|\)|\[|\]|\{|\})/g,ingraffe:/([^$])(\{)(.*?)(\})/g,regex:/\/.*?[^\\]\/[gimu]*/m,numbers:/\b((?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?)/gi,js:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword:/(\b)(import|require|endif|include|define|float|int|real|char|bool|as|true|false|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)(\b)/g,keyword2:/(\.\w+|\w+\:)/g},json:{string:/(".*?[^\\]")/m,string1:/(".*?[^\\]"\s*:)/m},html:{script:/(<script[\s\S]*?>)([^]*?)(<\/script>)/im,tag:/\<(!DOCTYPE|\/?\w+)([^]*?)(\/?\>)/im,intag:/(\b)([\w-]+)(=)/g,comments:/\<\!--[^]*?--\>/im},bash:{comments:/# .*/,keyword1:/(^ *|\; *)(\w+)(\b)/g,keyword:/(\b)(sudo *[\w-]+)(\b)/g},sql:{keyword:".",keyword2:/(\b)(FROM|USING|FTS5|NVARCHAR|INTEGER|REAL|BLOB|DELETE|UPDATE|BEGIN|END|ADD|CREATE|CONSTRAINT|ALTER|COLUMN|TABLE|ALL|ASC|BETWEEN|CASE|CHECK|COLUMN|INDEX|VIEW|PROCEDURE|DESC|DISTINTC|DROP|OUTER|INNER|LEFT|JOIN|INSERT|INTO|[NOT ]*NULL|LIMIT|SELECT|ORDER BY|UNION|WHERE)(\b)/gi,keyword1:/(\b)(COLLATE|NOCASE|DEFAULT|IF [NOT ]*EXISTS|PRIMARY KEY|VALUES|AS)(\b)/gi,comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/))|(--\s.*))/m}};function elang(e,t,s,r){var n;return r&&(n=r.length,r.push(e)),`<pre class="elang relative"><div class="absolute clipboard top-1 right-1 w-5 h-5 " data="${n}"></div>${xelang(e,t,s)}</pre>`}const escapeTag=e=>e.replace(/[<>]/g,(e=>({"<":"<",">":">"}[e]))),escapeHTML=e=>e.replace(/[&<>'"]/g,(e=>({"&":"&","<":"<",">":">","'":"'",'"':"""}[e]))),unescapeHTML=e=>e.replace(/\&\;/g,"&").replace(/\"\;/g,'"').replace(/\'\;/g,"'").replace(/\>\;/g,">").replace(/\<\;/g,"<");function xelang(e,t,s){var gspan=(e,t)=>(t&&(t=t.replace(/(\b)(\w+)(\b)/g,"$1_$2$3")),`☉☊${t||""}☊☉${(e=escapeTag(e))||""}☉☋`),regex=e=>{if(n[t]){if("."==(s=n[t][e]))return;if(s)return s}var s;return"."==(s=n[e])?void 0:s},r=[],i=0,a=[];if(t){if(n[t]||(t="js"),c=regex("script")){for(var l=[];;){if(!(p=c.exec(e)))break;p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★K${a.length}★★`),a.push(xelang(p[1],t)+xelang(p[2],"js")+xelang(p[3],t)),e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}for(var i of[{r:"comments",s:"C"}]){if(c=regex(i.r)){for(l=[];;){if(!(p=c.exec(e)))break;if(p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★${i.s}${a.length}★★`),"html"==t){var o=p[0].replace(/\</g,"<").replace(/\>/g,">");a.push(o)}else a.push(p[0]);e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}}for(var i of[{r:"string2",s:"A"},{r:"string1",s:"B"},{r:"string",s:"S"},{r:"tag",s:"T"},{r:"regex",s:"R"}]){var c;if(c=regex(i.r)){for(l=[];;){var p;if(!(p=c.exec(e)))break;if(p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★${i.s}${a.length}★★`),"T"==i.s){o=p[2].replace(regex("intag"),((e,t,s,r)=>t+gspan(s,"intag")+gspan(r,"punc")));a.push(gspan("<","punc")+p[1]+o+gspan(p[3],"punc"))}else if("`"==p[0][0]){o=p[0].replace(/(\${)(.*?)(})/gm,((e,t,s,r)=>gspan(t,"punc")+gspan(s,"word")+gspan(r,"punc")));a.push(o)}else a.push(p[0]);e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}}g=e.split("\n"),i=0;for(var u of g)i++,u=u.replace(regex("keyword"),((e,t,s,r)=>gspan(t,"tag")+gspan(s,"keys")+r)).replace(regex("keyword1"),((e,t,s,r)=>t+gspan(s,"keys1 keys")+r)).replace(regex("keyword2"),(e=>gspan(e,"keys2 keys"))).replace(regex("numbers"),(e=>gspan(e,"number"))).replace(regex("ingraffe"),((e,t,s,r,n)=>t+gspan(s,"punc")+gspan(r,"word")+gspan(n,"punc"))).replace(regex("puntuaction"),(e=>gspan(e,"punc"))).replace(/★★T(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"tag"))).replace(/★★S(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string"))).replace(/★★B(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string string1"))).replace(/★★A(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string string2"))).replace(/★★R(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"regex"))).replace(/★★C(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"comment"))).replace(/★★K(\d+)★★/gu,((e,t)=>a[Number(t)])),s?r.push(gspan((" "+i).substr(-4),"rowid")+gspan(u)):r.push(gspan(u))}else{var g=e.split("\n");for(var u of g)i++,s?r.push(`${gspan((" "+i).substr(-4),"rowid")}${gspan(u)}`):r.push(gspan(u))}var h=r.join("\n");return h=h.replace(/☉☋/gmu,"</span>").replace(/☉☊([^]*?)☊☉/gmu,((e,s)=>{if(s){var r=s.split(" "),n=[];for(var i of r)n.push(`elang_${t}${i}`),n.push(`elang${i}`);return`<span class="${n.join(" ")}">`}return"<span>"})),h}class Render{constructor(e,t){this.baseurl=e,this.easy=t}code(e,t,s){if(this.easy)return"";t||(t="js");var r=t==t.toUpperCase();return elang(e,t=t.toLowerCase(),r,s)}blockquote(e){return this.easy?e:`<blockquote>\n${e}</blockquote>\n`}html(e){return e}heading(e,t,s){return"."==e||"*"==e?"":this.easy?`${e} `:`<h${t}>${e}</h${t}>`}hr(){return this.easy?"":'<div class="my-4"><hr/></div>'}list(e,t){var s=t?"ol":"ul";return`<${s}>\n${e}</${s}>\n`}listtitle(e){return`<span class="listtitle">${e}</span>`}listitem(e,t){return t?`<li attr-num="${t||""}">${e}</li>\n`:`<li>${e}</li>\n`}paragraph(e){return this.easy?e:`<p>${e}</p>\n`}table(e,t){return this.easy?"":`<table>\n<thead>\n${e}\n</thead>\n<tbody>\n${t}\n</tbody>\n</table>\n\n`}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t,s){return t?`<th style="text-align:center;">${e}</th>\n`:`<td style="${s?"text-align:"+s+";":""}">${e}</td>`}colorbase(e){return`<span class='tilde'>${e}</span>`}formula(e,t=!1){if(this.easy)return"";var s=`<img class='inline px-2' src='https://math.croswil.com/f?${e=e.replace(/<\/?em>/g," ").replace(/\r/g,"").replace("/\n/g"," ")}' alt='${e}'/>`;return t?`<div class='flex justify-center'><div>${s}</div></div>`:s}coloralt(e){return`<span class='tilde2'>${e}</span>`}blink(e){}strong(e){return"<strong>"+e+"</strong>"}ico(e){return`<span class="font-ico">${e}</span>`}em(e){return"<em>"+e+"</em>"}codespan(e){return"<code>"+e+"</code>"}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,s){if(this.easy)return"("+s+")";"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1));var r="";return e.startsWith(".")?e=e.slice(1):r='target="_blank"',`<a ${r} href='${e}' title='${t||""}'>${s}</a>`}image(e,t,s){if(this.easy)return"";var r=s.split("|"),n="";let i=!1,a=!1,l=!1;if((e=(e=e.replace("https://www.youtube.com/watch?v=","https://youtu.be/")).replace("https://youtu.be","https://www.youtube.com/embed")).endsWith(".mp3")?(e=e.slice(0,-4),l=!0):e.endsWith(".mp4")?(e=e.slice(0,-4),a=!0):e.endsWith(".webm")?(e=e.slice(0,-5),i=!0):e.endsWith(".video")&&(e=e.slice(0,-6),i=!0,a=!0),l)n=`\n <audio controls ${r.length>=1?' width="'+r[1]+'"':""}\n class="mx-auto my-2 ${r.length>=2?r[2]:""}" \n >\n <source src="${e}.mp3" type="audio/mpeg">\n Il tuo browser non supporta l'elemento audio.\n </audio>\n `;else if(a||i)n=`\n<video ${r.length>=1?' width="'+r[1]+'"':""}\nclass="border rounded-lg shadow-xl ${r.length>=2?r[2]:""}" \ncontrols controlsList="nodownload" >\n ${i?'<source src="'+e+'.webm" type="video/webm" >':""}\n ${a?'<source src="'+e+'.mp4" type="video/mp4" >':""}\n \n Your browser does not support the video tag.\n</video>`;else{if(e.indexOf("https://www.youtu")>=0){var o=e.split("/embed/")[1]?.split("?")[0];return n=`\n\n<div style="width: 94%; box-shadow: 6px 6px 10px hsl(206.5, 0%, 75%); margin: 3%;">\n <div style="position: relative; padding-bottom: 56.15%; height: 0; overflow: hidden;">\n <iframe \n style="position: absolute; top: 0; left:0; width: 100%; height: 100%; border: 0;"\n loading="lazy";\n srcdoc="<style>\n * {\n padding: 0;\n margin: 0;\n overflow: hidden;\n }\n \n body, html {\n height: 100%;\n }\n \n img, svg {\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n margin: auto;\n }\n \n svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 70.7%, 8%));\n transition: all 250ms ease-in-out;\n }\n \n body:hover svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 0%, 10%));\n transform: scale(2);\n }\n </style>\n <a href='https://www.youtube.com/embed/${o}?autoplay=1'>\n <img src='https://img.youtube.com/vi/${o}/hqdefault.jpg' alt='${t||"video"}'>\n <svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 24 24' fill='none' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-play-circle'><circle cx='12' cy='12' r='10'></circle><polygon points='10 8 16 12 10 16 10 8'></polygon></svg>\n </a>\n "\n src="https://www.youtube.com/embed/${o}" \n title="${t||"video"}"\n frameborder="0"\n allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" \n allowfullscreen>\n </iframe>\n </div>\n </div> \n \n`}"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),n='<img src="'+e+'" alt="'+r[0]+'"',r.length>1&&(r[1].length&&(n+=' width="'+r[1]+'"'),r.length>2&&(n+=' class="'+r[2]+'"')),r[0]&&(n+=' title="'+r[0]+'"'),n+="/>"}return n}text(e){return e}}const i=t.gfm;var tokenparser=(e,t,s=0)=>{for(var r=0,checklen=e=>{if(s>0&&e.length>s-r){var t=(e=e.substring(0,s-r)).lastIndexOf(" ");t>0&&(e=e.substring(0,t))}return e},next=()=>a=n.pop(),parseText=()=>{for(var e=a.text;"text"===(n[n.length-1]||0).type;)e+="\n"+next().text;return output(checklen(e))},outputLink=(e,s)=>{var r=escape(s.href),n=s.title?escape(s.title):null;return"!"!==e[0].charAt(0)?t.link(r,n,output(e[1])):t.image(r,n,escape(e[1]))},output=e=>{for(var s,r,n,a,c="";e;)if(a=i.escape.exec(e))e=e.substring(a[0].length),c+=a[1];else if(a=i.autolink.exec(e))e=e.substring(a[0].length),n="@"===a[2]?`mailto:${r=":"===a[1].charAt(6)?a[1].substring(7):a[1]}`:r=escape(a[1]),c+=t.link(n,null,r);else if(a=i.blink.exec(e))e=e.substring(a[0].length),c+=t.blink(output(a[2]||a[1]));else if(l||!(a=i.url.exec(e))){if(a=i.tag.exec(e))!l&&/^<a /i.test(a[0])?l=!0:l&&/^<\/a>/i.test(a[0])&&(l=!1),e=e.substring(a[0].length),c+=a[0];else if(a=i.link.exec(e))e=e.substring(a[0].length),l=!0,c+=outputLink(a,{href:a[2],title:a[3]}),l=!1;else if((a=i.reflink.exec(e))||(a=i.nolink.exec(e))){if(e=e.substring(a[0].length),s=(a[2]||a[1]).replace(/\s+/g," "),!(s=o[s.toLowerCase()])||!s.href){c+=a[0].charAt(0),e=a[0].substring(1)+e;continue}l=!0,c+=outputLink(a,s),l=!1}else if(a=i.formula.exec(e))e=e.substring(a[0].length),c+=t.formula(output(a[1]));else if(a=i.ico.exec(e))e=e.substring(a[0].length),c+=t.ico(output(a[2]||a[1]));else if(a=i.strong.exec(e))e=e.substring(a[0].length),c+=t.strong(output(a[2]||a[1]));else if(a=i.em.exec(e))e=e.substring(a[0].length),c+=t.em(output(a[2]||a[1]));else if(a=i.code.exec(e))e=e.substring(a[0].length),c+=t.codespan(escape(a[2],!0));else if(a=i.br.exec(e))e=e.substring(a[0].length),c+=t.br();else if(a=i.del.exec(e))e=e.substring(a[0].length),c+=t.del(output(a[1]));else if(a=i.coloralt.exec(e))e=e.substring(a[0].length),c+=t.coloralt(output(a[1]));else if(a=i.colorbase.exec(e))e=e.substring(a[0].length),c+=t.colorbase(output(a[1]));else if(a=i.text.exec(e))e=e.substring(a[0].length),c+=t.text(a[0]);else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(a[0].length),n=r=escape(a[1]),c+=t.link(n,null,r);return c},tok=()=>{switch(a.type){case"space":return"";case"hr":return t.hr();case"heading":return t.heading(output(checklen(a.text)),a.depth,a.text);case"code":return"math"==a.lang?t.formula(a.text,!0):t.code(a.text,a.lang,c);case"table":var e,s,r,n,i=[];r=[];for(var l=0;l<a.headers.length;l++)r.push(t.tablecell(tokenparser(a.headers[l],t,0).out,!0,a.align[l]));for(e=t.tablerow(r.join("")),l=0;l<a.cells.length;l++){for(s=a.cells[l],r=[],n=0;n<s.length;n++)r.push(t.tablecell(tokenparser(s[n],t,0).out,!1,a.align[n]));i.push(t.tablerow(r.join("")))}return t.table(e,i.join(""));case"blockquote_start":for(i="";"blockquote_end"!==next().type;)i+=tok();return t.blockquote(i);case"list_start":i="";for(var o=a.ordered;"list_end"!==next().type;)i+=tok();return t.list(i,o);case"list_title_start":for(i="";"list_title_end"!==next().type;)i+=tok();return t.listtitle(i);case"list_item_start":i="";for(var p=a.num;"list_item_end"!==next().type;)i+="text"===a.type?parseText():tok();return t.listitem(i,p);case"html":return t.html(a.text);case"paragraph":return t.paragraph(output(checklen(a.text)));case"text":return t.paragraph(parseText());default:console.log("missing",a.type)}},n=e.reverse(),a=void 0,l=!1,o={},c=[],p=[];next();){var u=tok();if(r+=u.length,u&&p.push(u),s>0&&r>s)break}return{out:p.join(""),codes:c}};function __parselist(e,t){var s;function pb(r,n,i){if(s=r.exec(e)){__parselist(e.slice(0,s.index),t);var a=s[1];return a.startsWith("\n")&&(t.push({class:"",text:"\n"}),a=a.slice(1)),t.push({class:n,text:i?i(a):a}),__parselist(e.slice(s.index+s[1].length),t),!0}return!1}e&&"string"==typeof e&&(pb(/^(\:{3}\s*$[^]+?\:{3}\s*$)/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3}\s*$)/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||(e=e.replace(/ {2,}\n/gim," "),pb(/^(\s*#{1,6}\s+.*)/gim,"title")||pb(/(\n\s*\n)/gim,"break")||pb(/^(\s*\>\s+[^]*?\n\n)/gim,"cite")||pb(/^(\s*\>\s+.*)/gim,"cite")||pb(/^(.*?\|[^]*?\n\n)/gim,"table")||pb(/^( *\*| *\-|\-{1,8})[ $]/gim,"list")||pb(/^( ([\d]+[\.]*)+)[ $]/gim,"list",(e=>{var t=e.split(".");t.shift();var s=[];for(var r of t)r.length&&s.push(" ");return s.push("-"),s.join("")}))||t.push({class:"",text:e})))}function parselist(e,t=""){var s=[];__parselist(e,s);for(var r=[],n=0,i=0;i<s.length;i++){if("list"==(g=s[i]).class){var a=g.text.replace("\n","").length;if(a>n)r.push({space:a,id:1}),n=a;else for(;;){var l=r[r.length-1];if(1==r.length||l.space<=a){n=l.space,l.id++;break}r.pop()}var o=[],c=[];for(var l of r)c.push(" "),o.push(l.id);c.pop(),g.old=g.text,g.text.indexOf("-")>=0?g.text=c.join("")+"- "+o.join(".")+".":g.text=c.join("")+"* ",o=[];for(var p=i+1;p<s.length&&""==s[p].class;p++)o.push(s[p].text);g.title=t,g.data=g.text+o.join("")}else""!=g.class&&("title"==g.class&&(t=g.text),r=[],n=0)}o=[];var u=[];for(var g of s)"list"==g.class&&u.push({title:g.title,lev:g.text,data:g.data}),o.push(g.text);return{txt:o.join(""),cards:u,tm:s}}function parserow$1(e,t,s=""){var r;function parse3(n,i){return!!(r=n.exec(e))&&(parserow$1(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow$1(r[2],t,`${s} ${i}`),t.push({class:`${s} ${i}`,text:r[3]}),parserow$1(e.slice(r.index+r[1].length+r[2].length+r[3].length),t,s),!0)}(function parse1(n,i){return!!(r=n.exec(e))&&(parserow$1(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow$1(e.slice(r.index+r[1].length),t,s),!0)})(/(`.*?`)/gim,"code2")||parse3(/(\*{3})([^]+?)(\*{3})/gim,"grassetto italico")||parse3(/(\*{2})([^]+?)(\*{2})/gim,"grassetto")||parse3(/(\*{1})([^]+?)(\*{1})/gim,"italico")||parse3(/(_{3})([^]+?)(_{3})/gim,"grassetto italico")||parse3(/(_{2})([^]+?)(_{2})/gim,"grassetto")||parse3(/(_{1})([^]+?)(_{1})/gim,"italico")||parse3(/(\~{3})([^]+?)(\~{3})/gim,"barrato")||parse3(/(\~{2})([^]+?)(\~{2})/gim,"tilde2")||parse3(/(\~{1})([^]+?)(\~{1})/gim,"tilde")||t.push({class:s,text:e})}function parseblock$1(e,t){var s;function pb(r,n,i=!1){return!!(s=r.exec(e))&&(parseblock$1(e.slice(0,s.index),t),i?parserow$1(s[1],t,n):t.push({class:n,text:s[1]}),parseblock$1(e.slice(s.index+s[1].length),t),!0)}if(!(pb(/^(\:{3}[^]+?\:{3})/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3})/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||pb(/^(\s*#{1,6} +.*)$/gim,"title",!0)||pb(/^(\s*\>\s+[^]*?\n\n)/gim,"cite",!0)||pb(/^(\s*\>\s+.*)/gim,"cite",!0)||pb(/^(.*?\|.*\n[\-: ]+\|[\-\| :]*\n.*?\|[^]*?\n\n)/gim,"tabella",!0)||pb(/^(\n{2,})/gim,"break",!0)||pb(/^( *\*| *\-|\-{1,8})[ $]/gim,"list",!0)||pb(/(^\s*[\d\.]+)[\s$]/gim,"list",!0))){if(s=/(\!*\[)(.*?)(\]\s*\()(.*?)(\))/.exec(e))return parserow$1(e.slice(0,s.index),t,""),t.push({class:"grassetto",text:s[1]}),t.push({class:"linkdes",text:s[2]}),t.push({class:"grassetto",text:s[3]}),t.push({class:"linkval",text:s[4]}),t.push({class:"grassetto",text:s[5]}),void parserow$1(e.slice(s.index+s[1].length+s[2].length+s[3].length+s[4].length+s[5].length),t,"");parserow$1(e,t,"")}}function parsetext(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");var t=[];return parseblock$1(e,t),t}function parserow(e,t,s=""){var r;function parse1(n,i){return!!(r=n.exec(e))&&(parserow(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow(e.slice(r.index+r[1].length),t,s),!0)}parse1(/(\/\/.*)$/gim,"commento2")||function parse2(n,i){if(r=n.exec(e)){var a=r.index+r[1].length;return parserow(e.slice(0,a),t,s),t.push({class:`${s} ${i}`,text:r[2]}),parserow(e.slice(a+r[2].length),t,s),!0}return!1}(/(#let.? +)([\w_\.]+)/gi,"variabile")||parse1(/(#(select|cases|endselect|ifdef|log|msg|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func))/gim,"comando")||parse1(/(#(if\s*|elseif\s*))/gim,"comando")||parse1(/(#(else|let|i |m |f |j |case|def ))/gim,"comando")||parse1(/(\$[\{\(]?[\w_\.]+)/gim,"variabile")||parse1(/(\{.+?\})/gim,"formula")||parse1(/([\}\)\(])/gim,"variabile")||parse1(/([\d\.\:\,\;\\,]+)/gim,"digit")||t.push({class:s,text:e})}function parseblock(e,t){var s;(function pb(r,n,i=!1){return!!(s=r.exec(e))&&(parseblock(e.slice(0,s.index),t),i?parserow(s[1],t,n):t.push({class:n,text:s[1]}),parseblock(e.slice(s.index+s[1].length),t),!0)})(/(\/\*[^]+?\*\/)/gim,"comment")||parserow(e,t,"")}function parserule(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");var t=[];return parseblock(e,t),t}function formatrule(e){let t=e.split("\n"),s=[],r=0;const n=" ";for(let e=0;e<t.length;e++){let i=t[e].trim(),a=n.repeat(r>=0?r:0),l="";(i.startsWith("#")||i.startsWith("!"))&&(l=i.substring(1).split(" ")[0].toUpperCase(),i=i.substring(0,1)+l+i.substring(l.length+1)),"IF"==l||"IFDEF"==l||"IFNDEF"==l?i.indexOf("#",2)<0?r++:i=i.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())):["FOR","FORVAR","DO","SELECT"].includes(l)?r++:["ENDIF","LOOP","ENDFOR","ENDSELECT"].includes(l)&&(r--,a=n.repeat(r>=0?r:0)),["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(l)&&r>0?s.push(n.repeat(r-1)+i):s.push(a+i)}return s.join("\n")}function getcolonne(e){if((e=e+""||"").includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.split(/[,;]/).map((e=>e.trim()))}function formatvariante(e){let t=[],s=[];for(var r of e.split("\n")){let e=getcolonne(r);for(let t=0;t<e.length;t++){let r=e[t]||"";(r.includes(",")||r.includes(";"))&&(r=`"${r}"`,e[t]=r);let n=r.length;(!s[t]||s[t]<n)&&(s[t]=n)}t.push(getcolonne(r))}let n=[];for(var r of t){let e=[];for(let t=0;t<s.length;t++)e[t]=(r[t]||"").padEnd(s[t]);n.push(e.join(" , "))}return n.join("\n")}function markunoFormatCodeMirror(e){e.defineMode("markuno",(function(){return{startState:function(){return{inComment:!1}},token:function(e,t){return t.inComment?(e.match(/\*\//)?t.inComment=!1:e.skipToEnd(),"commento1"):e.match(/\/\/.*/)?"commento2":e.match(/\/\*/)?(t.inComment=!0,"commento1"):e.match(/^\s*#(select|cases|endselect|log|msg|ifdef|ifndef|elseif|elseifndef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func|push|pop|let|letv|letm|lett|else)/i)||e.match(/^\s*#(if\s*|elseif\s*|i |m |f |j |case|def )/i)||e.match(/#(else|let|letv|lett|letm)/i)?"comando":!t.inCommand&&e.match(/^\s*#[\w_\.]+/i)?"macro":e.match(/^\s*![\w_\.]+/i)||e.match(/\$\[[\w_\.]+/)?"funzione":e.match(/\$[\{\(]?[\w_\.]+/)?"variabile":e.match(/\]/)?"funzione":e.match(/\{.+?\}/)?"formula":e.match(/[\d\.\:\,\;\\,]+/)?"digit":(e.next(),null)}}}))}function parsevars(e,t){var s=e;if(t)for(var r in t){var n=t[r]||`..${r}..`;s=s.replace(new RegExp(`\\[${r}\\]`,"gim"),n)}return s}var parseinfomd=(e,t,s)=>r.parse(e,t,s),mark=(e,t,s=!1,r=!1)=>{var n;if(r)n=tokenize(e,0,s);else{var{txt:i}=parselist(e);n=tokenize(i,0,s)}return tokenparser(n,new Render(t))},markeasy=(e,t=400,s=!1)=>{var r=tokenize(e,t,s);return tokenparser(r,new Render,t).out};export{Render,r as aliasInfo,elang,escapeHTML,formatrule,formatvariante,mark,markeasy,markunoFormatCodeMirror,parseinfomd,parselist,parserule,parsetext,tokenparser as parsetokens,parsevars,tokenize,unescapeHTML};
|
|
1
|
+
function escape(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function replace(e,t){return e=e.source,t=t||"",function self(s,r){return s?(r=(r=r.source||r).replace(/(^|[^\[])\^/g,"$1"),e=e.replace(s,r),self):new RegExp(e,t)}}function noop(){}function merge(e){for(var t,s,r=1;r<arguments.length;r++)for(s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}noop.exec=noop;var e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/,bullet:/(?:[*+-])/,item:/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/};e.item=replace(e.item,"gm")(/bull/g,e.bullet)(),e.list=replace(e.list)(/bull/g,e.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+e.def.source+")")(),e.blockquote=replace(e.blockquote)("def",e.def)(),e._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",e.html=replace(e.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,e._tag)(),e.paragraph=replace(e.paragraph)("hr",e.hr)("heading",e.heading)("lheading",e.lheading)("blockquote",e.blockquote)("tag","<"+e._tag)("def",e.def)(),e.normal=merge({},e),e.gfm=merge({},e.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/,formula:/^ *(\${2,})([\s\S]*?)\s*\1 *(?:\n+|$)/}),e.gfm.paragraph=replace(e.paragraph)("(?!","(?!"+e.gfm.fences.source.replace("\\1","\\2")+"|"+e.list.source.replace("\\1","\\3")+"|")(),e.tables=merge({},e.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :0123456789]*)\n((?: *\|.*(?:\n|$))*)\n*/});var t={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,blink:/^\[\[([\s\S]+?)\]\](?!\])/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,ico:/^\:\:([\s\S]+?)\:\:/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,colorbase:noop,coloralt:noop,text:/^[\s\S]+?(?=[\\<!\[_*\:`]| {2,}\n|$)/,_inside:/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/,_href:/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/};t.link=replace(t.link)("inside",t._inside)("href",t._href)(),t.reflink=replace(t.reflink)("inside",t._inside)(),t.normal=merge({},t),t.pedantic=merge({},t.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),t.gfm=merge({},t.normal,{escape:replace(t.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~~(?=\S)([\s\S]*?\S)~~~/,colorbase:/^~(?=\S)([\s\S]*?\S)~/,coloralt:/^~~(?=\S)([\s\S]*?\S)~~/,formula:/^\$(?=\S)([\s\S]*?\S)\$/,text:replace(t.text)("]|","~$]|")("|","|https?://|")()}),t.breaks=merge({},t.gfm,{br:replace(t.br)("{2,}","*")(),text:replace(t.gfm.text)("{2,}","*")()});const s={s:"subtitle",k:"keywords",g:"gruppo",e:"editore",y:"datapub",d:"datapub",p:"priority",a:"autore",u:"base",t:"title",l:"link",i:"img","#":"title"};const r=new class AliasInfo{constructor(){this.alias=JSON.parse(JSON.stringify(s)),this.check()}check(){var e=new Set,checkr=t=>{t&&t.length>2&&!e.has(t)&&e.add(t)};for(var t in this.alias)this.alias[t]?(checkr(t),checkr(this.alias[t])):delete this.alias[t];this.retoalias=function retroalias(e){var t={};for(var s in e)e[s]&&(t[e[s]]=s);return t}(this.alias),e=`^\\s*\\:(${(e=[...e]).join("|")}|\\w{1,2})\\:(.*)$`,this.regex=e}add(e,t){return e&&(this.alias[e]=t,this.check()),this}removeAll(){return this.alias={},this.check(),this}setmappa(e){for(var t in this.alias={},e)this.alias[t]=e[t];this.alias["#"]||(this.alias["#"]="title"),this.check()}parse(e,t,s){s&&this.setmappa();var r=e,n={};t&&((n=Object.assign(n,t)).info=!0),(o=/^\s*\#\s+(.*?)\s*$/im.exec(r))&&(n[this.alias["#"]]=o[1].toLowerCase());for(var i=0;i<20;i++){if(!(o=/:::(.*)([^]+?):::/im.exec(r)))break;var a=o[1];a||(a=i+""),n.comments||(n.comments=[]),n.comments.push({k:a,v:o[2]}),r=r.substr(o.index+o[0].length)}r=e;var l=new RegExp(this.regex,"im");for(i=0;i<50;i++){var o;if(!((o=l.exec(r))&&o.length>=2))break;r=r.substr(o.index+o[0].length),n.info=!0;var c=(o[2]||"").trim(),p=this.alias[o[1].toLowerCase()];p||(p=o[1].toLowerCase()),"l"==p||"link"==p?(n[p]||(n[p]=[]),n[p].push(c)):n[p]=c}return n}};var tokenize=(t,s,n=!1)=>{function _parsetable(e,t){var s,r={type:"table",headers:[],align:[],cells:[],cols:0},n=t.split("\n"),i=!1;function checkcols(e){if(r.cols<e){for(var t=r.cols;t<e;t++)for(var s of(r.align[t]="left",r.headers[t]=[],r.cells))s[t]=[];r.cols=e}}for(var a of n)if((a=a.trim()).length)if(a.length>2&&a.startsWith("|")&&a.endsWith("|")&&(a=a.slice(1,-1)),checkcols((s=a.split("|")).length),0==i&&/^[\- :]+\|[\- :\|]*$/im.test(a)){for(var l=0;l<s.length;l++){var o=(u=s[l]).slice(0,1),c=u.slice(-1);r.align[l]=":"==o&&":"==c?"center":":"==c?"right":"left"}i=!0}else{var p=[];for(l=0;l<s.length;l++){var u=s[l];if(i){var g=[];_tokenize(g,u,!1),p.push(g)}else _tokenize(r.headers[l],u,!1)}i&&r.cells.push(p)}e.push(r)}function _pushtoken(e,t){var s=/^([\d\.]+)\s*/.exec(t),r="",n="";s&&(r=s[1],t=t.substring(s.index+s[0].length)),(s=/^([\w\s]*?):.*$/gim.exec(t))&&(n=s[1],t=t.substring(s.index+s[1].length)),e.push({type:"list_item_start",num:r}),n&&(e.push({type:"list_title_start"}),_tokenize(e,n,!1),e.push({type:"list_title_end"})),t=t.replace(/\n +/gim,"<br>"),_tokenize(e,t,!1),e.push({type:"list_item_end"})}function _parselista(e,t,s,r){var n=[s];for(e.push({type:"list_start",ordered:t});;){var i=/^( *)([*\-+])[\s$]/im.exec(r);if(!i){_pushtoken(e,r);break}i.index&&_pushtoken(e,r.substring(0,i.index));var a=i[1].length;if(a>n[n.length-1])e.push({type:"list_start",ordered:t}),n.push(a);else for(;;){var l=n[n.length-1];if(1==n.length||l<=a)break;e.push({type:"list_end"}),n.pop()}r=r.substring(i.index+i[0].length)}for(var o of n)e.push({type:"list_end"})}var _tokenize=(e,t,r,n)=>{var a;for(t=t.replace(/^ +$/gm,"");t;){if(s){var l=0;for(var o of e)o.text||o.html?l=l+o.text.length+2:l+=3;if(l>s)break}if((a=i.newline.exec(t))&&(t=t.substring(a[0].length),a[0].length>1&&e.push({type:"space"})),a=i.formula.exec(t))t=t.substring(a[0].length),e.push({type:"code",lang:"math",text:a[2]||""});else if(a=/^(\s*`{3})(.*)([^]+?)(`{3})/gim.exec(t)){a.index>0&&_tokenize(e,t.substring(0,a.index),r);var c=(a[3]||"").replace(/^\n/,"").replace(/\n+$/,"");e.push({type:"code",lang:a[2],text:c}),t=t.substring(a.index+a[0].length)}else if(a=i.heading.exec(t))t=t.substring(a[0].length),e.push({type:"heading",depth:a[1].length,text:a[2]});else if(r&&(a=/^(.*?\|.*\n[\-: ]+\|[\-\| :]*\n.*?\|[^]*?)\n\n/gim.exec(t)))a.index>0&&_tokenize(e,t.substring(0,a.index),r),_parsetable(e,a[1]),t=t.substring(a.index+a[0].length);else if(r&&(a=/^\|.*\|\s*(?:\n\|.*\|)+/gim.exec(t)))a.index>0&&_tokenize(e,t.substring(0,a.index),r),_parsetable(e,a[0]),t=t.substring(a.index+a[0].length);else if(a=i.lheading.exec(t))t=t.substring(a[0].length),e.push({type:"heading",depth:"="===a[2]?1:2,text:a[1]});else if(a=i.hr.exec(t))t=t.substring(a[0].length),e.push({type:"hr"});else if(a=i.blockquote.exec(t))t=t.substring(a[0].length),e.push({type:"blockquote_start"}),_tokenize(e,a[0].replace(/^ *> ?/gm,""),r,!0),e.push({type:"blockquote_end"});else if((a=/^[\s-:]*?\|[\s-:\|]*/im.exec(t))||!(a=/^( *)([*\-+])[\s$]/im.exec(t))){if(a=i.html.exec(t))t=t.substring(a[0].length),e.push({type:"html",pre:"pre"===a[1]||"script"===a[1]||"style"===a[1],text:a[0]});else if(!n&&r&&(a=i.def.exec(t)))t=t.substring(a[0].length),e.push({type:"code",text:`??${a[0]}??${i.def}??`});else if(r&&(a=i.paragraph.exec(t)))t=t.substring(a[0].length),e.push({type:"paragraph",text:"\n"===a[1].charAt(a[1].length-1)?a[1].slice(0,-1):a[1]});else if(a=i.text.exec(t))t=t.substring(a[0].length),e.push({type:"text",text:a[0]});else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else{a.index>0&&_tokenize(e,t.substring(0,a.index)),t=t.substring(a.index+a[0].length);var p=/([^]*?)(\n\n|\n\s*[#\>])/im.exec(t+"\n\n");p?(_parselista(e,"*"==a[2],a[1].length,p[1]),t=t.substring(p[1].length)):e.push({type:"text??",text:a[0]})}}return e},i=e.tables;return t=function removeInfo(e,t=!1){var s=e.replace(/:::([^]+?):::/gim,"").replace(new RegExp(r.regex,"gim"),"").replace(/^\s*#\s+/im,"# ").replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");if(t){const e=/(^\s*\#\s+(.*)?\s*)$/im;var n=e.exec(s);n&&0==n.index&&(s=s.replace(e,""))}return s}(t,n),_tokenize([],t,!0)},n={string:/(".*?[^\\]"|'.*?[^\\]'|`[^]*?[^\\]`|""|''|``)/m,puntuaction:/(-[-=]?|,|;|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3})/g,parentesis:/(\(|\)|\[|\]|\{|\})/g,ingraffe:/([^$])(\{)(.*?)(\})/g,regex:/\/.*?[^\\]\/[gimu]*/m,numbers:/\b((?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?)/gi,js:{comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/)))/m,keyword:/(\b)(import|require|endif|include|define|float|int|real|char|bool|as|true|false|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)(\b)/g,keyword2:/(\.\w+|\w+\:)/g},json:{string:/(".*?[^\\]")/m,string1:/(".*?[^\\]"\s*:)/m},html:{script:/(<script[\s\S]*?>)([^]*?)(<\/script>)/im,tag:/\<(!DOCTYPE|\/?\w+)([^]*?)(\/?\>)/im,intag:/(\b)([\w-]+)(=)/g,comments:/\<\!--[^]*?--\>/im},bash:{comments:/# .*/,keyword1:/(^ *|\; *)(\w+)(\b)/g,keyword:/(\b)(sudo *[\w-]+)(\b)/g},sql:{keyword:".",keyword2:/(\b)(FROM|USING|FTS5|NVARCHAR|INTEGER|REAL|BLOB|DELETE|UPDATE|BEGIN|END|ADD|CREATE|CONSTRAINT|ALTER|COLUMN|TABLE|ALL|ASC|BETWEEN|CASE|CHECK|COLUMN|INDEX|VIEW|PROCEDURE|DESC|DISTINTC|DROP|OUTER|INNER|LEFT|JOIN|INSERT|INTO|[NOT ]*NULL|LIMIT|SELECT|ORDER BY|UNION|WHERE)(\b)/gi,keyword1:/(\b)(COLLATE|NOCASE|DEFAULT|IF [NOT ]*EXISTS|PRIMARY KEY|VALUES|AS)(\b)/gi,comments:/(?:(?:^|[^\\:])(\/\/.*)|(?:^|[^\\])(\/\*[\s\S]*?(?:\*\/))|(--\s.*))/m}};function elang(e,t,s,r){var n;return r&&(n=r.length,r.push(e)),`<pre class="elang relative"><div class="absolute clipboard top-1 right-1 w-5 h-5 " data="${n}"></div>${xelang(e,t,s)}</pre>`}const escapeTag=e=>e.replace(/[<>]/g,(e=>({"<":"<",">":">"}[e]))),escapeHTML=e=>e.replace(/[&<>'"]/g,(e=>({"&":"&","<":"<",">":">","'":"'",'"':"""}[e]))),unescapeHTML=e=>e.replace(/\&\;/g,"&").replace(/\"\;/g,'"').replace(/\'\;/g,"'").replace(/\>\;/g,">").replace(/\<\;/g,"<");function xelang(e,t,s){var gspan=(e,t)=>(t&&(t=t.replace(/(\b)(\w+)(\b)/g,"$1_$2$3")),`☉☊${t||""}☊☉${(e=escapeTag(e))||""}☉☋`),regex=e=>{if(n[t]){if("."==(s=n[t][e]))return;if(s)return s}var s;return"."==(s=n[e])?void 0:s},r=[],i=0,a=[];if(t){if(n[t]||(t="js"),c=regex("script")){for(var l=[];;){if(!(p=c.exec(e)))break;p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★K${a.length}★★`),a.push(xelang(p[1],t)+xelang(p[2],"js")+xelang(p[3],t)),e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}for(var i of[{r:"comments",s:"C"}]){if(c=regex(i.r)){for(l=[];;){if(!(p=c.exec(e)))break;if(p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★${i.s}${a.length}★★`),"html"==t){var o=p[0].replace(/\</g,"<").replace(/\>/g,">");a.push(o)}else a.push(p[0]);e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}}for(var i of[{r:"string2",s:"A"},{r:"string1",s:"B"},{r:"string",s:"S"},{r:"tag",s:"T"},{r:"regex",s:"R"}]){var c;if(c=regex(i.r)){for(l=[];;){var p;if(!(p=c.exec(e)))break;if(p.index>0&&l.push(e.substr(0,p.index)),l.push(`★★${i.s}${a.length}★★`),"T"==i.s){o=p[2].replace(regex("intag"),((e,t,s,r)=>t+gspan(s,"intag")+gspan(r,"punc")));a.push(gspan("<","punc")+p[1]+o+gspan(p[3],"punc"))}else if("`"==p[0][0]){o=p[0].replace(/(\${)(.*?)(})/gm,((e,t,s,r)=>gspan(t,"punc")+gspan(s,"word")+gspan(r,"punc")));a.push(o)}else a.push(p[0]);e=e.substr(p.index+p[0].length)}e.length&&l.push(e),e=l.join("")}}g=e.split("\n"),i=0;for(var u of g)i++,u=u.replace(regex("keyword"),((e,t,s,r)=>gspan(t,"tag")+gspan(s,"keys")+r)).replace(regex("keyword1"),((e,t,s,r)=>t+gspan(s,"keys1 keys")+r)).replace(regex("keyword2"),(e=>gspan(e,"keys2 keys"))).replace(regex("numbers"),(e=>gspan(e,"number"))).replace(regex("ingraffe"),((e,t,s,r,n)=>t+gspan(s,"punc")+gspan(r,"word")+gspan(n,"punc"))).replace(regex("puntuaction"),(e=>gspan(e,"punc"))).replace(/★★T(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"tag"))).replace(/★★S(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string"))).replace(/★★B(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string string1"))).replace(/★★A(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"string string2"))).replace(/★★R(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"regex"))).replace(/★★C(\d+)★★/gu,((e,t)=>gspan(a[Number(t)],"comment"))).replace(/★★K(\d+)★★/gu,((e,t)=>a[Number(t)])),s?r.push(gspan((" "+i).substr(-4),"rowid")+gspan(u)):r.push(gspan(u))}else{var g=e.split("\n");for(var u of g)i++,s?r.push(`${gspan((" "+i).substr(-4),"rowid")}${gspan(u)}`):r.push(gspan(u))}var h=r.join("\n");return h=h.replace(/☉☋/gmu,"</span>").replace(/☉☊([^]*?)☊☉/gmu,((e,s)=>{if(s){var r=s.split(" "),n=[];for(var i of r)n.push(`elang_${t}${i}`),n.push(`elang${i}`);return`<span class="${n.join(" ")}">`}return"<span>"})),h}class Render{constructor(e,t){this.baseurl=e,this.easy=t}code(e,t,s){if(this.easy)return"";t||(t="js");var r=t==t.toUpperCase();return elang(e,t=t.toLowerCase(),r,s)}blockquote(e){return this.easy?e:`<blockquote>\n${e}</blockquote>\n`}html(e){return e}heading(e,t,s){return"."==e||"*"==e?"":this.easy?`${e} `:`<h${t}>${e}</h${t}>`}hr(){return this.easy?"":'<div class="my-4"><hr/></div>'}list(e,t){var s=t?"ol":"ul";return`<${s}>\n${e}</${s}>\n`}listtitle(e){return`<span class="listtitle">${e}</span>`}listitem(e,t){return t?`<li attr-num="${t||""}">${e}</li>\n`:`<li>${e}</li>\n`}paragraph(e){return this.easy?e:`<p>${e}</p>\n`}table(e,t){return this.easy?"":`<table>\n<thead>\n${e}\n</thead>\n<tbody>\n${t}\n</tbody>\n</table>\n\n`}tablerow(e){return`<tr>\n${e}</tr>\n`}tablecell(e,t,s){return t?`<th style="text-align:center;">${e}</th>\n`:`<td style="${s?"text-align:"+s+";":""}">${e}</td>`}colorbase(e){return`<span class='tilde'>${e}</span>`}formula(e,t=!1){if(this.easy)return"";var s=`<img class='inline px-2' src='https://math.croswil.com/f?${e=e.replace(/<\/?em>/g," ").replace(/\r/g,"").replace("/\n/g"," ")}' alt='${e}'/>`;return t?`<div class='flex justify-center'><div>${s}</div></div>`:s}coloralt(e){return`<span class='tilde2'>${e}</span>`}blink(e){}strong(e){return"<strong>"+e+"</strong>"}ico(e){return`<span class="font-ico">${e}</span>`}em(e){return"<em>"+e+"</em>"}codespan(e){return"<code>"+e+"</code>"}br(){return"<br>"}del(e){return`<del>${e}</del>`}link(e,t,s){if(this.easy)return"("+s+")";"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1));var r="";return e.startsWith(".")?e=e.slice(1):r='target="_blank"',`<a ${r} href='${e}' title='${t||""}'>${s}</a>`}image(e,t,s){if(this.easy)return"";var r=s.split("|"),n="";let i=!1,a=!1,l=!1;if((e=(e=e.replace("https://www.youtube.com/watch?v=","https://youtu.be/")).replace("https://youtu.be","https://www.youtube.com/embed")).endsWith(".mp3")?(e=e.slice(0,-4),l=!0):e.endsWith(".mp4")?(e=e.slice(0,-4),a=!0):e.endsWith(".webm")?(e=e.slice(0,-5),i=!0):e.endsWith(".video")&&(e=e.slice(0,-6),i=!0,a=!0),l)n=`\n <audio controls ${r.length>=1?' width="'+r[1]+'"':""}\n class="mx-auto my-2 ${r.length>=2?r[2]:""}" \n >\n <source src="${e}.mp3" type="audio/mpeg">\n Il tuo browser non supporta l'elemento audio.\n </audio>\n `;else if(a||i)n=`\n<video ${r.length>=1?' width="'+r[1]+'"':""}\nclass="border rounded-lg shadow-xl ${r.length>=2?r[2]:""}" \ncontrols controlsList="nodownload" >\n ${i?'<source src="'+e+'.webm" type="video/webm" >':""}\n ${a?'<source src="'+e+'.mp4" type="video/mp4" >':""}\n \n Your browser does not support the video tag.\n</video>`;else{if(e.indexOf("https://www.youtu")>=0){var o=e.split("/embed/")[1]?.split("?")[0];return n=`\n\n<div style="width: 94%; box-shadow: 6px 6px 10px hsl(206.5, 0%, 75%); margin: 3%;">\n <div style="position: relative; padding-bottom: 56.15%; height: 0; overflow: hidden;">\n <iframe \n style="position: absolute; top: 0; left:0; width: 100%; height: 100%; border: 0;"\n loading="lazy";\n srcdoc="<style>\n * {\n padding: 0;\n margin: 0;\n overflow: hidden;\n }\n \n body, html {\n height: 100%;\n }\n \n img, svg {\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n margin: auto;\n }\n \n svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 70.7%, 8%));\n transition: all 250ms ease-in-out;\n }\n \n body:hover svg {\n filter: drop-shadow(1px 1px 10px hsl(206.5, 0%, 10%));\n transform: scale(2);\n }\n </style>\n <a href='https://www.youtube.com/embed/${o}?autoplay=1'>\n <img src='https://img.youtube.com/vi/${o}/hqdefault.jpg' alt='${t||"video"}'>\n <svg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 24 24' fill='none' stroke='#ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-play-circle'><circle cx='12' cy='12' r='10'></circle><polygon points='10 8 16 12 10 16 10 8'></polygon></svg>\n </a>\n "\n src="https://www.youtube.com/embed/${o}" \n title="${t||"video"}"\n frameborder="0"\n allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" \n allowfullscreen>\n </iframe>\n </div>\n </div> \n \n`}"/"==e.substr(0,1)&&this.baseurl&&(e=this.baseurl+e.substr(1)),n='<img src="'+e+'" alt="'+r[0]+'"',r.length>1&&(r[1].length&&(n+=' width="'+r[1]+'"'),r.length>2&&(n+=' class="'+r[2]+'"')),r[0]&&(n+=' title="'+r[0]+'"'),n+="/>"}return n}text(e){return e}}const i=t.gfm;var tokenparser=(e,t,s=0)=>{for(var r=0,checklen=e=>{if(s>0&&e.length>s-r){var t=(e=e.substring(0,s-r)).lastIndexOf(" ");t>0&&(e=e.substring(0,t))}return e},next=()=>a=n.pop(),parseText=()=>{for(var e=a.text;"text"===(n[n.length-1]||0).type;)e+="\n"+next().text;return output(checklen(e))},outputLink=(e,s)=>{var r=escape(s.href),n=s.title?escape(s.title):null;return"!"!==e[0].charAt(0)?t.link(r,n,output(e[1])):t.image(r,n,escape(e[1]))},output=e=>{for(var s,r,n,a,c="";e;)if(a=i.escape.exec(e))e=e.substring(a[0].length),c+=a[1];else if(a=i.autolink.exec(e))e=e.substring(a[0].length),n="@"===a[2]?`mailto:${r=":"===a[1].charAt(6)?a[1].substring(7):a[1]}`:r=escape(a[1]),c+=t.link(n,null,r);else if(a=i.blink.exec(e))e=e.substring(a[0].length),c+=t.blink(output(a[2]||a[1]));else if(l||!(a=i.url.exec(e))){if(a=i.tag.exec(e))!l&&/^<a /i.test(a[0])?l=!0:l&&/^<\/a>/i.test(a[0])&&(l=!1),e=e.substring(a[0].length),c+=a[0];else if(a=i.link.exec(e))e=e.substring(a[0].length),l=!0,c+=outputLink(a,{href:a[2],title:a[3]}),l=!1;else if((a=i.reflink.exec(e))||(a=i.nolink.exec(e))){if(e=e.substring(a[0].length),s=(a[2]||a[1]).replace(/\s+/g," "),!(s=o[s.toLowerCase()])||!s.href){c+=a[0].charAt(0),e=a[0].substring(1)+e;continue}l=!0,c+=outputLink(a,s),l=!1}else if(a=i.formula.exec(e))e=e.substring(a[0].length),c+=t.formula(output(a[1]));else if(a=i.ico.exec(e))e=e.substring(a[0].length),c+=t.ico(output(a[2]||a[1]));else if(a=i.strong.exec(e))e=e.substring(a[0].length),c+=t.strong(output(a[2]||a[1]));else if(a=i.em.exec(e))e=e.substring(a[0].length),c+=t.em(output(a[2]||a[1]));else if(a=i.code.exec(e))e=e.substring(a[0].length),c+=t.codespan(escape(a[2],!0));else if(a=i.br.exec(e))e=e.substring(a[0].length),c+=t.br();else if(a=i.del.exec(e))e=e.substring(a[0].length),c+=t.del(output(a[1]));else if(a=i.coloralt.exec(e))e=e.substring(a[0].length),c+=t.coloralt(output(a[1]));else if(a=i.colorbase.exec(e))e=e.substring(a[0].length),c+=t.colorbase(output(a[1]));else if(a=i.text.exec(e))e=e.substring(a[0].length),c+=t.text(a[0]);else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else e=e.substring(a[0].length),n=r=escape(a[1]),c+=t.link(n,null,r);return c},tok=()=>{switch(a.type){case"space":return"";case"hr":return t.hr();case"heading":return t.heading(output(checklen(a.text)),a.depth,a.text);case"code":return"math"==a.lang?t.formula(a.text,!0):t.code(a.text,a.lang,c);case"table":var e,s,r,n,i=[];r=[];for(var l=0;l<a.headers.length;l++)r.push(t.tablecell(tokenparser(a.headers[l],t,0).out,!0,a.align[l]));for(e=t.tablerow(r.join("")),l=0;l<a.cells.length;l++){for(s=a.cells[l],r=[],n=0;n<s.length;n++)r.push(t.tablecell(tokenparser(s[n],t,0).out,!1,a.align[n]));i.push(t.tablerow(r.join("")))}return t.table(e,i.join(""));case"blockquote_start":for(i="";"blockquote_end"!==next().type;)i+=tok();return t.blockquote(i);case"list_start":i="";for(var o=a.ordered;"list_end"!==next().type;)i+=tok();return t.list(i,o);case"list_title_start":for(i="";"list_title_end"!==next().type;)i+=tok();return t.listtitle(i);case"list_item_start":i="";for(var p=a.num;"list_item_end"!==next().type;)i+="text"===a.type?parseText():tok();return t.listitem(i,p);case"html":return t.html(a.text);case"paragraph":return t.paragraph(output(checklen(a.text)));case"text":return t.paragraph(parseText());default:console.log("missing",a.type)}},n=e.reverse(),a=void 0,l=!1,o={},c=[],p=[];next();){var u=tok();if(r+=u.length,u&&p.push(u),s>0&&r>s)break}return{out:p.join(""),codes:c}};function __parselist(e,t){var s;function pb(r,n,i){if(s=r.exec(e)){__parselist(e.slice(0,s.index),t);var a=s[1];return a.startsWith("\n")&&(t.push({class:"",text:"\n"}),a=a.slice(1)),t.push({class:n,text:i?i(a):a}),__parselist(e.slice(s.index+s[1].length),t),!0}return!1}e&&"string"==typeof e&&(pb(/^(\:{3}\s*$[^]+?\:{3}\s*$)/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3}\s*$)/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||(e=e.replace(/ {2,}\n/gim," "),pb(/^(\s*#{1,6}\s+.*)/gim,"title")||pb(/(\n\s*\n)/gim,"break")||pb(/^(\s*\>\s+[^]*?\n\n)/gim,"cite")||pb(/^(\s*\>\s+.*)/gim,"cite")||pb(/^(.*?\|[^]*?\n\n)/gim,"table")||pb(/^( *\*| *\-|\-{1,8})[ $]/gim,"list")||pb(/^( ([\d]+[\.]*)+)[ $]/gim,"list",(e=>{var t=e.split(".");t.shift();var s=[];for(var r of t)r.length&&s.push(" ");return s.push("-"),s.join("")}))||t.push({class:"",text:e})))}function parselist(e,t=""){var s=[];__parselist(e,s);for(var r=[],n=0,i=0;i<s.length;i++){if("list"==(g=s[i]).class){var a=g.text.replace("\n","").length;if(a>n)r.push({space:a,id:1}),n=a;else for(;;){var l=r[r.length-1];if(1==r.length||l.space<=a){n=l.space,l.id++;break}r.pop()}var o=[],c=[];for(var l of r)c.push(" "),o.push(l.id);c.pop(),g.old=g.text,g.text.indexOf("-")>=0?g.text=c.join("")+"- "+o.join(".")+".":g.text=c.join("")+"* ",o=[];for(var p=i+1;p<s.length&&""==s[p].class;p++)o.push(s[p].text);g.title=t,g.data=g.text+o.join("")}else""!=g.class&&("title"==g.class&&(t=g.text),r=[],n=0)}o=[];var u=[];for(var g of s)"list"==g.class&&u.push({title:g.title,lev:g.text,data:g.data}),o.push(g.text);return{txt:o.join(""),cards:u,tm:s}}function parserow$1(e,t,s=""){var r;function parse3(n,i){return!!(r=n.exec(e))&&(parserow$1(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow$1(r[2],t,`${s} ${i}`),t.push({class:`${s} ${i}`,text:r[3]}),parserow$1(e.slice(r.index+r[1].length+r[2].length+r[3].length),t,s),!0)}(function parse1(n,i){return!!(r=n.exec(e))&&(parserow$1(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow$1(e.slice(r.index+r[1].length),t,s),!0)})(/(`.*?`)/gim,"code2")||parse3(/(\*{3})([^]+?)(\*{3})/gim,"grassetto italico")||parse3(/(\*{2})([^]+?)(\*{2})/gim,"grassetto")||parse3(/(\*{1})([^]+?)(\*{1})/gim,"italico")||parse3(/(_{3})([^]+?)(_{3})/gim,"grassetto italico")||parse3(/(_{2})([^]+?)(_{2})/gim,"grassetto")||parse3(/(_{1})([^]+?)(_{1})/gim,"italico")||parse3(/(\~{3})([^]+?)(\~{3})/gim,"barrato")||parse3(/(\~{2})([^]+?)(\~{2})/gim,"tilde2")||parse3(/(\~{1})([^]+?)(\~{1})/gim,"tilde")||t.push({class:s,text:e})}function parseblock$1(e,t){var s;function pb(r,n,i=!1){return!!(s=r.exec(e))&&(parseblock$1(e.slice(0,s.index),t),i?parserow$1(s[1],t,n):t.push({class:n,text:s[1]}),parseblock$1(e.slice(s.index+s[1].length),t),!0)}if(!(pb(/^(\:{3}[^]+?\:{3})/gim,"comment")||pb(/^(\s*`{3}[^]+?`{3})/gim,"code")||pb(/^(\s*:\w+:.*)$/gim,"comment")||pb(/^(\s*#{1,6} +.*)$/gim,"title",!0)||pb(/^(\s*\>\s+[^]*?\n\n)/gim,"cite",!0)||pb(/^(\s*\>\s+.*)/gim,"cite",!0)||pb(/^(.*?\|.*\n[\-: ]+\|[\-\| :]*\n.*?\|[^]*?\n\n)/gim,"tabella",!0)||pb(/^(\n{2,})/gim,"break",!0)||pb(/^( *\*| *\-|\-{1,8})[ $]/gim,"list",!0)||pb(/(^\s*[\d\.]+)[\s$]/gim,"list",!0))){if(s=/(\!*\[)(.*?)(\]\s*\()(.*?)(\))/.exec(e))return parserow$1(e.slice(0,s.index),t,""),t.push({class:"grassetto",text:s[1]}),t.push({class:"linkdes",text:s[2]}),t.push({class:"grassetto",text:s[3]}),t.push({class:"linkval",text:s[4]}),t.push({class:"grassetto",text:s[5]}),void parserow$1(e.slice(s.index+s[1].length+s[2].length+s[3].length+s[4].length+s[5].length),t,"");parserow$1(e,t,"")}}function parsetext(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");var t=[];return parseblock$1(e,t),t}function parserow(e,t,s=""){var r;function parse1(n,i){return!!(r=n.exec(e))&&(parserow(e.slice(0,r.index),t,s),t.push({class:`${s} ${i}`,text:r[1]}),parserow(e.slice(r.index+r[1].length),t,s),!0)}parse1(/(\/\/.*)$/gim,"commento2")||function parse2(n,i){if(r=n.exec(e)){var a=r.index+r[1].length;return parserow(e.slice(0,a),t,s),t.push({class:`${s} ${i}`,text:r[2]}),parserow(e.slice(a+r[2].length),t,s),!0}return!1}(/(#let.? +)([\w_\.]+)/gi,"variabile")||parse1(/(#(select|cases|endselect|ifdef|log|msg|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func))/gim,"comando")||parse1(/(#(if\s*|elseif\s*))/gim,"comando")||parse1(/(#(else|let|i |m |f |j |case|def ))/gim,"comando")||parse1(/(\$[\{\(]?[\w_\.]+)/gim,"variabile")||parse1(/(\{.+?\})/gim,"formula")||parse1(/([\}\)\(])/gim,"variabile")||parse1(/([\d\.\:\,\;\\,]+)/gim,"digit")||t.push({class:s,text:e})}function parseblock(e,t){var s;(function pb(r,n,i=!1){return!!(s=r.exec(e))&&(parseblock(e.slice(0,s.index),t),i?parserow(s[1],t,n):t.push({class:n,text:s[1]}),parseblock(e.slice(s.index+s[1].length),t),!0)})(/(\/\*[^]+?\*\/)/gim,"comment")||parserow(e,t,"")}function parserule(e){e||(e=" "),e.endsWith("\n")&&(e+=" ");var t=[];return parseblock(e,t),t}function formatrule(e){let t=e.split("\n"),s=[],r=0;const n=" ";for(let e=0;e<t.length;e++){let i=t[e].trim(),a=n.repeat(r>=0?r:0),l="";(i.startsWith("#")||i.startsWith("!"))&&(l=i.substring(1).split(" ")[0].toUpperCase(),i=i.substring(0,1)+l+i.substring(l.length+1)),"IF"==l||"IFDEF"==l||"IFNDEF"==l?i.indexOf("#",2)<0?r++:i=i.replace(/#([\w]+)/g,((e,t)=>"#"+t.toUpperCase())):["FOR","FORVAR","DO","SELECT"].includes(l)?r++:["ENDIF","LOOP","ENDFOR","ENDSELECT"].includes(l)&&(r--,a=n.repeat(r>=0?r:0)),["ELSEIF","ELSE","ELSEIFDEF","ELSEIFNDEF","CASE","CASES","DEFAULT"].includes(l)&&r>0?s.push(n.repeat(r-1)+i):s.push(a+i)}return s.join("\n")}function getcolonne(e){if((e=e+""||"").includes('"')){return e.split(/[,;](?=(?:(?:[^"]*["]){2})*[^"]*$)/).map((e=>e.trim().replace(/(^["'])|(["']$)/g,"").replace(/=\s*["']/g,"=")))}return e.split(/[,;]/).map((e=>e.trim()))}function formatvariante(e){let t=[],s=[];for(var r of e.split("\n")){let e=getcolonne(r);for(let t=0;t<e.length;t++){let r=e[t]||"";(r.includes(",")||r.includes(";"))&&(r=`"${r}"`,e[t]=r);let n=r.length;(!s[t]||s[t]<n)&&(s[t]=n)}t.push(getcolonne(r))}let n=[];for(var r of t){let e=[];for(let t=0;t<s.length;t++)e[t]=(r[t]||"").padEnd(s[t]);n.push(e.join(" , "))}return n.join("\n")}function markunoFormatCodeMirror(e){e.defineMode("markuno",(function(){return{startState:function(){return{inComment:!1}},token:function(e,t){return t.inComment?(e.match(/\*\//)?t.inComment=!1:e.skipToEnd(),"commento1"):e.match(/\/\/.*/)?"commento2":e.match(/\/\*/)?(t.inComment=!0,"commento1"):e.match(/^\s*#(select|cases|endselect|log|msg|ifdef|ifndef|elseif|elseifndef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|lets|letv|lett|cat|func|push|pop|let|letv|letm|lett|else)/i)||e.match(/^\s*#(if\s*|elseif\s*|i |m |f |j |case|def )/i)||e.match(/#(else|let|letv|lett|letm)/i)?"comando":!t.inCommand&&e.match(/^\s*#[\w_\.]+/i)?"macro":e.match(/^\s*![\w_\.]+/i)||e.match(/\$\[[\w_\.]+/)?"funzione":e.match(/\$[\{\(]?[\w_\.]+/)?"variabile":e.match(/\]/)?"funzione":e.match(/\{.+?\}/)?"formula":e.match(/[\d\.\:\,\;\\,]+/)?"digit":(e.next(),null)}}}))}function parsevars(e,t){var s=e;if(t)for(var r in t){var n=t[r]||`..${r}..`;s=s.replace(new RegExp(`\\[${r}\\]`,"gim"),n)}return s}var parseinfomd=(e,t,s)=>r.parse(e,t,s),mark=(e,t,s=!1,r=!1)=>{var n;if(r)n=tokenize(e,0,s);else{var{txt:i}=parselist(e);n=tokenize(i,0,s)}return tokenparser(n,new Render(t))},markeasy=(e,t=400,s=!1)=>{var r=tokenize(e,t,s);return tokenparser(r,new Render,t).out};export{Render,r as aliasInfo,elang,escapeHTML,formatrule,formatvariante,mark,markeasy,markunoFormatCodeMirror,parseinfomd,parselist,parserule,parsetext,tokenparser as parsetokens,parsevars,tokenize,unescapeHTML};
|
package/bin/markuno.js
CHANGED
|
@@ -9,7 +9,7 @@ return!0}}return!1}async _loadContent(lines){const regx=/^\s*[\!\:]\s*(\w+)\s*(.
|
|
|
9
9
|
//!END_SYNC
|
|
10
10
|
return this.limits=parselimitifromrule(limits),!0}tovec(){var tm=this.rows,cl=[],xx=Object.keys(tm).sort();for(var x of xx)this.rows[x].annulla<2&&cl.push(this.#torow(x,this.rows[x]));return cl}#torow(cod,tm){var v,cl=[cod];if(tm)for(var t of tm.v)"string"==typeof t&&(t.includes(",")||t.includes(";"))?cl.push((v=((v=t)||"").trim()).length>1&&v.startsWith('"')&&v.endsWith('"')?v:`"${v}"`):cl.push(t||"");return cl.join(",")}tovar(cod){var c1=clean(cod);if(!this.rows[c1])return cod;var tm=this.rows[c1];return 2==tm.annulla?"":this.#torow(cod,tm)}isvalidopz(opz){let c1=clean(opz),t=this.rows[c1];return!!t&&(1!=t.annulla&&!t.hasliv)}firstvalid(opz){if(opz&&this.isvalidopz(opz))return opz;if(this.vdef&&this.vdef.length)for(var o of this.vdef)if(this.isvalidopz(o))return o;for(var x in this.rows)if(this.isvalidopz(x))return x}resetfilter(){for(var x in delete this._valids,this.rows)this.rows[x].annulla=0}validkeys(){let kk=Object.keys(this.rows)||[];return kk=kk.filter((k=>0==this.rows[k].annulla)).sort(),kk}limitfiltra(filtra){if(this.resetfilter(),!filtra)return;filtra=muClComments(filtra.toLowerCase());let tm=[];for(var f of filtra){let rr=/^\#([ie])(\d*)\s+(.+)$/i.exec(f);if(rr){let t={ex:"e"==rr[1],col:(parseInt(rr[2])||1)-1,val:getcolonne(rr[3])};t.val.length&&tm.push(t)}}if(tm.length)for(var x in this.rows){let r=this.rows[x];for(var t of tm)if(t.ex){if(_check(r.v[t.col]||"",t.val)){r.annulla=1;break}}else if(!_check(r.v[t.col]||"",t.val)){r.annulla=1;break}}function _check(value,valori){return!!valori.find((e=>e.startsWith(value)))}}limita(filtra){if(filtra&&filtra.length)return this.limitfiltra(filtra);if(!this.limits||!this.amb)return this.resetfilter();let{item:item,rule:rule,model:model,vari:vari,data:data}=this.amb,valid=(v,values)=>!values||!values.length||!!v&&values.includes(v),tm=this.limits.filter((e=>{if(!valid(item,e.i))return!1;if(!valid(rule,e.r))return!1;if(!valid(model,e.m))return!1;if(data&&e.datai&&data<e.datai)return!1;if(data&&e.dataf&&data>e.dataf)return!1;if(e.v&&e.v.length)for(var v of e.v){let x=clean(vari.var(v.v).split(",")[0],!0);if(x&&!v.o.includes(x))return!1}return!0}));if(!tm||!tm.length)return this.resetfilter();let incstar=new Set,exstar=new Set,incaltri=new Set,exaltri=new Set,isinc=!1,isex=!1;for(var t of tm){if(t.valid&&t.valid.length){isinc=!0,t.valid.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0])).forEach((item=>incstar.add(item))),t.valid.filter((e=>!e.includes("*"))).forEach((item=>incaltri.add(item)))}if(t.ex&&t.ex.length){isex=!0,t.ex.filter((e=>e.indexOf("*")>0)).map((e=>e.split("*")[0])).forEach((item=>exstar.add(item))),t.ex.filter((e=>!e.includes("*"))).forEach((item=>exaltri.add(item)))}}for(var x in this.rows){let r=this.rows[x],flinc=!1,flex=!1;if(isinc){for(let i of incstar)if(x.startsWith(i)){flinc=!0;break}!flinc&&incaltri.has(x)&&(flinc=!0)}if(isex){for(let i of exstar)if(x.startsWith(i)){flex=!0;break}!flex&&exaltri.has(x)&&(flex=!0)}r.annulla=0,isinc&&!flinc&&(r.annulla=1),isex&&flex&&(r.annulla=1)}return tm}async loadContentExtended(content){if("object"==typeof content){for(var x in content)["rows","des","h","alias","obbligo"].includes(x)&&(this[x]=content[x]);"string"==typeof content.def&&content.def.length&&(this.vdef=getcolonne(content.def.trim().toLowerCase())),content.filter&&content.filter.length&&(
|
|
11
11
|
//!BEGIN_SYNC
|
|
12
|
-
this.limits=parselimitifromdb(content.filter))}else await this._loadContent(muClComments(content,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}let _nofunc={};async function getcbfunc(tm,cmd,pars,vari,amb,output){if(cbFunc){if(_nofunc[cmd])return"";let a=await cbFunc(cmd,pars,vari,amb,output);return a=(a||"").trim(),"!"==a&&(_nofunc[cmd]=!0,a=""),a}return tm}async function intvaluta(amb,mac,str){return await amb.vari.valuta(str,(async(fun,pars)=>{if("dim"===fun){var dm=muCalc(pars[1]),vv=await dammivariante(amb,mac,pars[2]),col=parseInt(pars[3])||2;return vv&&vv.fromdim?vv.fromdim(dm,col):dm}return await getcbfunc(`**fun:${fun}**`,fun,pars,amb.vari,amb)}))}async function dammivariante(amb,macro,ky){return macro&¯o?.localvar&¯o.localvar[ky]?macro.localvar[ky]:await amb.getvariante(ky)}async function impostavariante(amb,macro,a,b,head){let tm,ky=a;if((b=b||"")&&"string"==typeof b){var k=b.indexOf(":");k>=0&&(k>0&&(ky=clean(b.slice(0,k))),b=b.slice(k+1))}if(head&&head.alias&&(ky=head.alias),macro&¯o.paralias&¯o.paralias[a]&&(ky=macro.paralias[a]),tm=await dammivariante(amb,macro,ky),tm)if(head&&head.t){let x8=head?.filtra||"";if(x8.includes("$")&&(x8=await amb.vari.valuta(x8)),"m"===head.t){var col=2;if(b.includes(":")){var xx=b.split(":");col=parseInt(xx[1]),b=xx[0]}tm.limita(x8),b=tm.fromdim(parseFloat(b),col)}else{tm.limita(x8);let b1=tm.firstvalid(b);b=tm.tovar(b1)}}else tm.resetfilter(),b=tm.firstvalid(b),b=tm.tovar(b);else head&&head.t&&head.t;return amb.vari.add(a,b),b}async function pushpars(amb,macro,parsfunzione,parsinit){var fatti={},vals=[];if(parsfunzione)for(var x of parsfunzione){var{v:v,o:o,fl:fl}=getcouple(x);fatti[v]||(fatti[v]=!0,vals.push({v:v,o:amb.vari.var[v]}),fl&&await impostavariante(amb,macro,v,o))}if(parsinit)for(var x of parsinit){var{v:v,o:o,fl:fl}=getcouple(x);fatti[v]||(fatti[v]=!0,vals.push({v:v,o:amb.vari.var[v]}),fl&&await impostavariante(amb,macro,v,o))}return vals}async function poppars(amb,tm){if(tm)for(var x of tm)amb.vari.add(x.v,x.o)}const outpush=(output,a)=>{null!=a&&null!=a&&("string"==typeof a&&a.startsWith("_ ")&&output.length>0&&"string"==typeof output[output.length-1]&&!tipo?output[output.length-1]+=a.slice(2):output.push(...a.split("\n")))};async function muEval(amb,mac,codice,options){if(!Array.isArray(codice))return errori.add("codice is not a valid parsed array"),[];options||(options={}),options.id||(options.id="_"),options._stackmacro||(options._stackmacro=0),options.limited||(options.limited=!1),amb||errori.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let output=[];xdt();for(var ii=0;ii<codice.length;){var riga=codice[ii];switch(riga.tipo){case"IFDEF":case"IFNDEF":case"IF":var tm="IF"==riga.tipo?muCalc(await intvaluta(amb,mac,riga.contenuto)):"IFDEF"==riga.tipo?""!=await intvaluta(amb,mac,riga.contenuto):""==await intvaluta(amb,mac,riga.contenuto);riga.next?(codice[riga.next].jlast=tm?1:0,tm||(ii=riga.next-1)):errori.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await intvaluta(amb,mac,riga.contenuto),ii=riga.next-1):errori.add("manca endselect",riga);break;case"CASE":case"CASES":case"DEFAULT":if(riga.next)if(riga.jlast)riga.jlast=0,ii=riga.last-1;else{tm=1;if("CASE"==riga.tipo){tm=0;var tmx=muCalc(riga.t1||""),vv=getcolonne(await intvaluta(amb,mac,riga.contenuto));for(var v of vv)if(muCalc(v)==tmx){tm=1;break}}else if("CASES"==riga.tipo){tm=0;tmx=riga.t1||"",vv=getcolonne(await intvaluta(amb,mac,riga.contenuto));for(var v of vv)if(v==tmx){tm=1;break}}codice[riga.next].jlast=tm?1:0,codice[riga.next].t1=riga.t1,tm||(ii=riga.next-1)}else errori.add("manca select",riga);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(riga.next)if(riga.jlast)riga.jlast=0,ii=riga.last-1;else{tm="ELSE"==riga.tipo?1:"ELSEIF"==riga.tipo?muCalc(await intvaluta(amb,mac,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await intvaluta(amb,mac,riga.contenuto):""==await intvaluta(amb,mac,riga.contenuto);codice[riga.next].jlast=tm?1:0,tm||(ii=riga.next-1)}else errori.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"J":await getcbfunc("$$","$$",await intvaluta(amb,mac,riga.contenuto),vari,amb,output);break;case"INC":case"I":if(options._stackmacro>500)errori.add("stack chiamate macro troppo profondo!",riga);else{var{macro:macro,pars:pars,xid:xid}=await amb.getmacro(riga)||{};if(macro){options._inc=!0,options._stackmacro++;let saved={},parametri=macro.parametri?._;if(parametri&¶metri.length)for(var x of parametri){let x1=clean(x.split("=")[0]||"",!0);x1&&(saved[x1]=vari.dictionary[x1])}await macro.impostaparametri(parametri,pars);let rs1=await muEval(amb,macro,macro.codice,options);for(var v in saved)saved[v]?vari.dictionary[v]=saved[v]:delete vari.dictionary[v];output.push(...rs1),options._stackmacro--,options._inc=!1}}break;case"MACRO":case"M":case"FUNC":case"F":if(options._stackmacro>500)errori.add("stack chiamate macro troppo profondo!",riga);else{var{macro:macro,pars:pars,xid:xid}=await amb.getmacro(riga)||{};if(macro){let ismacro=options.grafica&&"F"!=riga.tipo&&"FUNC"==riga.tipo,optid=options.id||"",parametri=macro.parametri?._,saved={};if(ismacro)vari.push();else{if(macro.head)for(var x in macro.head)saved[x]=amb.vari.var(x);if(parametri&¶metri.length)for(var x of parametri){let x1=(x.split("=")[0]||"").trim().toLowerCase();x1&&(saved[x1]=vari.dictionary[x1])}}if(macro.codice.length){if(options._stackmacro++,options.grafica&&"function"==typeof options.grafica){let f="",xid="";pars&&pars.length?(f=pars.find((e=>e.startsWith("#id"))),f?(f=await vari.valuta(f.slice(3)),options.id=hash(`${ii}${macro.name}${optid}${f}`),pars=pars.filter((e=>!e.startsWith("#id"))),xid=options.id):options.id=hash(`z${optid}${ii}`)):options.id=hash(`z${optid}${ii}`);let out=await options.grafica({tipo:riga.tipo,id:xid,pars:pars,parametri:parametri,macro:macro,options:options,vari:amb.vari,amb:amb});output.push(out)}else{await macro.impostaparametri(parametri,pars);let rs1=await muEval(amb,macro,macro.codice,options);output.push(...rs1)}options._stackmacro--}if(ismacro)vari.pop();else for(var v in saved)saved[v]?vari.dictionary[v]=saved[v]:delete vari.dictionary[v];options.id=optid}else errori.add("Macro non trovata!",riga)}break;case"LET":case"LETS":var j=-1;if((i=riga.contenuto.indexOf("="))>=0&&(j=riga.contenuto.indexOf("=",i+1)),j<0){if((i=(v=riga.contenuto).indexOf("="))>0){var a=await intvaluta(amb,mac,v.slice(0,i).trim()),b=v.slice(i+1).trim();b="LET"==riga.tipo?muCalc(await intvaluta(amb,mac,b))||"":await intvaluta(amb,mac,b),vari.add(a,b)}}else{vv=getcolonne(riga.contenuto);for(var v of vv){if((i=v.indexOf("="))>0){a=await intvaluta(amb,mac,v.slice(0,i)),b=v.slice(i+1).trim();b="LET"==riga.tipo?muCalc(await intvaluta(amb,mac,b))||"":await intvaluta(amb,mac,b),vari.add(a,b)}}}break;case"LETT":var i;if((i=riga.contenuto.indexOf("="))>0){a=await intvaluta(amb,mac,riga.contenuto.slice(0,i).trim()),b=riga.contenuto.slice(i+1).trim();vari.add(a,b)}break;case"LETV":case"LETM":case"DEF":if(tm=getcolonne(riga.contenuto))for(var x of tm){var{v:v,o:o,fl:fl}=getcouple(x);fl&&(v=await vari.valuta(v),o=await intvaluta(amb,mac,o),await impostavariante(amb,mac,v.trim().toLowerCase(),o.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":fl=!0;(valido=(riga.contenuto||"").trim())&&!muCalc(await intvaluta(amb,mac,valido))&&(fl=!1),riga.next&&(fl||(ii=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var valido,elenco;if(options.oldstyle)v=(vv=riga.contenuto.split(","))[2]||"i",elenco=vv[0],valido=vv[1];else v=(vv=getcolonne(riga.contenuto||""))[0]||"",elenco=clean(vv[1],!0),valido=vv[2]||"";if(v=v.includes("$")?await intvaluta(amb,mac,v):v||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var xx=(tm=await intvaluta(amb,mac,elenco))?await dammivariante(amb,mac,tm):void 0;xx?elenco=xx.tovec():(elenco=[],errori.add("getvariante not found!",riga))}else{var txx=await intvaluta(amb,mac,elenco||"");elenco=elenco?getcolonne(txx):void 0}elenco=elenco||[];let nc=0;if(riga.next){(rr=codice[riga.next]).for={v:v,elenco:elenco,nc:nc,valido:valido};var voce;fl=!0;v&&elenco.length>0?nc>=elenco.length?fl=!1:(voce=elenco[nc],vari.add(v,voce),valido&&(fl=!muCalc(await intvaluta(amb,mac,valido)))):fl=!1,fl||(ii=riga.next-1)}else errori.add("manca endfor/loop",riga)}break;case"LOOP":var fl=!0;riga.contenuto&&!muCalc(await intvaluta(amb,mac,riga.contenuto))&&(fl=!1),fl&&(ii=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||muCalc(await intvaluta(amb,mac,riga.contenuto)))if(riga.for){var{v:v,elenco:elenco,valido:valido}=riga.for;if(v&&elenco.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<elenco.length){if(vari.add(v,elenco[riga.for.nc]),valido&&muCalc(await intvaluta(amb,mac,valido)))continue;ii=riga.prev;break}break}}else errori.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?muCalc(await intvaluta(amb,mac,riga.contenuto))&&(ii=riga.next):ii=riga.next:errori.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!muCalc(await intvaluta(amb,mac,riga.contenuto))||(ii=riga.next-1):errori.add("continue outside loop",riga);break;case"MSG":case"LOG":let tm99=await intvaluta(amb,mac,riga.contenuto);logga(tm99),errori.add(tm99);break;default:{let tm;if(riga.contenuto.startsWith("!")){tm=await intvaluta(amb,mac,riga.contenuto);var rr;a="";if(rr=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(tm)){var cmd=rr[1].toLowerCase(),pars=getcolonne(rr[2]||"");a=await getcbfunc(tm,cmd,pars,vari,amb)}a&&outpush(output,a)}else options.parsefnpunto&&"function"==typeof options.parsefnpunto&&riga.contenuto.startsWith(".")?await options.parsefnpunto({dati:riga.contenuto,output:output,id:options.id,vari:amb.vari,amb:amb}):(tm=await intvaluta(amb,mac,riga.contenuto),outpush(output,tm))}}ii++}return output}async function muGenerate(macro,amb,genera,callback,isTestmode=0){if(macro.isgenera&&callback){var output={counter:0,keys:{},isTestmode:isTestmode};if(genera){if(!macro.genera[genera])return!1;await muGenerate_0(macro,amb,genera,callback,output)}else for(var gg in macro.genera)await muGenerate_0(macro,amb,gg,callback,output);return!0}}async function muGenerate_0(mac,amb,genera,callback,output){var xgen=mac.genera[genera];if(xgen){output.counter2=0;var working_variant={},levels=[];async function processavariante(liv){if(!(output.isTestmode&&output.counter>output.isTestmode)){if(liv<xgen.vars.length){var xx=xgen.vars[liv];if(!working_variant[xx]){var xvar=await dammivariante(amb,mac,xx),keys=Object.keys(xvar.rows);if(keys&&keys.length>0){for(var k of keys)levels.push(k),amb.vari.add(xvar.name,xvar.tovar(k)),working_variant[xx]=!0,await processavariante(liv+1),working_variant[xx]=!1,levels.pop();return}logga("manca la variante",xx)}}for(var x of xgen.calcola)mac.formula[x]&&await muEval(amb,mac,mac.formula[x],{limited:!0});for(var x of xgen.exclude){if(mac.formula[x])if(vvv=await muEval(amb,mac,mac.formula[x],{limited:!0}))for(var v of vvv){if(muCalc(v))return}}var out1=await muEval(amb,mac,xgen.codice,{limited:!0,localvar:mac.localvar}),bb={};for(var x of xgen.bom)if(mac.formula[x]){var vvv=await muEval(amb,mac,mac.formula[x],{limited:!0});for(var v of vvv=vvv.join("\n").split("\n"))if(v){var tm=getcolonne(v);bb[x]||(bb[x]=[]);for(var t={},i=0;i<tm.length;i++)t[`c${i}`]=tm[i];bb[x].push(t)}}await async function docallback(callback,out1,bom,xgen,genera,output){var fl=!0;for(var x of out1){var tm=getcolonne(x);if(tm[0]&&!output[tm[0]]){output[tm[0]]=1,output.counter++,output.counter2++;for(var o={__id:output.counter},i=0;i<tm.length;i++){var key=xgen.head[i]?xgen.head[i]:`c${i}`;"#"==key[0]?o[key=key.substr(1)]=muCalc(tm[i]):o[key]=tm[i]}await callback(genera,o,fl?bom:void 0,output.counter,output.counter2),fl=!1}}}(callback,out1,bb,xgen,genera,output)}}await processavariante(0)}}const DIMS=["l","a","p"],rx1=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im,tipifree=["s","g","h","p","q"],tipiheader=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"}],tipicolonna=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(vari,str){var vv=str.split("\n");for(var v of vv)if(v.trim()){if(muCalc(vari.valutasync(v)))return!0}return!1}class Macro{constructor(amb,name){var{name:name,cat:cat}=checkmu(name,amb.cat||"");this.name=name,this.cat=cat,this.amb=amb,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){var cl=[];return this.errori.forEach((e=>cl.push({e:e}))),cl}getparametri(){let s={};if(this.dims&&DIMS.forEach((k=>{let t=muCalc(this.amb.vari.var(k));t&&(s[k]=String(t))})),this.head){for(var x of this.head)if(!x._h){var tm=this.amb.vari.var(x.cod);tipifree.includes(x.t)||"string"==typeof tm&&(tm=tm.split(",")[0]),s[x.cod]=tm}}else if(this.parametri?._)for(var x of this.parametri._){let x1=(x.split("=")[0]||"").trim().toLowerCase();tm=((tm=this.amb.vari.var[x1])||"").split(",")[0],s[x1]=tm}return s}async setparametri(pars){let ff={};for(var x of(pars||(pars={}),this.dims&&DIMS.forEach((e=>{let t=pars[e]||this.dims[e].val;t=parseFloat(t)||0,this.dims[e].visible&&(t<this.dims[e].min&&(t=this.dims[e].min),t>this.dims[e].max&&(t=this.dims[e].max)),pars[e]=String(t)})),this.head))"g"!=x.t&&("z"!=x.t||pars[x.cod]||(pars[x.cod]="1"),x._v=pars[x.cod],ff[x.cod]=!0);for(var x in pars)ff[x]||(ff[x]=!0,await impostavariante(this.amb,this,x,pars[x]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,pars[this.head[0].cod]||void 0,!0),this.getparametri()}async setparametro(name,value,propaga=!1){if(value&&value.includes("$")&&(value=await intvaluta(this.amb,this,value)),this.head){const _imposta=async(riga,vv,id)=>{let nn=riga?.cod;if(riga.valid&&!riga._h1){let t0=!valutaCondizioniTestata(this.amb.vari,riga.valid);if(riga._h!=t0&&(riga._h=t0,["g","g1","g2"].includes(riga.t)))for(let i=id+1;i<this.head.length;i++){let tm1=this.head[i];if(tm1){if(["g","g1","g2"].includes(tm1.t))break;tm1._h1=riga._h}}}if(riga._h||riga._h1)return this.amb.vari.add(nn,""),riga._v=void 0,"";{if(delete riga._h2,riga.visible){let t0=!valutaCondizioniTestata(this.amb.vari,riga.visible);if(t0&&(riga._h2=t0),["g","g1","g2"].includes(riga.t))for(let i=id+1;i<this.head.length;i++){let tm1=this.head[i];if(tm1){if(["g","g1","g2"].includes(tm1.t))break;riga._h2?tm1._h3=riga._h2:delete tm1._h3}}}let tx=this.amb.vari.var(nn)||"";if("string"==typeof tx&&(tx=tx.split(",")[0]),"z"!=riga.t||tx||(this.amb.vari.add(nn,"1"),tx="1"),"m"==riga.t&&riga.spars){let vspars=getcolonne(riga.spars);tx=parseFloat(tx||vspars[0])||0,vspars[1]&&parseFloat(tx)<vspars[1]&&(tx=parseFloat(vspars[1])||0),vspars[2]&&parseFloat(tx)>vspars[2]&&(tx=parseFloat(vspars[2])||0),tx=String(tx),this.amb.vari.add(nn,tx)}let tmimposta=await impostavariante(this.amb,this,nn,vv||riga._v||tx,riga);return riga._v=void 0,tx=this.amb.vari.var(nn)||"",this.amb&&this.amb.deriva&&this.amb.deriva.length>0&&this.amb.deriva.filter((e=>e.cod==nn&&((!e.item||e.item==this.amb.item)&&((!e.model||e.model==this.amb.model)&&((!e.rule||e.rule==this.amb.rule)&&(!e.opz||e.opz==vv)))))),tmimposta}};let tm,i0=-1;if("#dim"==name)propaga=1;else{if(i0=this.head.findIndex((e=>e.cod===name)),i0<0)return;let hh=this.head[i0];tm=await _imposta(hh,value,i0),delete hh._d}if(propaga)for(let i=i0+1;i<this.head.length;i++)await _imposta(this.head[i],void 0,i);return tm}return await impostavariante(this.amb,this,name,value)}async impostaparametri(parimposta,parcall,ismacro=!1){if(this.head)for(var i of(this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]),this.head))i._v="",delete i._h,delete i._h1,delete i._h2,i.alias&&(this.paralias[i.cod]=i.alias);for(var x of(parimposta||(parimposta=[]),parcall||(parcall=[]),[...parimposta,...parcall])){if((i=x.indexOf("="))>0){let a=clean(x.substr(0,i));a.includes("$")&&(a=await intvaluta(this.amb,this,a));let t,b=x.substr(i+1);b.includes("$")&&(b=await intvaluta(this.amb,this,b)),this.head&&(t=this.head.find((e=>e.cod==a)))?t._v=b:await impostavariante(this.amb,this,a,b)}}if(this.head){let fl=!0;for(var h of this.head){let fl2=await this.checkvalid(h.valid);ismacro&&(fl2=!0),["g","g1","g2"].includes(h.t)?fl=fl2:fl&&fl2&&await this.setparametro(h.cod,h._v)}}}async checkvalid(formula){if(!formula)return!0;return!!muCalc(await intvaluta(this.amb,this,formula))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(vv){if(setOggetto(this,fromjson(vv,{})),this.localvar)for(var x in this.localvar){setOggetto(vv=new Variante,this.localvar[x]),this.localvar[x]=vv}}async load(xname,xcat){try{var tm,{name:name,cat:cat}=checkmu(xname||this.name,xcat||this.cat||"");if(this.name||(this.name=name),this.cat||(this.cat=cat),this.azzera(),cbGetMacro&&("string"==typeof(tm=await cbGetMacro(cat,name))&&(tm.startsWith("{")||tm.startsWith("["))&&(tm=fromjson(tm)),tm&&tm.head&&!Array.isArray(tm.head)&&(tm.head=[]),tm.head&&(tm.dims=getheaddims(tm.dims))),tm){if("string"==typeof tm)await this.parsedata(tm);else for(var x in tm)this[x]=tm[x];return!0}errori.add(`missing cbGetFile: ${cat}/${name}`)}catch(error){errori.add(geterrdes(error),`macro.load: ${name}/${cat}`)}}async loadAndCompile(file,cat,acapo=!1){var res,{name:name,cat:cat}=checkmu(file,this.cat||cat);return this.azzera(),cbGetFile&&(res=await cbGetFile(cat,name)),res?(await this.parsedata(res,acapo),this.getmacro()):void errori.add(`missing cbGetFile: ${name}/${cat}`)}async#loadinclude(file,flin,stak,pp){var res,{name:name,cat:cat}=checkmu(file,this.cat);if(cbGetFile&&(res=await cbGetFile(cat,name)),!res)return[];if(res.includes("$1")&&pp&&pp.length>0)for(var i=1;i<pp.length;i++)res=res.replaceAll(`$${i}`,pp[i]);var tm=muClComments(res),t2=[];for(var t of(flin&&(tm=tm.filter((t=>!/^\{(\:?(var|valid|formula|header|genera|v|f|h))[\s|\}]/im.test(t)))),tm)){const rr=rx1.exec(t);if(rr)flin=!rr[1].startsWith(":"),t2.push(t);else{const r1=/^\s*\{i\s(.+)?\}/im.exec(t);if(r1){pp=getcolonne(r1[1]);if(!stak.includes(pp[0])){stak.push(pp[0]);var t3=await this.loadinclude(pp[0],flin,stak,pp);Array.isArray(t3)&&t2.push(...t3),stak.pop()}}else t2.push(t)}}return t2}async parsedata(res,acapo=!1){if(this.azzera(),!res)return;var t2=[],tm=muClComments(res),flin=!1;let lochead=[];for(var t of tm){const rr=rx1.exec(t);if(rr)flin=!rr[1].startsWith(":"),t2.push(t);else{const r1=/^\s*\{i\s(.+)?\}/im.exec(t);if(r1){var pp=getcolonne(r1[1]),t3=await this.#loadinclude(pp[0],flin,[pp[0]],pp);Array.isArray(t3)&&t2.push(...t3)}else t2.push(t)}}flin=!1;var out=this.codice;for(var t of t2){const rr=rx1.exec(t);if(rr)if(rr[1].startsWith(":"))out=this.codice;else switch(rr[1]){case"genera":case"g":if(r2=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t)){var name=checkname(getcolonne(r2[2])[0]);this.genera[name]=[],out=this.genera[name]}else(out=this.errori).push(t);break;case"valid":out=this.valid;break;case"var":case"v":if(r2=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t)){var nn=getcolonne(r2[2]);name=checkname(nn[0]);this.localvar[name]={name:name,des:nn[1]||"",rows:[]},out=this.localvar[name].rows}else(out=this.errori).push(t);break;case"formula":case"f":var r2;if(r2=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t)){name=checkname(r2[2]);this.formula[name]=[],out=this.formula[name]}else(out=this.errori).push(t);break;case"h":case"header":out=lochead;break;default:this.errori.push(t),out=this.errori}else t.startsWith("{")&&(out=this.codice),out.push(t)}for(var f in this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,acapo),this.formula)this.formula[f]=this.cleanfiltraparametri(f,this.formula[f],acapo);for(var f in this.localvar){var vv=new Variante,v=this.localvar[f];for(var x of(vv.setheader(f,this.cat),vv.rows={},v.rows)){var k=(c=getcolonne(x))[0].trim().toLowerCase();vv.rows[k]={annulla:0,v:c}}v.des&&(vv.des=v.des),this.localvar[f]=vv}tm=this.valid;for(var t of(this.valid=[],tm)){(p={v:(p=getcouple(t,",")).v,msg:p.o}).v&&(p.v.startsWith("#")?this.formula[p.v.substring(1)]&&this.valid.push(p):this.valid.push(p))}tm=lochead;var head=[];for(var t of tm){if(rr=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(t)){var c;pp=getcolonne(rr[2]);let ht;if(c=clean(rr[1]))for(var tp of(ht=head.find((e=>e.cod==c)),ht||(ht={cod:c,t:"t"},head.push(ht)),pp)){var p;switch((p=getcouple(tp)).v){case"t":ht.t=p.o;break;case"def":case"default":ht.def=p.o;break;case"valid":case"colonna":case"hidden":p.o.startsWith("#")?this.formula[p.o.substring(1)]&&(ht[p.v]=p.o):ht[p.v]=p.o;break;default:ht[p.v]=p.o}}}}this.head=head;tm=this.genera;var genera={};for(var kk in tm)if(Array.isArray(tm[kk])){var gen={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const regx=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var k2 of tm[kk]){var rr;if(rr=regx.exec(clean(k2)))switch(rr[1]){case"calcola":case"c":gen.calcola=[...gen.calcola,...getcolonne(rr[2])];break;case"exclude":case"e":case"escludi":gen.exclude=[...gen.exclude,...getcolonne(rr[2])];break;case"bom":case"db":gen.bom=[...gen.bom,...getcolonne(rr[2])];break;case"vars":case"v":gen.vars=[...gen.vars,...getcolonne(rr[2])];break;case"head":case"h":gen.head=getcolonne(rr[2]);break;default:this.errori.push(`genera ${kk} => ${k2}`)}else gen.codice.push(k2)}gen.codice=muClean(gen.codice,!0),genera[kk]=gen}this.genera=genera}cleanfiltraparametri(key,codice,acapo){if(this.paralias||(this.paralias={}),codice&&codice.length){var fl=!1;const getparalias=dati=>{let cl=[],co=getcolonne(dati);for(var c of co)if(c.includes(":")){let v=c.split(":");this.paralias[v[0]]=v[1],cl.push(v[0])}else cl.push(c);return cl};for(var i=0;i<codice.length;i++){let rr=/^\:p[;,\s]+(.*)?$/im.exec(codice[i]);if(rr)codice[i]=null,fl=!0,this.parametri[key]=getparalias(rr[1]);else{let rr=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[i]);rr&&(codice[i]=null,fl=!0,this.parametri[key]=getparalias(rr[2]))}}fl&&(codice=codice.filter((e=>null!=e)))}return codice=muClean(codice,acapo)}}function parsevariabili(text){for(var fl=!1,tk=[];;){let m=/\$([\{\[\(])/m.exec(text);if(!m){text&&fl&&tk.push({class:"",text:text});break}fl=!0;var classe="["==m[1]?"inline":"variabile";m.index>0&&tk.push({class:"",text:text.substring(0,m.index)});var{i:i}=parsevar(text,m.index+2,m[1],null);if(!(i>m.index)){tk.push({class:classe,text:text.substring(m.index)});break}tk.push({class:classe,text:text.substring(m.index,i+1)}),text=text.substring(i+1)}return{fl:fl,tk:tk}}function parseexp(text,exp,callback){if(!callback)throw new Error("missing callback");for(var fl=!1,tk=[];;){let m=exp.exec(text);if(!m){text&&fl&&tk.push({class:"",text:text});break}m.index>0&&tk.push({class:"",text:text.substring(0,m.index)}),tk.push(...callback(m)),fl=!0,text=text.substring(m.index+m[0].length)}return{fl:fl,tk:tk}}function muParsecode(tt,isvar){tt||(tt=" "),tt.endsWith("\n")&&(tt+=" ");for(var tm=[{class:"",text:tt}],i=0;i<tm.length;i++)if(!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\/\*[^]+?\*\/)/im,(m=>[{class:"comment",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\/\/.*)$/im,(m=>[{class:"commento2",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\{.+?\})/m,(m=>[{class:"header",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\:\w+)(.*?$)/m,(m=>[{class:"param",text:m[1]},{class:"param2",text:m[2]}]));if(fl&&tm.splice(i,1,...tk),!isvar){if(tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\!\w+)/m,(m=>[{class:"function",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#let.? +)([\w_\.]+)/im,(m=>[{class:"comando",text:m[1]},{class:"variabile",text:m[2]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(push|pop|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(if\s*|elseif\s*))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(else|i |m |f |j |case|def ))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parsevariabili(tm[i].text);if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\$[\w_\.]+)/im,(m=>[{class:"variabile",text:m[1]}]));fl&&tm.splice(i,1,...tk)}}}}}return tm}function headerconvert(tt){var rr=muClComments(tt,!1),grp=(tt={},{r:[]}),fl=!1;for(var r of rr){var m=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(r);if(m)grp={cod:m[2],des:m[2],r:[]},fl=!1,tt[m[2]]=grp;else if(!/^\s*\:/.exec(r)){var tm,v=r.split(","),t={cod:clean(v[0])};(tm=(v[1]||"").trim())&&(t.des=tm),(tm=clean(v[2]))&&(t.tipo=tm),(tm=clean(v[3]))&&(t.alias=tm),(tm=clean(v[4]))&&(t.valid=tm),(tm=clean(v[5]))&&(t.visible=tm),t.cod&&(fl||"sep"!=t.tipo?grp.r.push(t):(grp.des=t.des,grp.valid=t.valid,grp.visible=t.visible,fl=!0))}}return tt}function aliasconvert(tt){var rr=muClComments(tt.toLowerCase(),!1),tx={};for(var r of rr)if(!/^\s*\:/.exec(r)){var v=getcolonne(r);v[0]&&v[1]&&(tx[v[0]]=v[1])}return tx}class Ambiente{#headers=void 0;#alias=void 0;#deriva=void 0;#typos=void 0;constructor(cat=".",maxdelays=100,righevuote=!1){this.righevuote=righevuote,this.maxdelays=maxdelays,this.setcatalog(cat),this.fndotcallback=void 0}setcatalog(cat){return cat=clean(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}get muvalutatore(){return{getcolonne:getcolonne,muCalc:muCalc,muEval:muEval,tipifree:tipifree}}azzera(mode=!1){this.vari=new Variabile,this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",mode&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#headers=void 0,this.#alias=void 0,this.#deriva=void 0,this.#typos=void 0)}async setfndot(fndotcallback){this.fndotcallback=fndotcallback,this.vari.setfndot(fndotcallback)}async#checkelencovar(cat){cbInfo&&(this.varelenco[cat]||(this.varelenco[cat]=await cbInfo("headers",cat,"_varianti"),this.varelenco[cat]||(this.varelenco[cat]=[])))}parseheaderfrominfo(tm){if(tm&&tm.length>0)for(var t of tm)switch(t.tipo){case"_headers":t.value,t.value=headerconvert(t.value),this.#headers=t.value||{};break;case"_alias":t.value,t.value=aliasconvert(t.value),this.#alias=t.value||{};break;case"_typos":t.value;var tips=fromjson(t.value);for(var tp in tips){var tq=tips[tp];tq.db&&(tq.db=muClean(muClComments(tq.db))),tq.list&&(tq.list=muClean(muClComments(tq.list)))}t.value=tips,this.#typos=t.value||{}}}setitem(item,rule,model,datadelgiorno){this.item=clean(item,!0),this.rule=clean(rule,!0),this.model=clean(model,!0),this.data=datadelgiorno||(new Date).toInt()}async getheader(cod){if(!this.#headers&&cbInfo){var tm=await cbInfo("headers",this.cat,"_headers");this.parseheaderfrominfo(tm)}return this.#headers||(this.#headers={}),this.#headers[cod]}async getalias(){if(!this.#alias&&cbInfo){var tm=await cbInfo("headers",this.cat,"_alias");this.parseheaderfrominfo(tm)}return this.#alias||(this.#alias={}),this.#alias}get deriva(){return this.#deriva,this.#deriva||[]}async getmacro(riga){try{if("string"==typeof riga&&(riga={tipo:"M",contenuto:riga}),!riga||!riga.contenuto)return;var rr=/^([\(\{\}\)\:\$\w\.\\\/]+)[\s\;\,]*(.*)?$/im.exec(riga.contenuto);if(!rr)return void errori.add("Macro non valida:"+riga.contenuto,riga);(macro=clean(rr[1],!0)).includes("$")&&(macro=await this.vari.valuta(macro));var pars=getcolonne(rr[2]),{name:name,cat:cat}=checkmu(macro,this.cat);this.cat=cat;var macro,ky=`${cat}/${name}`;if(!this.macro[ky]){var tm=new Macro(this,name);await tm.load()?this.macro[ky]=tm:errori.add(`macro fail to load ${ky}`,riga)}return(macro=this.macro[ky])?{macro:macro,pars:pars}:(errori.add(`macro non trovata ${ky}`,riga),{})}catch(error){errori.add(geterrdes(error),`ambiente.getmacro: ${riga?.contenuto}`)}}async getvariante(cod){var{name:name,cat:cat}=checkmu(cod,this.cat),n2=name;if(cat==this.cat&&this.#alias&&this.#alias[name]&&(n2=this.#alias[name]),await this.#checkelencovar(cat),!this.varelenco[cat]||this.varelenco[cat].includes(name)){var key=`${cat}/${n2}`;if(!this.varianti[key]){var vv=new Variante(this);await vv.load(key,cat),this.varianti[key]=vv}return this.varianti[key]}}
|
|
12
|
+
this.limits=parselimitifromdb(content.filter))}else await this._loadContent(muClComments(content,!1))}todata(){return{name:this.name,des:this.des,alias:this.alias,obbligo:this.obbligo,h:this.h,rows:this.rows,limits:this.limits,key:this.key}}}let _nofunc={};async function getcbfunc(tm,cmd,pars,vari,amb,output){if(cbFunc){if(_nofunc[cmd])return"";let a=await cbFunc(cmd,pars,vari,amb,output);return a=(a||"").trim(),"!"==a&&(_nofunc[cmd]=!0,a=""),a}return tm}async function intvaluta(amb,mac,str){return await amb.vari.valuta(str,(async(fun,pars)=>{if("dim"===fun){var dm=muCalc(pars[1]),vv=await dammivariante(amb,mac,pars[2]),col=parseInt(pars[3])||2;return vv&&vv.fromdim?vv.fromdim(dm,col):dm}return await getcbfunc(`**fun:${fun}**`,fun,pars,amb.vari,amb)}))}async function dammivariante(amb,macro,ky){return macro&¯o?.localvar&¯o.localvar[ky]?macro.localvar[ky]:await amb.getvariante(ky)}async function impostavariante(amb,macro,a,b,head){let tm,ky=a;if((b=b||"")&&"string"==typeof b){var k=b.indexOf(":");k>=0&&(k>0&&(ky=clean(b.slice(0,k))),b=b.slice(k+1))}if(head&&head.alias&&(ky=head.alias),macro&¯o.paralias&¯o.paralias[a]&&(ky=macro.paralias[a]),tm=await dammivariante(amb,macro,ky),tm)if(head&&head.t){let x8=head?.filtra||"";if(x8.includes("$")&&(x8=await amb.vari.valuta(x8)),"m"===head.t){var col=2;if(b.includes(":")){var xx=b.split(":");col=parseInt(xx[1]),b=xx[0]}tm.limita(x8),b=tm.fromdim(parseFloat(b),col)}else{tm.limita(x8);let b1=tm.firstvalid(b);b=tm.tovar(b1)}}else tm.resetfilter(),b=tm.firstvalid(b),b=tm.tovar(b);else head&&head.t&&head.t;return amb.vari.add(a,b),b}async function pushpars(amb,macro,parsfunzione,parsinit){var fatti={},vals=[];if(parsfunzione)for(var x of parsfunzione){var{v:v,o:o,fl:fl}=getcouple(x);fatti[v]||(fatti[v]=!0,vals.push({v:v,o:amb.vari.var[v]}),fl&&await impostavariante(amb,macro,v,o))}if(parsinit)for(var x of parsinit){var{v:v,o:o,fl:fl}=getcouple(x);fatti[v]||(fatti[v]=!0,vals.push({v:v,o:amb.vari.var[v]}),fl&&await impostavariante(amb,macro,v,o))}return vals}async function poppars(amb,tm){if(tm)for(var x of tm)amb.vari.add(x.v,x.o)}const outpush=(output,a)=>{null!=a&&null!=a&&("string"==typeof a&&a.startsWith("_ ")&&output.length>0&&"string"==typeof output[output.length-1]&&!tipo?output[output.length-1]+=a.slice(2):output.push(...a.split("\n")))};async function muEval(amb,mac,codice,options){if(!Array.isArray(codice))return errori.add("codice is not a valid parsed array"),[];options||(options={}),options.id||(options.id="_"),options._stackmacro||(options._stackmacro=0),options.limited||(options.limited=!1),amb||errori.add("amb deve essere definito");let vari=amb.vari;amb.maxdelays,amb.cat;let output=[];xdt();for(var ii=0;ii<codice.length;){var riga=codice[ii];switch(riga.tipo){case"IFDEF":case"IFNDEF":case"IF":var tm="IF"==riga.tipo?muCalc(await intvaluta(amb,mac,riga.contenuto)):"IFDEF"==riga.tipo?""!=await intvaluta(amb,mac,riga.contenuto):""==await intvaluta(amb,mac,riga.contenuto);riga.next?(codice[riga.next].jlast=tm?1:0,tm||(ii=riga.next-1)):errori.add("Troppo tempo",riga);break;case"SELECT":riga.next?(codice[riga.next].t1=await intvaluta(amb,mac,riga.contenuto),ii=riga.next-1):errori.add("manca endselect",riga);break;case"CASE":case"CASES":case"DEFAULT":if(riga.next)if(riga.jlast)riga.jlast=0,ii=riga.last-1;else{tm=1;if("CASE"==riga.tipo){tm=0;var tmx=muCalc(riga.t1||""),vv=getcolonne(await intvaluta(amb,mac,riga.contenuto));for(var v of vv)if(muCalc(v)==tmx){tm=1;break}}else if("CASES"==riga.tipo){tm=0;tmx=riga.t1||"",vv=getcolonne(await intvaluta(amb,mac,riga.contenuto));for(var v of vv)if(v==tmx){tm=1;break}}codice[riga.next].jlast=tm?1:0,codice[riga.next].t1=riga.t1,tm||(ii=riga.next-1)}else errori.add("manca select",riga);break;case"ELSEIF":case"ELSEIFDEF":case"ELSEIFNDEF":case"ELSE":if(riga.next)if(riga.jlast)riga.jlast=0,ii=riga.last-1;else{tm="ELSE"==riga.tipo?1:"ELSEIF"==riga.tipo?muCalc(await intvaluta(amb,mac,riga.contenuto)):"ELSEIFDEF"==riga.tipo?""!=await intvaluta(amb,mac,riga.contenuto):""==await intvaluta(amb,mac,riga.contenuto);codice[riga.next].jlast=tm?1:0,tm||(ii=riga.next-1)}else errori.add("manca endif",riga);break;case"ENDIF":case"ENDSELECT":break;case"PUSH":vari.push();break;case"POP":vari.pop();break;case"J":await getcbfunc("$$","$$",await intvaluta(amb,mac,riga.contenuto),vari,amb,output);break;case"INC":case"I":if(options._stackmacro>500)errori.add("stack chiamate macro troppo profondo!",riga);else{var{macro:macro,pars:pars,xid:xid}=await amb.getmacro(riga)||{};if(macro){options._inc=!0,options._stackmacro++;let saved={},parametri=macro.parametri?._;if(parametri&¶metri.length)for(var x of parametri){let x1=clean(x.split("=")[0]||"",!0);x1&&(saved[x1]=vari.dictionary[x1])}await macro.impostaparametri(parametri,pars);let rs1=await muEval(amb,macro,macro.codice,options);for(var v in saved)saved[v]?vari.dictionary[v]=saved[v]:delete vari.dictionary[v];output.push(...rs1),options._stackmacro--,options._inc=!1}}break;case"MACRO":case"M":case"FUNC":case"F":if(options._stackmacro>500)errori.add("stack chiamate macro troppo profondo!",riga);else{var{macro:macro,pars:pars,xid:xid}=await amb.getmacro(riga)||{};if(macro){let ismacro=options.grafica||["F","FUNC"].includes(riga.tipo),optid=options.id||"",parametri=macro.parametri?._,saved={};if(ismacro)vari.push();else{if(macro.head)for(var x in macro.head)saved[x]=amb.vari.var(x);if(parametri&¶metri.length)for(var x of parametri){let x1=(x.split("=")[0]||"").trim().toLowerCase();x1&&(saved[x1]=vari.dictionary[x1])}}if(macro.codice.length){if(options._stackmacro++,options.grafica&&"function"==typeof options.grafica){let f="",xid="";pars&&pars.length?(f=pars.find((e=>e.startsWith("#id"))),f?(f=await vari.valuta(f.slice(3)),options.id=hash(`${ii}${macro.name}${optid}${f}`),pars=pars.filter((e=>!e.startsWith("#id"))),xid=options.id):options.id=hash(`z${optid}${ii}`)):options.id=hash(`z${optid}${ii}`);let out=await options.grafica({tipo:riga.tipo,id:xid,pars:pars,parametri:parametri,macro:macro,options:options,vari:amb.vari,amb:amb});output.push(out)}else{await macro.impostaparametri(parametri,pars);let rs1=await muEval(amb,macro,macro.codice,options);output.push(...rs1)}options._stackmacro--}if(ismacro)vari.pop();else for(var v in saved)saved[v]?vari.dictionary[v]=saved[v]:delete vari.dictionary[v];options.id=optid}else errori.add("Macro non trovata!",riga)}break;case"LET":case"LETS":var j=-1;if((i=riga.contenuto.indexOf("="))>=0&&(j=riga.contenuto.indexOf("=",i+1)),j<0){if((i=(v=riga.contenuto).indexOf("="))>0){var a=await intvaluta(amb,mac,v.slice(0,i).trim()),b=v.slice(i+1).trim();b="LET"==riga.tipo?muCalc(await intvaluta(amb,mac,b))||"":await intvaluta(amb,mac,b),vari.add(a,b)}}else{vv=getcolonne(riga.contenuto);for(var v of vv){if((i=v.indexOf("="))>0){a=await intvaluta(amb,mac,v.slice(0,i)),b=v.slice(i+1).trim();b="LET"==riga.tipo?muCalc(await intvaluta(amb,mac,b))||"":await intvaluta(amb,mac,b),vari.add(a,b)}}}break;case"LETT":var i;if((i=riga.contenuto.indexOf("="))>0){a=await intvaluta(amb,mac,riga.contenuto.slice(0,i).trim()),b=riga.contenuto.slice(i+1).trim();vari.add(a,b)}break;case"LETV":case"LETM":case"DEF":if(tm=getcolonne(riga.contenuto))for(var x of tm){var{v:v,o:o,fl:fl}=getcouple(x);fl&&(v=await vari.valuta(v),o=await intvaluta(amb,mac,o),await impostavariante(amb,mac,v.trim().toLowerCase(),o.trim().toLowerCase(),"LETM"==riga.tipo?{t:"m"}:{t:"v"}))}break;case"DO":fl=!0;(valido=(riga.contenuto||"").trim())&&!muCalc(await intvaluta(amb,mac,valido))&&(fl=!1),riga.next&&(fl||(ii=riga.next+1));break;case"VARIANTE":case"FORVAR":case"FOR":{var valido,elenco;if(options.oldstyle)v=(vv=riga.contenuto.split(","))[2]||"i",elenco=vv[0],valido=vv[1];else v=(vv=getcolonne(riga.contenuto||""))[0]||"",elenco=clean(vv[1],!0),valido=vv[2]||"";if(v=v.includes("$")?await intvaluta(amb,mac,v):v||"","FORVAR"==riga.tipo||"VARIANTE"==riga.tipo){var xx=(tm=await intvaluta(amb,mac,elenco))?await dammivariante(amb,mac,tm):void 0;xx?elenco=xx.tovec():(elenco=[],errori.add("getvariante not found!",riga))}else{var txx=await intvaluta(amb,mac,elenco||"");elenco=elenco?getcolonne(txx):void 0}elenco=elenco||[];let nc=0;if(riga.next){(rr=codice[riga.next]).for={v:v,elenco:elenco,nc:nc,valido:valido};var voce;fl=!0;v&&elenco.length>0?nc>=elenco.length?fl=!1:(voce=elenco[nc],vari.add(v,voce),valido&&(fl=!muCalc(await intvaluta(amb,mac,valido)))):fl=!1,fl||(ii=riga.next-1)}else errori.add("manca endfor/loop",riga)}break;case"LOOP":var fl=!0;riga.contenuto&&!muCalc(await intvaluta(amb,mac,riga.contenuto))&&(fl=!1),fl&&(ii=riga.prev-1);break;case"ENDFOR":if(!riga.contenuto||muCalc(await intvaluta(amb,mac,riga.contenuto)))if(riga.for){var{v:v,elenco:elenco,valido:valido}=riga.for;if(v&&elenco.length>0&&riga.for.nc<500)for(;;){if(riga.for.nc++,riga.for.nc<elenco.length){if(vari.add(v,elenco[riga.for.nc]),valido&&muCalc(await intvaluta(amb,mac,valido)))continue;ii=riga.prev;break}break}}else errori.add("manca istruzione for",riga);break;case"BREAK":case"EXIT":case"EXITFOR":riga.next?riga.contenuto.trim()?muCalc(await intvaluta(amb,mac,riga.contenuto))&&(ii=riga.next):ii=riga.next:errori.add("break outside loop",riga);break;case"CONTINUE":riga.next?riga.contenuto&&!muCalc(await intvaluta(amb,mac,riga.contenuto))||(ii=riga.next-1):errori.add("continue outside loop",riga);break;case"MSG":case"LOG":let tm99=await intvaluta(amb,mac,riga.contenuto);logga(tm99),errori.add(tm99);break;default:{let tm;if(riga.contenuto.startsWith("!")){tm=await intvaluta(amb,mac,riga.contenuto);var rr;a="";if(rr=/^\!(\w+)[\s;,]\s*(.+)?$/gim.exec(tm)){var cmd=rr[1].toLowerCase(),pars=getcolonne(rr[2]||"");a=await getcbfunc(tm,cmd,pars,vari,amb)}a&&outpush(output,a)}else options.parsefnpunto&&"function"==typeof options.parsefnpunto&&riga.contenuto.startsWith(".")?await options.parsefnpunto({dati:riga.contenuto,output:output,id:options.id,vari:amb.vari,amb:amb}):(tm=await intvaluta(amb,mac,riga.contenuto),outpush(output,tm))}}ii++}return output}async function muGenerate(macro,amb,genera,callback,isTestmode=0){if(macro.isgenera&&callback){var output={counter:0,keys:{},isTestmode:isTestmode};if(genera){if(!macro.genera[genera])return!1;await muGenerate_0(macro,amb,genera,callback,output)}else for(var gg in macro.genera)await muGenerate_0(macro,amb,gg,callback,output);return!0}}async function muGenerate_0(mac,amb,genera,callback,output){var xgen=mac.genera[genera];if(xgen){output.counter2=0;var working_variant={},levels=[];async function processavariante(liv){if(!(output.isTestmode&&output.counter>output.isTestmode)){if(liv<xgen.vars.length){var xx=xgen.vars[liv];if(!working_variant[xx]){var xvar=await dammivariante(amb,mac,xx),keys=Object.keys(xvar.rows);if(keys&&keys.length>0){for(var k of keys)levels.push(k),amb.vari.add(xvar.name,xvar.tovar(k)),working_variant[xx]=!0,await processavariante(liv+1),working_variant[xx]=!1,levels.pop();return}logga("manca la variante",xx)}}for(var x of xgen.calcola)mac.formula[x]&&await muEval(amb,mac,mac.formula[x],{limited:!0});for(var x of xgen.exclude){if(mac.formula[x])if(vvv=await muEval(amb,mac,mac.formula[x],{limited:!0}))for(var v of vvv){if(muCalc(v))return}}var out1=await muEval(amb,mac,xgen.codice,{limited:!0,localvar:mac.localvar}),bb={};for(var x of xgen.bom)if(mac.formula[x]){var vvv=await muEval(amb,mac,mac.formula[x],{limited:!0});for(var v of vvv=vvv.join("\n").split("\n"))if(v){var tm=getcolonne(v);bb[x]||(bb[x]=[]);for(var t={},i=0;i<tm.length;i++)t[`c${i}`]=tm[i];bb[x].push(t)}}await async function docallback(callback,out1,bom,xgen,genera,output){var fl=!0;for(var x of out1){var tm=getcolonne(x);if(tm[0]&&!output[tm[0]]){output[tm[0]]=1,output.counter++,output.counter2++;for(var o={__id:output.counter},i=0;i<tm.length;i++){var key=xgen.head[i]?xgen.head[i]:`c${i}`;"#"==key[0]?o[key=key.substr(1)]=muCalc(tm[i]):o[key]=tm[i]}await callback(genera,o,fl?bom:void 0,output.counter,output.counter2),fl=!1}}}(callback,out1,bb,xgen,genera,output)}}await processavariante(0)}}const DIMS=["l","a","p"],rx1=/^\{(\:?(var|valid|formula|genera|header|v|f|g|h))[\s|\}]/im,tipifree=["s","g","h","p","q"],tipiheader=[{cod:"t",des:"Variante"},{cod:"q",des:"V.Query"},{cod:"f",des:"Valore Fisso"},{cod:"g",des:"Gruppo"},{cod:"s",des:"Libero"},{cod:"m",des:"Misura"},{cod:"c",des:"Check (no/si)"},{cod:"z",des:"Check (si/no)"},{cod:"h",des:"Hidden"},{cod:"p",des:"Programmato"}],tipicolonna=[{cod:"",des:"Libero"},{cod:"a",des:"Area"},{cod:"t",des:"Thumb",folder:"thumbs"},{cod:"i",des:"Image",folder:"textures"},{cod:"x",des:"3D file",folder:"3d"},{cod:"f",des:"Funzione",folder:"script"}];function valutaCondizioniTestata(vari,str){var vv=str.split("\n");for(var v of vv)if(v.trim()){if(muCalc(vari.valutasync(v)))return!0}return!1}class Macro{constructor(amb,name){var{name:name,cat:cat}=checkmu(name,amb.cat||"");this.name=name,this.cat=cat,this.amb=amb,this.azzera()}azzera(){this.key=`${this.cat}/${this.name}`,this.localvar={},this.head=[],this.frontend=!1,this.valid=[],this.parametri={},this.paralias={},this.formula={},this.settings={},this.errori=[],this.codice=[],this.genera={}}get isgenera(){return Object.keys(this.genera).length||0}get iscodice(){return this.codice.length||0}get isheader(){return this.head?.length||0}geterrori(){var cl=[];return this.errori.forEach((e=>cl.push({e:e}))),cl}getparametri(){let s={};if(this.dims&&DIMS.forEach((k=>{let t=muCalc(this.amb.vari.var(k));t&&(s[k]=String(t))})),this.head){for(var x of this.head)if(!x._h){var tm=this.amb.vari.var(x.cod);tipifree.includes(x.t)||"string"==typeof tm&&(tm=tm.split(",")[0]),s[x.cod]=tm}}else if(this.parametri?._)for(var x of this.parametri._){let x1=(x.split("=")[0]||"").trim().toLowerCase();tm=((tm=this.amb.vari.var[x1])||"").split(",")[0],s[x1]=tm}return s}async setparametri(pars){let ff={};for(var x of(pars||(pars={}),this.dims&&DIMS.forEach((e=>{let t=pars[e]||this.dims[e].val;t=parseFloat(t)||0,this.dims[e].visible&&(t<this.dims[e].min&&(t=this.dims[e].min),t>this.dims[e].max&&(t=this.dims[e].max)),pars[e]=String(t)})),this.head))"g"!=x.t&&("z"!=x.t||pars[x.cod]||(pars[x.cod]="1"),x._v=pars[x.cod],ff[x.cod]=!0);for(var x in pars)ff[x]||(ff[x]=!0,await impostavariante(this.amb,this,x,pars[x]));return this.head?.length>0&&await this.setparametro(this.head[0].cod,pars[this.head[0].cod]||void 0,!0),this.getparametri()}async setparametro(name,value,propaga=!1){if(value&&value.includes("$")&&(value=await intvaluta(this.amb,this,value)),this.head){const _imposta=async(riga,vv,id)=>{let nn=riga?.cod;if(riga.valid&&!riga._h1){let t0=!valutaCondizioniTestata(this.amb.vari,riga.valid);if(riga._h!=t0&&(riga._h=t0,["g","g1","g2"].includes(riga.t)))for(let i=id+1;i<this.head.length;i++){let tm1=this.head[i];if(tm1){if(["g","g1","g2"].includes(tm1.t))break;tm1._h1=riga._h}}}if(riga._h||riga._h1)return this.amb.vari.add(nn,""),riga._v=void 0,"";{if(delete riga._h2,riga.visible){let t0=!valutaCondizioniTestata(this.amb.vari,riga.visible);if(t0&&(riga._h2=t0),["g","g1","g2"].includes(riga.t))for(let i=id+1;i<this.head.length;i++){let tm1=this.head[i];if(tm1){if(["g","g1","g2"].includes(tm1.t))break;riga._h2?tm1._h3=riga._h2:delete tm1._h3}}}let tx=this.amb.vari.var(nn)||"";if("string"==typeof tx&&(tx=tx.split(",")[0]),"z"!=riga.t||tx||(this.amb.vari.add(nn,"1"),tx="1"),"m"==riga.t&&riga.spars){let vspars=getcolonne(riga.spars);tx=parseFloat(tx||vspars[0])||0,vspars[1]&&parseFloat(tx)<vspars[1]&&(tx=parseFloat(vspars[1])||0),vspars[2]&&parseFloat(tx)>vspars[2]&&(tx=parseFloat(vspars[2])||0),tx=String(tx),this.amb.vari.add(nn,tx)}let tmimposta=await impostavariante(this.amb,this,nn,vv||riga._v||tx,riga);return riga._v=void 0,tx=this.amb.vari.var(nn)||"",this.amb&&this.amb.deriva&&this.amb.deriva.length>0&&this.amb.deriva.filter((e=>e.cod==nn&&((!e.item||e.item==this.amb.item)&&((!e.model||e.model==this.amb.model)&&((!e.rule||e.rule==this.amb.rule)&&(!e.opz||e.opz==vv)))))),tmimposta}};let tm,i0=-1;if("#dim"==name)propaga=1;else{if(i0=this.head.findIndex((e=>e.cod===name)),i0<0)return;let hh=this.head[i0];tm=await _imposta(hh,value,i0),delete hh._d}if(propaga)for(let i=i0+1;i<this.head.length;i++)await _imposta(this.head[i],void 0,i);return tm}return await impostavariante(this.amb,this,name,value)}async impostaparametri(parimposta,parcall,ismacro=!1){if(this.head)for(var i of(this.paralias||(this.paralias={}),Array.isArray(this.head)||(this.head=[]),this.head))i._v="",delete i._h,delete i._h1,delete i._h2,i.alias&&(this.paralias[i.cod]=i.alias);for(var x of(parimposta||(parimposta=[]),parcall||(parcall=[]),[...parimposta,...parcall])){if((i=x.indexOf("="))>0){let a=clean(x.substr(0,i));a.includes("$")&&(a=await intvaluta(this.amb,this,a));let t,b=x.substr(i+1);b.includes("$")&&(b=await intvaluta(this.amb,this,b)),this.head&&(t=this.head.find((e=>e.cod==a)))?t._v=b:await impostavariante(this.amb,this,a,b)}}if(this.head){let fl=!0;for(var h of this.head){let fl2=await this.checkvalid(h.valid);ismacro&&(fl2=!0),["g","g1","g2"].includes(h.t)?fl=fl2:fl&&fl2&&await this.setparametro(h.cod,h._v)}}}async checkvalid(formula){if(!formula)return!0;return!!muCalc(await intvaluta(this.amb,this,formula))}getmacrostr(){return JSON.stringify(this.getmacro())}getmacro(){return getOggetto(this,["amb"])}setmacro(vv){if(setOggetto(this,fromjson(vv,{})),this.localvar)for(var x in this.localvar){setOggetto(vv=new Variante,this.localvar[x]),this.localvar[x]=vv}}async load(xname,xcat){try{var tm,{name:name,cat:cat}=checkmu(xname||this.name,xcat||this.cat||"");if(this.name||(this.name=name),this.cat||(this.cat=cat),this.azzera(),cbGetMacro&&("string"==typeof(tm=await cbGetMacro(cat,name))&&(tm.startsWith("{")||tm.startsWith("["))&&(tm=fromjson(tm)),tm&&tm.head&&!Array.isArray(tm.head)&&(tm.head=[]),tm.head&&(tm.dims=getheaddims(tm.dims))),tm){if("string"==typeof tm)await this.parsedata(tm);else for(var x in tm)this[x]=tm[x];return!0}errori.add(`missing cbGetFile: ${cat}/${name}`)}catch(error){errori.add(geterrdes(error),`macro.load: ${name}/${cat}`)}}async loadAndCompile(file,cat,acapo=!1){var res,{name:name,cat:cat}=checkmu(file,this.cat||cat);return this.azzera(),cbGetFile&&(res=await cbGetFile(cat,name)),res?(await this.parsedata(res,acapo),this.getmacro()):void errori.add(`missing cbGetFile: ${name}/${cat}`)}async#loadinclude(file,flin,stak,pp){var res,{name:name,cat:cat}=checkmu(file,this.cat);if(cbGetFile&&(res=await cbGetFile(cat,name)),!res)return[];if(res.includes("$1")&&pp&&pp.length>0)for(var i=1;i<pp.length;i++)res=res.replaceAll(`$${i}`,pp[i]);var tm=muClComments(res),t2=[];for(var t of(flin&&(tm=tm.filter((t=>!/^\{(\:?(var|valid|formula|header|genera|v|f|h))[\s|\}]/im.test(t)))),tm)){const rr=rx1.exec(t);if(rr)flin=!rr[1].startsWith(":"),t2.push(t);else{const r1=/^\s*\{i\s(.+)?\}/im.exec(t);if(r1){pp=getcolonne(r1[1]);if(!stak.includes(pp[0])){stak.push(pp[0]);var t3=await this.loadinclude(pp[0],flin,stak,pp);Array.isArray(t3)&&t2.push(...t3),stak.pop()}}else t2.push(t)}}return t2}async parsedata(res,acapo=!1){if(this.azzera(),!res)return;var t2=[],tm=muClComments(res),flin=!1;let lochead=[];for(var t of tm){const rr=rx1.exec(t);if(rr)flin=!rr[1].startsWith(":"),t2.push(t);else{const r1=/^\s*\{i\s(.+)?\}/im.exec(t);if(r1){var pp=getcolonne(r1[1]),t3=await this.#loadinclude(pp[0],flin,[pp[0]],pp);Array.isArray(t3)&&t2.push(...t3)}else t2.push(t)}}flin=!1;var out=this.codice;for(var t of t2){const rr=rx1.exec(t);if(rr)if(rr[1].startsWith(":"))out=this.codice;else switch(rr[1]){case"genera":case"g":if(r2=/^\s*\{(genera|g)\s+(.+)?\}/im.exec(t)){var name=checkname(getcolonne(r2[2])[0]);this.genera[name]=[],out=this.genera[name]}else(out=this.errori).push(t);break;case"valid":out=this.valid;break;case"var":case"v":if(r2=/^\s*\{(var|v)\s+(.+)?\}/im.exec(t)){var nn=getcolonne(r2[2]);name=checkname(nn[0]);this.localvar[name]={name:name,des:nn[1]||"",rows:[]},out=this.localvar[name].rows}else(out=this.errori).push(t);break;case"formula":case"f":var r2;if(r2=/^\s*\{(formula|f)\s+(.+)?\}/im.exec(t)){name=checkname(r2[2]);this.formula[name]=[],out=this.formula[name]}else(out=this.errori).push(t);break;case"h":case"header":out=lochead;break;default:this.errori.push(t),out=this.errori}else t.startsWith("{")&&(out=this.codice),out.push(t)}for(var f in this.parametri={},this.codice=this.cleanfiltraparametri("_",this.codice,acapo),this.formula)this.formula[f]=this.cleanfiltraparametri(f,this.formula[f],acapo);for(var f in this.localvar){var vv=new Variante,v=this.localvar[f];for(var x of(vv.setheader(f,this.cat),vv.rows={},v.rows)){var k=(c=getcolonne(x))[0].trim().toLowerCase();vv.rows[k]={annulla:0,v:c}}v.des&&(vv.des=v.des),this.localvar[f]=vv}tm=this.valid;for(var t of(this.valid=[],tm)){(p={v:(p=getcouple(t,",")).v,msg:p.o}).v&&(p.v.startsWith("#")?this.formula[p.v.substring(1)]&&this.valid.push(p):this.valid.push(p))}tm=lochead;var head=[];for(var t of tm){if(rr=/^\s*([\w\-\_]+)+[\;\,\s]\s*(.*)?$/im.exec(t)){var c;pp=getcolonne(rr[2]);let ht;if(c=clean(rr[1]))for(var tp of(ht=head.find((e=>e.cod==c)),ht||(ht={cod:c,t:"t"},head.push(ht)),pp)){var p;switch((p=getcouple(tp)).v){case"t":ht.t=p.o;break;case"def":case"default":ht.def=p.o;break;case"valid":case"colonna":case"hidden":p.o.startsWith("#")?this.formula[p.o.substring(1)]&&(ht[p.v]=p.o):ht[p.v]=p.o;break;default:ht[p.v]=p.o}}}}this.head=head;tm=this.genera;var genera={};for(var kk in tm)if(Array.isArray(tm[kk])){var gen={codice:[],head:"",calcola:[],bom:[],vars:[],exclude:[]};const regx=/^\s*[\!\:]\s*(\w+)\s*(.*)$/i;for(var k2 of tm[kk]){var rr;if(rr=regx.exec(clean(k2)))switch(rr[1]){case"calcola":case"c":gen.calcola=[...gen.calcola,...getcolonne(rr[2])];break;case"exclude":case"e":case"escludi":gen.exclude=[...gen.exclude,...getcolonne(rr[2])];break;case"bom":case"db":gen.bom=[...gen.bom,...getcolonne(rr[2])];break;case"vars":case"v":gen.vars=[...gen.vars,...getcolonne(rr[2])];break;case"head":case"h":gen.head=getcolonne(rr[2]);break;default:this.errori.push(`genera ${kk} => ${k2}`)}else gen.codice.push(k2)}gen.codice=muClean(gen.codice,!0),genera[kk]=gen}this.genera=genera}cleanfiltraparametri(key,codice,acapo){if(this.paralias||(this.paralias={}),codice&&codice.length){var fl=!1;const getparalias=dati=>{let cl=[],co=getcolonne(dati);for(var c of co)if(c.includes(":")){let v=c.split(":");this.paralias[v[0]]=v[1],cl.push(v[0])}else cl.push(c);return cl};for(var i=0;i<codice.length;i++){let rr=/^\:p[;,\s]+(.*)?$/im.exec(codice[i]);if(rr)codice[i]=null,fl=!0,this.parametri[key]=getparalias(rr[1]);else{let rr=/^!(parametri|pars|p)[;,\s]+(.*)?$/im.exec(codice[i]);rr&&(codice[i]=null,fl=!0,this.parametri[key]=getparalias(rr[2]))}}fl&&(codice=codice.filter((e=>null!=e)))}return codice=muClean(codice,acapo)}}function parsevariabili(text){for(var fl=!1,tk=[];;){let m=/\$([\{\[\(])/m.exec(text);if(!m){text&&fl&&tk.push({class:"",text:text});break}fl=!0;var classe="["==m[1]?"inline":"variabile";m.index>0&&tk.push({class:"",text:text.substring(0,m.index)});var{i:i}=parsevar(text,m.index+2,m[1],null);if(!(i>m.index)){tk.push({class:classe,text:text.substring(m.index)});break}tk.push({class:classe,text:text.substring(m.index,i+1)}),text=text.substring(i+1)}return{fl:fl,tk:tk}}function parseexp(text,exp,callback){if(!callback)throw new Error("missing callback");for(var fl=!1,tk=[];;){let m=exp.exec(text);if(!m){text&&fl&&tk.push({class:"",text:text});break}m.index>0&&tk.push({class:"",text:text.substring(0,m.index)}),tk.push(...callback(m)),fl=!0,text=text.substring(m.index+m[0].length)}return{fl:fl,tk:tk}}function muParsecode(tt,isvar){tt||(tt=" "),tt.endsWith("\n")&&(tt+=" ");for(var tm=[{class:"",text:tt}],i=0;i<tm.length;i++)if(!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\/\*[^]+?\*\/)/im,(m=>[{class:"comment",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\/\/.*)$/im,(m=>[{class:"commento2",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\{.+?\})/m,(m=>[{class:"header",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),!tm[i].class){var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\:\w+)(.*?$)/m,(m=>[{class:"param",text:m[1]},{class:"param2",text:m[2]}]));if(fl&&tm.splice(i,1,...tk),!isvar){if(tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(^\s*\!\w+)/m,(m=>[{class:"function",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#let.? +)([\w_\.]+)/im,(m=>[{class:"comando",text:m[1]},{class:"variabile",text:m[2]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(push|pop|select|cases|endselect|ifndef|elseifndef|ifdef|endif|elseifdef|variante|forvar|for|endfor|continue|break|inc|macro|default|letm|lets|letv|lett|leto|cat))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(if\s*|elseif\s*))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(#(else|i |m |f |j |case|def ))/im,(m=>[{class:"comando",text:m[1]}]));if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parsevariabili(tm[i].text);if(fl&&tm.splice(i,1,...tk),tm[i].class)continue;var{fl:fl,tk:tk}=parseexp(tm[i].text,/(\$[\w_\.]+)/im,(m=>[{class:"variabile",text:m[1]}]));fl&&tm.splice(i,1,...tk)}}}}}return tm}function headerconvert(tt){var rr=muClComments(tt,!1),grp=(tt={},{r:[]}),fl=!1;for(var r of rr){var m=/^\s*\{(h|head|header)\s+(\w+)\}/im.exec(r);if(m)grp={cod:m[2],des:m[2],r:[]},fl=!1,tt[m[2]]=grp;else if(!/^\s*\:/.exec(r)){var tm,v=r.split(","),t={cod:clean(v[0])};(tm=(v[1]||"").trim())&&(t.des=tm),(tm=clean(v[2]))&&(t.tipo=tm),(tm=clean(v[3]))&&(t.alias=tm),(tm=clean(v[4]))&&(t.valid=tm),(tm=clean(v[5]))&&(t.visible=tm),t.cod&&(fl||"sep"!=t.tipo?grp.r.push(t):(grp.des=t.des,grp.valid=t.valid,grp.visible=t.visible,fl=!0))}}return tt}function aliasconvert(tt){var rr=muClComments(tt.toLowerCase(),!1),tx={};for(var r of rr)if(!/^\s*\:/.exec(r)){var v=getcolonne(r);v[0]&&v[1]&&(tx[v[0]]=v[1])}return tx}class Ambiente{#headers=void 0;#alias=void 0;#deriva=void 0;#typos=void 0;constructor(cat=".",maxdelays=100,righevuote=!1){this.righevuote=righevuote,this.maxdelays=maxdelays,this.setcatalog(cat),this.fndotcallback=void 0}setcatalog(cat){return cat=clean(cat),this.cat!=cat&&(this.cat=cat,this.item=this.rule=this.model="",this.azzera(!0)),cat}get muvalutatore(){return{getcolonne:getcolonne,muCalc:muCalc,muEval:muEval,tipifree:tipifree}}azzera(mode=!1){this.vari=new Variabile,this.fndotcallback&&this.vari.setfndot(this.fndotcallback),this.ruleheader="",mode&&(this.macro={},this.varianti={},this.varelenco={},this.macroelenco={},this.scripts={},this.#headers=void 0,this.#alias=void 0,this.#deriva=void 0,this.#typos=void 0)}async setfndot(fndotcallback){this.fndotcallback=fndotcallback,this.vari.setfndot(fndotcallback)}async#checkelencovar(cat){cbInfo&&(this.varelenco[cat]||(this.varelenco[cat]=await cbInfo("headers",cat,"_varianti"),this.varelenco[cat]||(this.varelenco[cat]=[])))}parseheaderfrominfo(tm){if(tm&&tm.length>0)for(var t of tm)switch(t.tipo){case"_headers":t.value,t.value=headerconvert(t.value),this.#headers=t.value||{};break;case"_alias":t.value,t.value=aliasconvert(t.value),this.#alias=t.value||{};break;case"_typos":t.value;var tips=fromjson(t.value);for(var tp in tips){var tq=tips[tp];tq.db&&(tq.db=muClean(muClComments(tq.db))),tq.list&&(tq.list=muClean(muClComments(tq.list)))}t.value=tips,this.#typos=t.value||{}}}setitem(item,rule,model,datadelgiorno){this.item=clean(item,!0),this.rule=clean(rule,!0),this.model=clean(model,!0),this.data=datadelgiorno||(new Date).toInt()}async getheader(cod){if(!this.#headers&&cbInfo){var tm=await cbInfo("headers",this.cat,"_headers");this.parseheaderfrominfo(tm)}return this.#headers||(this.#headers={}),this.#headers[cod]}async getalias(){if(!this.#alias&&cbInfo){var tm=await cbInfo("headers",this.cat,"_alias");this.parseheaderfrominfo(tm)}return this.#alias||(this.#alias={}),this.#alias}get deriva(){return this.#deriva,this.#deriva||[]}async getmacro(riga){try{if("string"==typeof riga&&(riga={tipo:"M",contenuto:riga}),!riga||!riga.contenuto)return;var rr=/^([\(\{\}\)\:\$\w\.\\\/]+)[\s\;\,]*(.*)?$/im.exec(riga.contenuto);if(!rr)return void errori.add("Macro non valida:"+riga.contenuto,riga);(macro=clean(rr[1],!0)).includes("$")&&(macro=await this.vari.valuta(macro));var pars=getcolonne(rr[2]),{name:name,cat:cat}=checkmu(macro,this.cat);this.cat=cat;var macro,ky=`${cat}/${name}`;if(!this.macro[ky]){var tm=new Macro(this,name);await tm.load()?this.macro[ky]=tm:errori.add(`macro fail to load ${ky}`,riga)}return(macro=this.macro[ky])?{macro:macro,pars:pars}:(errori.add(`macro non trovata ${ky}`,riga),{})}catch(error){errori.add(geterrdes(error),`ambiente.getmacro: ${riga?.contenuto}`)}}async getvariante(cod){var{name:name,cat:cat}=checkmu(cod,this.cat),n2=name;if(cat==this.cat&&this.#alias&&this.#alias[name]&&(n2=this.#alias[name]),await this.#checkelencovar(cat),!this.varelenco[cat]||this.varelenco[cat].includes(name)){var key=`${cat}/${n2}`;if(!this.varianti[key]){var vv=new Variante(this);await vv.load(key,cat),this.varianti[key]=vv}return this.varianti[key]}}
|
|
13
13
|
//!BEGIN_SYNC
|
|
14
14
|
async varcompila(v,callback){var xx=new Variante(this);(await xx.load(v,this.cat,!0),xx.alias)&&((await this.getalias())[v]=xx.alias);callback("variants",{cod:v,des:xx.des||"",alias:xx.alias,info:xx.alias?"":JSON.stringify(getOggetto(xx,["amb"]))})}async macrocompila(v,callback){var mac=new Macro(this,v);await mac.loadAndCompile(`${v}.mu`);var t=mac.getmacro();callback("macros",{cod:v,info:JSON.stringify(t),isgenera:mac.isgenera,isheader:mac.isheader,iscodice:mac.iscodice})}async barrecompila(articolibarre,titolibarre,callback){var cc=new CodiceBarra;for(var x in cc.compila(articolibarre,titolibarre),cc.barre){callback("barcodes",{cod:x,des:"",info:JSON.stringify(cc.barre[x])})}return cc}async tojson(d){let tm;return cbFunc&&(tm=await cbFunc("json",d)),tm}async compila(info,callback){if(callback){for(var v of info.var)await this.varcompila(v,callback);for(var v of info.mu)await this.macrocompila(v,callback);if(callback("infos",{cod:"info",des:info.cat,info:JSON.stringify({cat:info.cat,md:info.info})}),this.#headers=void 0,this.#alias=void 0,this.#deriva=void 0,this.#typos=void 0,cbInfo){var tm=await cbInfo("headers",this.cat,["_headers","_alias","_deriva","_typos"]);this.parseheaderfrominfo(tm)}this.#headers?callback("infos",{cod:"headers",des:"",info:JSON.stringify(this.#headers)}):logga("missing headers"),this.#alias&&callback("infos",{cod:"alias",des:"",info:JSON.stringify(this.#alias)}),this.#deriva&&callback("infos",{cod:"deriva",des:"",info:JSON.stringify(this.#deriva)}),this.#typos&&callback("infos",{cod:"typos",des:"tipologie",info:JSON.stringify(this.#typos)})}}async getheaderfromdb(name){let{head:head,rows:rows,macros:macros,deriva:deriva}=await cbInfo("header",this.cat,name,!this.#deriva);this.#deriva||(this.#deriva=deriva),await this.#checkelencovar(this.cat),head.cod=clean(head.cod),head.rule=clean(head.rule),head.ruledef=head.ruledef||[];let vn=new Set;for(var r of rows){r.cod=clean(r.cod),r.alias=clean(r.alias),r.t=clean(r.t);let nn=r.alias?r.alias:r.cod;if(!this.varianti[`${this.cat}/${nn}`]){let t=this.varelenco[this.cat];t&&t.includes(nn)&&vn.add(nn)}}if(vn=[...vn],vn.length&&cbGetVariante){var vars=await cbGetVariante(this.cat,vn);if(vars&&vars.length)for(var x of vars){let{name:name,content:content}=x,vv=new Variante(this);vv.setheader(name,this.cat),content&&await vv.loadContentExtended(content),this.varianti[vv.key]=vv}}return{head:head,rows:rows,macros:macros}}async getlinkedmacros(rule,macros){var getkey=n=>n.includes("/")?n:`${this.cat}/${n}`;let k,cl=[];if(rule&&(k=getkey(rule),this.macro[k]||cl.push(rule)),macros&&"string"==typeof macros){let vv=macros.split(";");for(var v of vv)k=getkey(v),this.macro[k]||cl.push(v)}if(cl&&cl.length>0&&cbGetMacro){let tm=await cbGetMacro(this.cat,cl);if(tm&&tm.length>0)for(var x of tm){let m=new Macro(this,x.name);for(var t in x.content){let contenuto=x.content[t];m[t]=contenuto}this.macro[m.key]=m}}}async setruleheader(rule,pars){var{name:name,cat:cat}=checkmu(rule,this.cat),ky=`${cat}/${name}`;if(!this.macro[ky]){let{head:head,rows:rows,macros:macros}=await this.getheaderfromdb(name);await this.getlinkedmacros(head.rule,macros);var tm=new Macro(this,name);if(!head)return void errori.add("Missing rule: "+rule);if(head.rule){let k2=this.macro[`${cat}/${head.rule}`];if(k2)for(var x in k2)["cat","name","key"].includes(x)||(tm[x]=k2[x])}rows&&rows.length&&(tm.head=rows),this.macro[ky]=tm}this.ruleheader=ky;let mc=this.macro[ky];return errori.azzera(),await mc.setparametri(pars),mc}getruleheader(){return this.macro[this.ruleheader]}
|
|
15
15
|
//!END_SYNC
|