subscript 5.2.3 → 5.3.0
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/README.md +1 -1
- package/justin.js +5 -5
- package/justin.min.js +1 -1
- package/package.json +1 -1
- package/parse.js +2 -1
- package/subscript.js +3 -3
- package/subscript.min.js +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ _Subscript_ is designed to be useful for:
|
|
|
24
24
|
|
|
25
25
|
* templates (perfect match with [template parts](https://github.com/github/template-parts))
|
|
26
26
|
* expressions evaluators, calculators
|
|
27
|
-
* subsets of languages (eg. [justin](#justin)) <!-- see sonr, mineural -->
|
|
27
|
+
* configurable subsets of languages (eg. [justin](#justin)) <!-- see sonr, mineural -->
|
|
28
28
|
* mocking language features (eg. pipe operator)
|
|
29
29
|
* sandboxes, playgrounds, safe eval
|
|
30
30
|
* custom DSL
|
package/justin.js
CHANGED
|
@@ -111,15 +111,15 @@ addOps(parse.operator, 3, [
|
|
|
111
111
|
'.', PREC_CALL, (node,b) => node && [skip(),node, typeof (b = expr(PREC_CALL)) === 'string' ? '"' + b + '"' : b.valueOf()],
|
|
112
112
|
|
|
113
113
|
// a[b]
|
|
114
|
-
'[', PREC_CALL, (node) => (skip(), node = ['.', node, val(expr(0,CBRACK))],
|
|
114
|
+
'[', PREC_CALL, (node) => (skip(), node = ['.', node, val(expr(0,CBRACK))], node),
|
|
115
115
|
']',,,
|
|
116
116
|
|
|
117
117
|
// a(b)
|
|
118
|
-
'(', PREC_CALL, (node,b) => ( skip(), b=expr(0,CPAREN),
|
|
118
|
+
'(', PREC_CALL, (node,b) => ( skip(), b=expr(0,CPAREN),
|
|
119
119
|
Array.isArray(b) && b[0]===',' ? (b[0]=node, b) : b ? [node, val(b)] : [node]
|
|
120
120
|
),
|
|
121
121
|
// (a+b)
|
|
122
|
-
'(', PREC_GROUP, (node,b) => !node && (skip(), b=expr(0,CPAREN) || err(),
|
|
122
|
+
'(', PREC_GROUP, (node,b) => !node && (skip(), b=expr(0,CPAREN) || err(), b),
|
|
123
123
|
')',,,
|
|
124
124
|
|
|
125
125
|
// justin extension
|
|
@@ -143,12 +143,12 @@ addOps(parse.operator, 3, [
|
|
|
143
143
|
// as operator it's faster to lookup (no need to extra rule check), smaller and no conflict with word names
|
|
144
144
|
// [a,b,c]
|
|
145
145
|
'[', PREC_TOKEN, (node,arg) => !node && (
|
|
146
|
-
skip(), arg=expr(0,93),
|
|
146
|
+
skip(), arg=expr(0,93),
|
|
147
147
|
!arg ? ['['] : arg[0] == ',' ? (arg[0]='[',arg) : ['[',arg]
|
|
148
148
|
),
|
|
149
149
|
|
|
150
150
|
// {a:0, b:1}
|
|
151
|
-
'{', PREC_TOKEN, (node,arg) => !node && (skip(), arg=expr(0,125),
|
|
151
|
+
'{', PREC_TOKEN, (node,arg) => !node && (skip(), arg=expr(0,125),
|
|
152
152
|
!arg ? ['{'] : arg[0] == ':' ? ['{',arg] : arg[0] == ',' ? (arg[0]='{',arg) : ['{',arg])
|
|
153
153
|
,
|
|
154
154
|
|
package/justin.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,r,t=e=>Array.isArray(e)&&("string"==typeof e[0]||t(e[0])),a=(e,r={},o,s)=>t(e)?("string"==typeof(o=e[0])&&(s=n[o]),"function"!=typeof(o=s||a(o,r))?o:o.call(...e.map((e=>a(e,r))))):e&&"string"==typeof e?'"'===e[0]?e.slice(1,-1):"@"===e[0]?e.slice(1):e in r?r[e]:e:e,n={},o=(a.operator=(e,r)=>n[e]=2==r.length?(...e)=>e.reduce(r):r,(t,a)=>(r=t,e=0,a=p(),e<r.length?s():d(a))),s=(t="Bad syntax")=>{throw Error(t+" `"+r[e]+"` at "+e)},f=(t=1,a=e)=>{if("number"==typeof t)e+=t;else for(;t(i());)e++;return r.slice(a,e)},i=(t=0)=>r.charCodeAt(e+t),l=(t=1)=>r.substr(e,t),p=(e=0,r,t,a,n=0,
|
|
1
|
+
var e,r,t=e=>Array.isArray(e)&&("string"==typeof e[0]||t(e[0])),a=(e,r={},o,s)=>t(e)?("string"==typeof(o=e[0])&&(s=n[o]),"function"!=typeof(o=s||a(o,r))?o:o.call(...e.map((e=>a(e,r))))):e&&"string"==typeof e?'"'===e[0]?e.slice(1,-1):"@"===e[0]?e.slice(1):e in r?r[e]:e:e,n={},o=(a.operator=(e,r)=>n[e]=2==r.length?(...e)=>e.reduce(r):r,(t,a)=>(r=t,e=0,a=p(),e<r.length?s():d(a))),s=(t="Bad syntax")=>{throw Error(t+" `"+r[e]+"` at "+e)},f=(t=1,a=e)=>{if("number"==typeof t)e+=t;else for(;t(i());)e++;return r.slice(a,e)},i=(t=0)=>r.charCodeAt(e+t),l=(t=1)=>r.substr(e,t),p=(e=0,r,t,a,n=0,i,l)=>{for(;(t=o.space())&&(l=y[t]?.(a,e)||!a&&c(t));)a=l;return r&&(t!=r?s("Unclosed paren"):f()),a},u=(o.space=r=>{for(;(r=i())<=32;)e++;return r},o.token=[]),c=(e,r=0,t)=>{for(;r<u.length;)if(t=u[r++](e))return t},y=[],d=(o.operator=(r,t=0,a=0,n,u=r.charCodeAt(0),c=r.length,h=y[u],v=a<=0&&r.toUpperCase()!==r)=>(n=a?a>0?e=>e&&[f(c),d(e)]:a<0?e=>!e&&[f(c),d(p(t-1))]:a:a=>{a=[r,a||s()];do{e+=c,a.push(d(p(t)))}while(o.space()==u&&(c<2||l(c)==r)&&(!v||i(c)<=32));return a},y[u]=(e,a)=>a<t&&(c<2||l(c)==r)&&(!v||i(c)<=32)&&n(e)||h&&h(e,a)),e=>Array.isArray(e)?e:(e||s()).valueOf()),h=10,v=15,g=20;o.token.push((e=>(e=f((e=>e>47&&e<58||46==e)))&&((69==i()||101==i())&&(e+=f(2)+f((e=>e>=48&&e<=57))),isNaN(e=new Number(e))?s("Bad number"):e)),((e,r,t,a)=>{if(34===e||39===e){for(r=l(),f(),a="";(t=i())-e;)92===t?(f(),a+=A[l()]||l()):a+=l(),f();return f(),r+a+r}}),(e=>f((e=>e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>=192&&215!=e&&247!=e))));var A={n:"\n",r:"\r",t:"\t",b:"\b",f:"\f",v:"\v"};o.space=e=>{for(;(e=i())<=32||47===e;)if(e<=32)f();else if(47===e)if(42===i(1))f(2),f((e=>42!==e&&47!==i(1))),f(2);else{if(47!==i(1))break;f(2),f((e=>e>=32))}return e};var b=(e,r=2,t)=>{for(let a=0;a<t.length;a+=r)e(t[a],t[a+1],t[a+2])};b(o.operator,3,[",",1,,"|",6,,"||",4,,"&",8,,"&&",5,,"^",7,,"==",9,,"!=",9,,">",h,,">=",h,,">>",11,,">>>",11,,"<",h,,"<=",h,,"<<",11,,"+",12,,"+",v,-1,"++",v,-1,"++",v,1,"-",12,,"-",v,-1,"--",v,-1,"--",v,1,"!",v,-1,"*",13,,"/",13,,"%",13,,".",18,(e,r)=>e&&[f(),e,"string"==typeof(r=p(18))?'"'+r+'"':r.valueOf()],"[",18,e=>(f(),[".",e,d(p(0,93))]),"]",,,"(",18,(e,r)=>(f(),r=p(0,41),Array.isArray(r)&&","===r[0]?(r[0]=e,r):r?[e,d(r)]:[e]),"(",19,(e,r)=>!e&&(f(),p(0,41)||s()),")",,,";",1,,"===",9,,"!==",9,,"**",14,,"~",v,-1,"?",3,e=>{let r,t;return e||s("Expected expression"),f(),o.space(),r=p(),58!==i()&&s("Expected :"),f(),o.space(),t=p(),["?:",e,r,t]},"}",,,":",,,"in",h,e=>i(2)<=32&&[f(2),'"'+e+'"',p(h)],"[",g,(e,r)=>!e&&(f(),(r=p(0,93))?","==r[0]?(r[0]="[",r):["[",r]:["["]),"{",g,(e,r)=>!e&&(f(),(r=p(0,125))?":"==r[0]?["{",r]:","==r[0]?(r[0]="{",r):["{",r]:["{"]),"null",g,e=>!e&&(f(4),m(null)),"false",g,e=>!e&&(f(5),m(!1)),"true",g,e=>!e&&(f(4),m(!0)),"undefined",g,e=>!e&&(f(9),m(void 0))]);var m=e=>({valueOf:()=>e});b(a.operator,2,["!",e=>!e,"++",e=>++e,"--",e=>--e,".",(e,r)=>e&&e[r],"%",(e,r)=>e%r,"/",(e,r)=>e/r,"*",(e,r)=>e*r,"+",(e,r)=>e+r,"-",(...e)=>e.length<2?-e:e.reduce(((e,r)=>e-r)),">>>",(e,r)=>e>>>r,">>",(e,r)=>e>>r,"<<",(e,r)=>e<<r,">=",(e,r)=>e>=r,">",(e,r)=>e>r,"<=",(e,r)=>e<=r,"<",(e,r)=>e<r,"!=",(e,r)=>e!=r,"==",(e,r)=>e==r,"&",(e,r)=>e&r,"^",(e,r)=>e^r,"|",(e,r)=>e|r,"&&",(...e)=>e.every(Boolean),"||",(...e)=>e.some(Boolean),",",(e,r)=>r,"**",(...e)=>e.reduceRight(((e,r)=>Math.pow(r,e))),"~",e=>~e,"?:",(e,r,t)=>e?r:t,"in",(e,r)=>e in r,"[",(...e)=>Array(...e),"{",(...e)=>Object.fromEntries(e),":",(e,r)=>[e,r]]);var x=e=>(e="string"==typeof e?o(e):e,r=>a(e,r));export{x as default,a as evaluate,o as parse};
|
package/package.json
CHANGED
package/parse.js
CHANGED
|
@@ -24,7 +24,8 @@ expr = (prec=0, end, cc, node, i=0, map, newNode) => {
|
|
|
24
24
|
(cc=parse.space()) && (newNode = lookup[cc]?.(node, prec) || (!node && token(cc)) )
|
|
25
25
|
) node = newNode;
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
// skip end character, if expected
|
|
28
|
+
if (end) cc != end ? err('Unclosed paren') : skip()
|
|
28
29
|
|
|
29
30
|
return node
|
|
30
31
|
},
|
package/subscript.js
CHANGED
|
@@ -76,15 +76,15 @@ addOps(parseOp, 3, [
|
|
|
76
76
|
'.', PREC_CALL, (node,b) => node && [skip(),node, typeof (b = expr(PREC_CALL)) === 'string' ? '"' + b + '"' : b.valueOf()],
|
|
77
77
|
|
|
78
78
|
// a[b]
|
|
79
|
-
'[', PREC_CALL, (node) => (skip(), node = ['.', node, val(expr(0,CBRACK))],
|
|
79
|
+
'[', PREC_CALL, (node) => (skip(), node = ['.', node, val(expr(0,CBRACK))], node),
|
|
80
80
|
']',,,
|
|
81
81
|
|
|
82
82
|
// a(b)
|
|
83
|
-
'(', PREC_CALL, (node,b) => ( skip(), b=expr(0,CPAREN),
|
|
83
|
+
'(', PREC_CALL, (node,b) => ( skip(), b=expr(0,CPAREN),
|
|
84
84
|
Array.isArray(b) && b[0]===',' ? (b[0]=node, b) : b ? [node, val(b)] : [node]
|
|
85
85
|
),
|
|
86
86
|
// (a+b)
|
|
87
|
-
'(', PREC_GROUP, (node,b) => !node && (skip(), b=expr(0,CPAREN) || err(),
|
|
87
|
+
'(', PREC_GROUP, (node,b) => !node && (skip(), b=expr(0,CPAREN) || err(), b),
|
|
88
88
|
')',,,
|
|
89
89
|
])
|
|
90
90
|
|
package/subscript.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var r,e,t=(t,o)=>(e=t,r=0,o=l(),r<e.length?a():y(o)),a=(t="Bad syntax")=>{throw Error(t+" `"+e[r]+"` at "+r)},o=(t=1,a=r)=>{if("number"==typeof t)r+=t;else for(;t(n());)r++;return e.slice(a,r)},n=(t=0)=>e.charCodeAt(r+t),s=(t=1)=>e.substr(r,t),l=(r=0,e,
|
|
1
|
+
var r,e,t=(t,o)=>(e=t,r=0,o=l(),r<e.length?a():y(o)),a=(t="Bad syntax")=>{throw Error(t+" `"+e[r]+"` at "+r)},o=(t=1,a=r)=>{if("number"==typeof t)r+=t;else for(;t(n());)r++;return e.slice(a,r)},n=(t=0)=>e.charCodeAt(r+t),s=(t=1)=>e.substr(r,t),l=(r=0,e,n,s,l=0,p,i)=>{for(;(n=t.space())&&(i=u[n]?.(s,r)||!s&&f(n));)s=i;return e&&(n!=e?a("Unclosed paren"):o()),s},p=(t.space=e=>{for(;(e=n())<=32;)r++;return e},t.token=[]),f=(r,e=0,t)=>{for(;e<p.length;)if(t=p[e++](r))return t},u=[],i=t.operator=(e,p=0,f=0,i,c=e.charCodeAt(0),h=e.length,g=u[c],d=f<=0&&e.toUpperCase()!==e)=>(i=f?f>0?r=>r&&[o(h),y(r)]:f<0?r=>!r&&[o(h),y(l(p-1))]:f:o=>{o=[e,o||a()];do{r+=h,o.push(y(l(p)))}while(t.space()==c&&(h<2||s(h)==e)&&(!d||n(h)<=32));return o},u[c]=(r,t)=>t<p&&(h<2||s(h)==e)&&(!d||n(h)<=32)&&i(r)||g&&g(r,t)),y=r=>Array.isArray(r)?r:(r||a()).valueOf(),c=t,h=r=>Array.isArray(r)&&("string"==typeof r[0]||h(r[0])),g=(r,e={},t,a)=>h(r)?("string"==typeof(t=r[0])&&(a=d[t]),"function"!=typeof(t=a||g(t,e))?t:t.call(...r.map((r=>g(r,e))))):r&&"string"==typeof r?'"'===r[0]?r.slice(1,-1):"@"===r[0]?r.slice(1):r in e?e[r]:r:r,d={},A=g.operator=(r,e)=>d[r]=2==e.length?(...r)=>r.reduce(e):e,v=g;p.push((r=>(r=o((r=>r>47&&r<58||46==r)))&&((69==n()||101==n())&&(r+=o(2)+o((r=>r>=48&&r<=57))),isNaN(r=new Number(r))?err("Bad number"):r)),((r,e)=>34==r&&o()+o((e=>e-r))+o()),(r=>o((r=>r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||36==r||95==r||r>=192))));var m=(r,e=2,t)=>{for(let a=0;a<t.length;a+=e)r(t[a],t[a+1],t[a+2])};m(i,3,[",",1,,"|",6,,"||",4,,"&",8,,"&&",5,,"^",7,,"==",9,,"!=",9,,">",10,,">=",10,,">>",11,,">>>",11,,"<",10,,"<=",10,,"<<",11,,"+",12,,"+",15,-1,"++",15,-1,"++",16,1,"-",12,,"-",15,-1,"--",15,-1,"--",16,1,"!",15,-1,"*",13,,"/",13,,"%",13,,".",18,(r,e)=>r&&[o(),r,"string"==typeof(e=l(18))?'"'+e+'"':e.valueOf()],"[",18,r=>(o(),[".",r,y(l(0,93))]),"]",,,"(",18,(r,e)=>(o(),e=l(0,41),Array.isArray(e)&&","===e[0]?(e[0]=r,e):e?[r,y(e)]:[r]),"(",19,(r,e)=>!r&&(o(),l(0,41)||err()),")",,,]),m(A,2,["!",r=>!r,"++",r=>++r,"--",r=>--r,".",(r,e)=>r&&r[e],"%",(r,e)=>r%e,"/",(r,e)=>r/e,"*",(r,e)=>r*e,"+",(r,e)=>r+e,"-",(...r)=>r.length<2?-r:r.reduce(((r,e)=>r-e)),">>>",(r,e)=>r>>>e,">>",(r,e)=>r>>e,"<<",(r,e)=>r<<e,">=",(r,e)=>r>=e,">",(r,e)=>r>e,"<=",(r,e)=>r<=e,"<",(r,e)=>r<e,"!=",(r,e)=>r!=e,"==",(r,e)=>r==e,"&",(r,e)=>r&e,"^",(r,e)=>r^e,"|",(r,e)=>r|e,"&&",(...r)=>r.every(Boolean),"||",(...r)=>r.some(Boolean),",",(r,e)=>e]);var b=r=>(r="string"==typeof r?c(r):r,e=>v(r,e));export{b as default,v as evaluate,c as parse};
|