subscript 7.6.0 → 7.6.1

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/justin.js CHANGED
@@ -71,8 +71,7 @@ token('false', 20, a => a ? err() : ['', false])
71
71
  // token('undefined', 20, a => a ? err() : ['', undefined])
72
72
  // token('NaN', 20, a => a ? err() : ['', NaN])
73
73
 
74
- // FIXME: make sure that is right
75
- set(';', -20, (...args) => { for (let i = args.length; i--;) if (args[i] != null) return args[i] })
74
+ set(';', -20, (...args) => args[args.length - 1])
76
75
 
77
76
  // right order
78
77
  // '**', (a,prec,b=expr(PREC_EXP-1)) => ctx=>a(ctx)**b(ctx), PREC_EXP,
package/justin.min.js CHANGED
@@ -1 +1 @@
1
- let e,t,r=r=>(e=0,t=r,r=a(),t[e]?l():r||""),l=(r="Bad syntax",l=t[e],n=t.slice(0,e).split("\n"),a=n.pop())=>{let s=t.slice(e-108,e).split("\n").pop(),i=t.slice(e+1,e+108).split("\n").shift();throw EvalError(`${r} at ${n.length}:${a.length} \`${s+l+i}\``,"font-weight: bold")},n=(r=1,l=e,n)=>{if("number"==typeof r)e+=r;else for(;n=r(t.charCodeAt(e));)e+=n;return t.slice(l,e)},a=(t=0,n,a,s,i,o)=>{for(;(a=r.space())&&(i=((o=p[a])&&o(s,t))??(!s&&r.id()));)s=i;return n&&(a==n?e++:l()),s},s=e=>e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>=192&&215!=e&&247!=e,i=r.space=r=>{for(;(r=t.charCodeAt(e))<=32;)e++;return r},o=r.id=e=>n(s),p=[],h=(r,l=32,n,a=r.charCodeAt(0),i=r.length,o=p[a],h=r.toUpperCase()!==r)=>p[a]=(a,p,c=e)=>p<l&&(i<2||t.substr(e,i)==r)&&(!h||!s(t.charCodeAt(e+i)))&&(e+=i,n(a,p))||(e=c,o?.(a,p)),c=(e,t,r=0)=>h(e,t,((l,n)=>l&&(n=a(t-r/2))&&[e,l,n])),f=(e,t,r)=>h(e,t,(l=>r?l&&[e,l]:!l&&(l=a(t-.5))&&[e,l])),u=(e,t,r)=>{h(e,t,((l,n)=>(l||r)&&((n=a(t))||r)&&((!l||l[0]!==e)&&(l=[e,l]),(n||r)&&l.push(n),l)))};const g=e=>Array.isArray(e)?d[e[0]](...e.slice(1)):t=>t?.[e],d={},m=(e,t,r=d[e])=>d[e]=(...e)=>t(...e)||r&&r(...e),A=e=>(e=r(e),t=>(e.call?e:e=g(e))(t)),b=(e,t,r)=>r.length?r.length>1?(c(e,Math.abs(t),t<0),m(e,((e,t)=>t&&(e=g(e),t=g(t),e.length||t.length?l=>r(e(l),t(l)):(e=r(e(),t()),()=>e))))):(f(e,t),m(e,((e,t)=>!t&&((e=g(e)).length?t=>r(e(t)):(e=r(e()),()=>e))))):(u(e,Math.abs(t),t<0),m(e,((...e)=>(e=e.map(g),t=>r(...e.map((e=>e(t)))))))),y=e=>e?l():["",(e=+n((e=>46===e||e>=48&&e<=57||(69===e||101===e?2:0))))!=e?l():e],C=(e,t,r,l)=>(h(e,t,(r=>r?["++"===e?"-":"+",[e,r],["",1]]:[e,a(t-1)])),m(e,l=(e,t)=>"("===e[0]?l(e[1]):"."===e[0]?(t=e[2],e=g(e[1]),l=>r(e(l),t)):"["===e[0]?([,e,t]=e,e=g(e),t=g(t),l=>r(e(l),t(l))):t=>r(t,e)));m("",(e=>()=>e)),p[34]=e=>e?l():["",(n()+n((e=>e-34?1:0))+(n()||l("Bad string"))).slice(1,-1)],p[46]=e=>!e&&y();for(let e=0;e<=9;e++)p[48+e]=y;b(",",1,((...e)=>e[e.length-1])),b("||",4,((...e)=>{let t,r=0;for(;!t&&r<e.length;)t=e[r++];return t})),b("&&",5,((...e)=>{let t=0,r=!0;for(;r&&t<e.length;)r=e[t++];return r})),c("=",10,!0),m("=",((e,t)=>{let r,n,a=g(t),s="string"==typeof e?(t,r)=>t[e]=r:"."===e[0]?(r=g(e[1]),n=e[2],(e,t)=>r(e)[n]=t):"["===e[0]?(r=g(e[1]),n=g(e[2]),(e,t)=>r(e)[n(e)]=t):l("Bad LHS");return e=>s(e,a(e))})),b("+",12,((e,t)=>e+t)),b("-",12,((e,t)=>e-t)),b("*",13,((e,t)=>e*t)),b("/",13,((e,t)=>e/t)),b("%",13,((e,t)=>e%t)),b("|",6,((e,t)=>e|t)),b("&",8,((e,t)=>e&t)),b("^",7,((e,t)=>e^t)),b("==",9,((e,t)=>e==t)),b("!=",9,((e,t)=>e!=t)),b(">",10,((e,t)=>e>t)),b(">=",10,((e,t)=>e>=t)),b("<",10,((e,t)=>e<t)),b("<=",10,((e,t)=>e<=t)),b(">>",11,((e,t)=>e>>t)),b(">>>",11,((e,t)=>e>>>t)),b("<<",11,((e,t)=>e<<t)),b("+",15,(e=>+e)),b("-",15,(e=>-e)),b("!",15,(e=>!e)),C("++",15,((e,t)=>++e[t])),C("--",15,((e,t)=>--e[t])),h("[",18,(e=>e&&["[",e,a(0,93)||l()])),m("[",((e,t)=>t&&(e=g(e),t=g(t),r=>e(r)[t(r)]))),h(".",18,((e,t)=>e&&(t=a(18))&&[".",e,t])),m(".",((e,t)=>(e=g(e),t=t[0]?t:t[1],r=>e(r)[t]))),h("(",18,(e=>!e&&["(",a(0,41)||l()])),h("(",18,((e,t)=>e&&((t=a(0,41))?["(",e,t]:["(",e,""]))),m("(",((e,t,r,l,n)=>null==t?g(e):(n=""==t?()=>[]:","===t[0]?(t=t.slice(1).map(g),e=>t.map((t=>t(e)))):(t=g(t),e=>[t(e)]),"."===e[0]?(r=e[2],e=g(e[1]),t=>e(t)[r](...n(t))):"["===e[0]?(r=g(e[2]),e=g(e[1]),t=>e(t)[r(t)](...n(t))):(e=g(e),t=>e(t)(...n(t))))));let B={n:"\n",r:"\r",t:"\t",b:"\b",f:"\f",v:"\v"},E=r=>(a,s,i="")=>{for(a&&l("Unexpected string"),n();(s=t.charCodeAt(e))-r;)92===s?(n(),s=n(),i+=B[s]||s):i+=n();return n()||l("Bad string"),["",i]};b("~",15,(e=>~e)),h("?",3,((e,t,r)=>e&&(t=a(2,58))&&["?",e,t,a(3)])),m("?",((e,t,r)=>(e=g(e),t=g(t),r=g(r),l=>e(l)?t(l):r(l)))),b("??",6,((e,t)=>e??t)),h("?.",18,(e=>e&&["?.",e])),m("?.",(e=>(e=g(e),t=>e(t)||(()=>{})))),h("?.",18,((e,t)=>e&&!(t=a(18))?.map&&["?.",e,t])),m("?.",((e,t)=>t&&(e=g(e),r=>e(r)?.[t]))),m("(",((e,t,r,l,n,a)=>null!=t&&"?."===e[0]&&(e[2]||Array.isArray(e[1]))&&(l=""==t?()=>[]:","===t[0]?(t=t.slice(1).map(g),e=>t.map((t=>t(e)))):(t=g(t),e=>[t(e)]),!e[2]&&(e=e[1]),n="["===e[0]?g(e[2]):t=>e[2],r=g(e[1]),e=>r(e)?.[n(e)]?.(...l(e))))),b("in",10,((e,t)=>e in t)),p[34]=E(34),p[39]=E(39),h("/*",20,((r,l)=>(n((r=>42!==r&&47!==t.charCodeAt(e+1))),n(2),r||a(l)||[""]))),h("//",20,((e,t)=>(n((e=>e>=32)),e||a(t)||[""]))),h("null",20,(e=>e?l():["",null])),h("true",20,(e=>e?l():["",!0])),h("false",20,(e=>e?l():["",!1])),b(";",-20,((...e)=>{for(let t=e.length;t--;)if(null!=e[t])return e[t]})),b("**",-14,((e,t)=>e**t)),h("[",20,(e=>!e&&["[",a(0,93)||""])),m("[",((e,t)=>!t&&(e?","===e[0]?(e=e.slice(1).map(g),t=>e.map((e=>e(t)))):(e=g(e),t=>[e(t)]):()=>[]))),h("{",20,(e=>!e&&["{",a(0,125)||""])),m("{",((e,t)=>e?","===e[0]?(e=e.slice(1).map(g),t=>Object.fromEntries(e.map((e=>e(t))))):":"===e[0]?(e=g(e),t=>Object.fromEntries([e(t)])):(t=g(e),r=>({[e]:t(r)})):e=>({}))),h(":",1.1,((e,t)=>[":",e,a(1.1)||l()])),m(":",((e,t)=>(t=g(t),e=Array.isArray(e)?g(e):(e=>e).bind(0,e),r=>[e(r),t(r)])));export{c as binary,g as compile,t as cur,A as default,l as err,a as expr,o as id,e as idx,s as isId,p as lookup,u as nary,m as operator,d as operators,r as parse,b as set,n as skip,i as space,h as token,f as unary};
1
+ let e,t,r=r=>(e=0,t=r,r=a(),t[e]?l():r||""),l=(r="Bad syntax",l=t[e],n=t.slice(0,e).split("\n"),a=n.pop())=>{let s=t.slice(e-108,e).split("\n").pop(),i=t.slice(e+1,e+108).split("\n").shift();throw EvalError(`${r} at ${n.length}:${a.length} \`${s+l+i}\``,"font-weight: bold")},n=(r=1,l=e,n)=>{if("number"==typeof r)e+=r;else for(;n=r(t.charCodeAt(e));)e+=n;return t.slice(l,e)},a=(t=0,n,a,s,i,p)=>{for(;(a=r.space())&&(i=((p=o[a])&&p(s,t))??(!s&&r.id()));)s=i;return n&&(a==n?e++:l()),s},s=e=>e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||36==e||95==e||e>=192&&215!=e&&247!=e,i=r.space=r=>{for(;(r=t.charCodeAt(e))<=32;)e++;return r},p=r.id=e=>n(s),o=[],h=(r,l=32,n,a=r.charCodeAt(0),i=r.length,p=o[a],h=r.toUpperCase()!==r)=>o[a]=(a,o,c=e)=>o<l&&(i<2||t.substr(e,i)==r)&&(!h||!s(t.charCodeAt(e+i)))&&(e+=i,n(a,o))||(e=c,p?.(a,o)),c=(e,t,r=0)=>h(e,t,((l,n)=>l&&(n=a(t-r/2))&&[e,l,n])),f=(e,t,r)=>h(e,t,(l=>r?l&&[e,l]:!l&&(l=a(t-.5))&&[e,l])),g=(e,t,r)=>{h(e,t,((l,n)=>(l||r)&&((n=a(t))||r)&&((!l||l[0]!==e)&&(l=[e,l]),(n||r)&&l.push(n),l)))};const d=e=>Array.isArray(e)?u[e[0]](...e.slice(1)):t=>t?.[e],u={},m=(e,t,r=u[e])=>u[e]=(...e)=>t(...e)||r&&r(...e),A=e=>(e=r(e),t=>(e.call?e:e=d(e))(t)),b=(e,t,r)=>r.length?r.length>1?(c(e,Math.abs(t),t<0),m(e,((e,t)=>t&&(e=d(e),t=d(t),e.length||t.length?l=>r(e(l),t(l)):(e=r(e(),t()),()=>e))))):(f(e,t),m(e,((e,t)=>!t&&((e=d(e)).length?t=>r(e(t)):(e=r(e()),()=>e))))):(g(e,Math.abs(t),t<0),m(e,((...e)=>(e=e.map(d),t=>r(...e.map((e=>e(t)))))))),y=e=>e?l():["",(e=+n((e=>46===e||e>=48&&e<=57||(69===e||101===e?2:0))))!=e?l():e],C=(e,t,r,l)=>(h(e,t,(r=>r?["++"===e?"-":"+",[e,r],["",1]]:[e,a(t-1)])),m(e,l=(e,t)=>"("===e[0]?l(e[1]):"."===e[0]?(t=e[2],e=d(e[1]),l=>r(e(l),t)):"["===e[0]?([,e,t]=e,e=d(e),t=d(t),l=>r(e(l),t(l))):t=>r(t,e)));m("",(e=>()=>e)),o[34]=e=>e?l():["",(n()+n((e=>e-34?1:0))+(n()||l("Bad string"))).slice(1,-1)],o[46]=e=>!e&&y();for(let e=0;e<=9;e++)o[48+e]=y;b(",",1,((...e)=>e[e.length-1])),b("||",4,((...e)=>{let t,r=0;for(;!t&&r<e.length;)t=e[r++];return t})),b("&&",5,((...e)=>{let t=0,r=!0;for(;r&&t<e.length;)r=e[t++];return r})),c("=",10,!0),m("=",((e,t)=>{let r,n,a=d(t),s="string"==typeof e?(t,r)=>t[e]=r:"."===e[0]?(r=d(e[1]),n=e[2],(e,t)=>r(e)[n]=t):"["===e[0]?(r=d(e[1]),n=d(e[2]),(e,t)=>r(e)[n(e)]=t):l("Bad LHS");return e=>s(e,a(e))})),b("+",12,((e,t)=>e+t)),b("-",12,((e,t)=>e-t)),b("*",13,((e,t)=>e*t)),b("/",13,((e,t)=>e/t)),b("%",13,((e,t)=>e%t)),b("|",6,((e,t)=>e|t)),b("&",8,((e,t)=>e&t)),b("^",7,((e,t)=>e^t)),b("==",9,((e,t)=>e==t)),b("!=",9,((e,t)=>e!=t)),b(">",10,((e,t)=>e>t)),b(">=",10,((e,t)=>e>=t)),b("<",10,((e,t)=>e<t)),b("<=",10,((e,t)=>e<=t)),b(">>",11,((e,t)=>e>>t)),b(">>>",11,((e,t)=>e>>>t)),b("<<",11,((e,t)=>e<<t)),b("+",15,(e=>+e)),b("-",15,(e=>-e)),b("!",15,(e=>!e)),C("++",15,((e,t)=>++e[t])),C("--",15,((e,t)=>--e[t])),h("[",18,(e=>e&&["[",e,a(0,93)||l()])),m("[",((e,t)=>t&&(e=d(e),t=d(t),r=>e(r)[t(r)]))),h(".",18,((e,t)=>e&&(t=a(18))&&[".",e,t])),m(".",((e,t)=>(e=d(e),t=t[0]?t:t[1],r=>e(r)[t]))),h("(",18,(e=>!e&&["(",a(0,41)||l()])),h("(",18,((e,t)=>e&&((t=a(0,41))?["(",e,t]:["(",e,""]))),m("(",((e,t,r,l,n)=>null==t?d(e):(n=""==t?()=>[]:","===t[0]?(t=t.slice(1).map(d),e=>t.map((t=>t(e)))):(t=d(t),e=>[t(e)]),"."===e[0]?(r=e[2],e=d(e[1]),t=>e(t)[r](...n(t))):"["===e[0]?(r=d(e[2]),e=d(e[1]),t=>e(t)[r(t)](...n(t))):(e=d(e),t=>e(t)(...n(t))))));let B={n:"\n",r:"\r",t:"\t",b:"\b",f:"\f",v:"\v"},E=r=>(a,s,i="")=>{for(a&&l("Unexpected string"),n();(s=t.charCodeAt(e))-r;)92===s?(n(),s=n(),i+=B[s]||s):i+=n();return n()||l("Bad string"),["",i]};b("~",15,(e=>~e)),h("?",3,((e,t,r)=>e&&(t=a(2,58))&&["?",e,t,a(3)])),m("?",((e,t,r)=>(e=d(e),t=d(t),r=d(r),l=>e(l)?t(l):r(l)))),b("??",6,((e,t)=>e??t)),h("?.",18,(e=>e&&["?.",e])),m("?.",(e=>(e=d(e),t=>e(t)||(()=>{})))),h("?.",18,((e,t)=>e&&!(t=a(18))?.map&&["?.",e,t])),m("?.",((e,t)=>t&&(e=d(e),r=>e(r)?.[t]))),m("(",((e,t,r,l,n,a)=>null!=t&&"?."===e[0]&&(e[2]||Array.isArray(e[1]))&&(l=""==t?()=>[]:","===t[0]?(t=t.slice(1).map(d),e=>t.map((t=>t(e)))):(t=d(t),e=>[t(e)]),!e[2]&&(e=e[1]),n="["===e[0]?d(e[2]):t=>e[2],r=d(e[1]),e=>r(e)?.[n(e)]?.(...l(e))))),b("in",10,((e,t)=>e in t)),o[34]=E(34),o[39]=E(39),h("/*",20,((r,l)=>(n((r=>42!==r&&47!==t.charCodeAt(e+1))),n(2),r||a(l)||[""]))),h("//",20,((e,t)=>(n((e=>e>=32)),e||a(t)||[""]))),h("null",20,(e=>e?l():["",null])),h("true",20,(e=>e?l():["",!0])),h("false",20,(e=>e?l():["",!1])),b(";",-20,((...e)=>e[e.length-1])),b("**",-14,((e,t)=>e**t)),h("[",20,(e=>!e&&["[",a(0,93)||""])),m("[",((e,t)=>!t&&(e?","===e[0]?(e=e.slice(1).map(d),t=>e.map((e=>e(t)))):(e=d(e),t=>[e(t)]):()=>[]))),h("{",20,(e=>!e&&["{",a(0,125)||""])),m("{",((e,t)=>e?","===e[0]?(e=e.slice(1).map(d),t=>Object.fromEntries(e.map((e=>e(t))))):":"===e[0]?(e=d(e),t=>Object.fromEntries([e(t)])):(t=d(e),r=>({[e]:t(r)})):e=>({}))),h(":",1.1,((e,t)=>[":",e,a(1.1)||l()])),m(":",((e,t)=>(t=d(t),e=Array.isArray(e)?d(e):(e=>e).bind(0,e),r=>[e(r),t(r)])));export{c as binary,d as compile,t as cur,A as default,l as err,a as expr,p as id,e as idx,s as isId,o as lookup,g as nary,m as operator,u as operators,r as parse,b as set,n as skip,i as space,h as token,f as unary};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "subscript",
3
- "version": "7.6.0",
3
+ "version": "7.6.1",
4
4
  "description": "Fast and tiny expression evaluator with minimal syntax.",
5
5
  "main": "subscript.js",
6
6
  "module": "subscript.js",
package/parse.js CHANGED
@@ -74,7 +74,11 @@ export let idx, cur,
74
74
 
75
75
  // right assoc is indicated by negative precedence (meaning go from right to left)
76
76
  binary = (op, prec, right = 0) => token(op, prec, (a, b) => a && (b = expr(prec - right / 2)) && [op, a, b]),
77
+
78
+ // post indicates postfix rather than prefix operator
77
79
  unary = (op, prec, post) => token(op, prec, a => post ? (a && [op, a]) : (!a && (a = expr(prec - .5)) && [op, a])),
80
+
81
+ // skips means ,,, ;;; are allowed
78
82
  nary = (op, prec, skips) => {
79
83
  token(op, prec, (a, b) => (
80
84
  (a || skips) && // if lhs exists or we're ok to skip