rip-lang 2.8.7 → 2.8.8

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 CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-2.8.7-blue.svg" alt="Version"></a>
12
+ <a href="CHANGELOG.md"><img src="https://img.shields.io/badge/version-2.8.8-blue.svg" alt="Version"></a>
13
13
  <a href="#zero-dependencies"><img src="https://img.shields.io/badge/dependencies-ZERO-brightgreen.svg" alt="Dependencies"></a>
14
14
  <a href="#"><img src="https://img.shields.io/badge/tests-1098%2F1098-brightgreen.svg" alt="Tests"></a>
15
15
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"></a>
@@ -339,6 +339,9 @@ ${code}`;
339
339
  return sup.length + 3;
340
340
  }
341
341
  prev = this.prev();
342
+ if (colon && prev && prev[0] === "SPACE?") {
343
+ colon = null;
344
+ }
342
345
  tag = colon || prev != null && ((ref5 = prev[0]) === "." || ref5 === "?." || ref5 === "::" || ref5 === "?::" || !prev.spaced && prev[0] === "@") ? "PROPERTY" : "IDENTIFIER";
343
346
  tokenData = {};
344
347
  if (tag === "IDENTIFIER" && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(RIP_KEYWORDS, id) >= 0) && !(this.exportSpecifierList && indexOf.call(RIP_KEYWORDS, id) >= 0)) {
@@ -7627,8 +7630,8 @@ function compileToJS(source, options = {}) {
7627
7630
  return new Compiler(options).compileToJS(source);
7628
7631
  }
7629
7632
  // src/browser.js
7630
- var VERSION = "2.8.7";
7631
- var BUILD_DATE = "2026-02-04@11:45:06GMT";
7633
+ var VERSION = "2.8.8";
7634
+ var BUILD_DATE = "2026-02-04@12:47:34GMT";
7632
7635
  var dedent = (s) => {
7633
7636
  const m = s.match(/^[ \t]*(?=\S)/gm);
7634
7637
  const i = Math.min(...(m || []).map((x) => x.length));
@@ -2,7 +2,7 @@ var j1,R2,c2,F1,K1,A2,_2,l2,E2,V1,b1,n,y1,k,m,U2,$2,X2,Y2,F2,G2,M2,Z2,u1,J2,g1,v
2
2
  `)[$],U=_,Y=$===E?X+1:A.length,F=A.slice(0,U).replace(/[^\s]/g," ")+x2("^",Y-U),G=typeof process<"u"&&process!==null&&process.stdout?.isTTY&&!process.env?.NODE_DISABLE_COLORS;if(this.colorful!=null?this.colorful:G){var Z=(M)=>`\x1B[1;31m${M}\x1B[0m`;A=A.slice(0,U)+Z(A.slice(U,Y))+A.slice(Y),F=Z(F)}return`${R}:${$+1}:${_+1}: error: ${this.message}
3
3
  ${A}
4
4
  ${F}`},a2=function($,_){var E=SyntaxError($);throw E.location=_,E.toString=n2,E.stack=E.toString(),E},o2=/(\\\\)|\\u\{([\da-fA-F]+)\}/g,t2=function($){var _=function(R){var A=R.toString(16);return`\\u${x2("0",4-A.length)}${A}`};if($<65536)return _($);var E=Math.floor(($-65536)/1024)+55296,X=($-65536)%1024+56320;return`${_(E)}${_(X)}`},e2=function($,{flags:_,error:E,delimiter:X=""}={}){var R=_!=null&&I.call(_,"u")<0;return $.replace(o2,function(A,U,Y,F){if(U)return U;var G=parseInt(Y,16);if(G>1114111)E("unicode code point escapes greater than \\u{10ffff} are not allowed",{offset:F+X.length,length:Y.length+4});if(!R)return A;return t2(G)})},m1=class ${constructor(){this.error=this.error.bind(this)}tokenize(_,E={}){var X,R,A,U;this.indent=0,this.baseIndent=0,this.overIndent=0,this.outdebt=0,this.indents=[],this.indentLiteral="",this.ends=[],this.tokens=[],this.seenFor=!1,this.seenImport=!1,this.seenExport=!1,this.importSpecifierList=!1,this.exportSpecifierList=!1,this.chunkLine=E.line||0,this.chunkColumn=E.column||0,this.chunkOffset=E.offset||0,this.locTweaks=E.locTweaks||{},_=this.clean(_),A=0;while(this.chunk=_.slice(A))if(X=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),[this.chunkLine,this.chunkColumn,this.chunkOffset]=this.getLineAndColumnFromChunk(X),A+=X,E.untilBalanced&&this.ends.length===0)return{tokens:this.tokens,index:A};if(this.closeIndentation(),R=this.ends.pop())this.error(`missing ${R.tag}`,((U=R.origin)!=null?U:R)[2]);if(E.rewrite===!1)return this.tokens;return new w2().rewrite(this.tokens)}clean(_){var E,X;if(X=0,_.charCodeAt(0)===R2)_=_.slice(1),this.locTweaks[0]=1,X+=1;if(h1.test(_)){if(_=`
5
- ${_}`,this.chunkLine--,(E=this.locTweaks)[0]==null)E[0]=0;this.locTweaks[0]-=1}return _.replace(/\r/g,(R,A)=>{return this.locTweaks[X+A]=1,""}).replace(f2,"")}identifierToken(){var _,E,X,R,A,U,Y,F,G,Z,M,D,Q,J,K,q,N,W,z,H,O,S,T,B,L,j,w,P,V,v;if(/^~[=>]/.test(this.chunk)||/^=!/.test(this.chunk))return 0;if(!(G=Z2.exec(this.chunk)))return 0;if([F,U,X]=G,Y=U.length,Z=void 0,U==="own"&&this.tag()==="FOR")return this.token("OWN",U),U.length;if(U==="from"&&this.tag()==="YIELD")return this.token("FROM",U),U.length;if(U==="as"&&this.seenImport){if(this.value()==="*")this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(Q=this.value(!0),I.call(i,Q)>=0)M=this.prev(),[M[0],M[1]]=["IDENTIFIER",this.value(!0)];if((J=this.tag())==="DEFAULT"||J==="IMPORT_ALL"||J==="IDENTIFIER")return this.token("AS",U),U.length}if(U==="as"&&this.seenExport){if((W=this.tag())==="IDENTIFIER"||W==="DEFAULT")return this.token("AS",U),U.length;if(z=this.value(!0),I.call(i,z)>=0)return M=this.prev(),[M[0],M[1]]=["IDENTIFIER",this.value(!0)],this.token("AS",U),U.length}if(U==="default"&&this.seenExport&&((H=this.tag())==="EXPORT"||H==="AS"))return this.token("DEFAULT",U),U.length;if(U==="do"&&(j=/^(\s*super)(?!\(\))/.exec(this.chunk.slice(3))))return this.token("SUPER","super"),this.token("CALL_START","("),this.token("CALL_END",")"),[F,w]=j,w.length+3;if(M=this.prev(),P=X||M!=null&&((O=M[0])==="."||O==="?."||O==="::"||O==="?::"||!M.spaced&&M[0]==="@")?"PROPERTY":"IDENTIFIER",v={},P==="IDENTIFIER"&&(I.call(N1,U)>=0||I.call(i,U)>=0)&&!(this.exportSpecifierList&&I.call(i,U)>=0)){if(P=U.toUpperCase(),P==="WHEN"&&(S=this.tag(),I.call(W2,S)>=0))P="LEADING_WHEN";else if(P==="FOR")this.seenFor={endsLength:this.ends.length};else if(P==="UNLESS");else if(P==="IMPORT")this.seenImport=!0;else if(P==="EXPORT")this.seenExport=!0;else if(I.call(f1,P)>=0)P="UNARY";else if(I.call(I2,P)>=0){if(P!=="INSTANCEOF"&&this.seenFor)P="FOR"+P,this.seenFor=!1;else if(P="RELATION",this.value()==="!")Z=this.tokens.pop(),v.invert=(T=(B=Z.data)!=null?B.original:void 0)!=null?T:Z[1]}}else if(P==="IDENTIFIER"&&this.seenFor&&U==="from"&&g2(M))P="FORFROM",this.seenFor=!1;else if(P==="PROPERTY"&&M){if(M.spaced&&(L=M[0],I.call(F1,L)>=0)&&/^[gs]et$/.test(M[1])&&this.tokens.length>1&&((K=this.tokens[this.tokens.length-2][0])!=="."&&K!=="?."&&K!=="@"))this.error(`'${M[1]}' cannot be used as a keyword, or as a function call without parentheses`,M[2]);else if(M[0]==="."&&this.tokens.length>1&&(D=this.tokens[this.tokens.length-2])[0]==="UNARY"&&D[1]==="new")D[0]="NEW_TARGET";else if(M[0]==="."&&this.tokens.length>1&&(D=this.tokens[this.tokens.length-2])[0]==="IMPORT"&&D[1]==="import")this.seenImport=!1,D[0]="IMPORT_META";else if(this.tokens.length>2){if(D=this.tokens[this.tokens.length-2],((q=M[0])==="@"||q==="THIS")&&D&&D.spaced&&/^[gs]et$/.test(D[1])&&((N=this.tokens[this.tokens.length-3][0])!=="."&&N!=="?."&&N!=="@"))this.error(`'${D[1]}' cannot be used as a keyword, or as a function call without parentheses`,D[2])}}if(P==="IDENTIFIER"&&I.call(q1,U)>=0)this.error(`reserved word '${U}'`,{length:U.length});if(!(P==="PROPERTY"||this.exportSpecifierList||this.importSpecifierList)){if(U==="is"&&this.chunk.slice(Y,Y+4)===" not"){if(_=this.chunk.slice(Y+4).trim(),!_.match(/^(false|true)\s+(is|isnt|==|!=)/))U="isnt",Y+=4}if(I.call(c1,U)>=0)E=U,U=l1[U],v.original=E;P=function(){switch(U){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"true":case"false":return"BOOL";case"break":case"continue":case"debugger":return"STATEMENT";case"&&":case"||":return U;default:return P}}()}let C=Y;if(U.length>1&&U.endsWith("!"))v.await=!0,U=U.slice(0,-1);if(V=this.token(P,U,{length:C,data:v}),E)V.origin=[P,E,V[2]];if(Z)[V[2].first_line,V[2].first_column,V[2].range[0]]=[Z[2].first_line,Z[2].first_column,Z[2].range[0]];if(X)R=F.lastIndexOf(":"),A=this.token(":",":",{offset:R});if(X)return C+X.length;else return C}commentToken(_=this.chunk,{heregex:E,returnCommentTokens:X=!1,offsetInChunk:R=0}={}){var A,U,Y,F,G,Z,M,D,Q,J,K,q,N,W,z,H,O,S,T,B,L,j,w,P,V,v;if(!(T=_.match(_2)))return 0;if([Y,Q,D,J,S]=T,G=null,N=/^\s*\n+\s*#/.test(Y),D){if(B=U2.exec(D),B)this.error(`block comments cannot contain ${B[0]}`,{offset:3+B.index,length:B[0].length});_=_.replace(`###${D}###`,""),_=_.replace(/^\n+/,""),this.lineToken({chunk:_}),F=D,G=[{content:F,length:Y.length-Q.length-J.length,leadingWhitespace:Q}]}else z="",F=S.replace(/^(\n*)/,function(C){return z=C,""}),V="",M=!1,G=F.split(`
5
+ ${_}`,this.chunkLine--,(E=this.locTweaks)[0]==null)E[0]=0;this.locTweaks[0]-=1}return _.replace(/\r/g,(R,A)=>{return this.locTweaks[X+A]=1,""}).replace(f2,"")}identifierToken(){var _,E,X,R,A,U,Y,F,G,Z,M,D,Q,J,K,q,N,W,z,H,O,S,T,B,L,j,w,P,V,v;if(/^~[=>]/.test(this.chunk)||/^=!/.test(this.chunk))return 0;if(!(G=Z2.exec(this.chunk)))return 0;if([F,U,X]=G,Y=U.length,Z=void 0,U==="own"&&this.tag()==="FOR")return this.token("OWN",U),U.length;if(U==="from"&&this.tag()==="YIELD")return this.token("FROM",U),U.length;if(U==="as"&&this.seenImport){if(this.value()==="*")this.tokens[this.tokens.length-1][0]="IMPORT_ALL";else if(Q=this.value(!0),I.call(i,Q)>=0)M=this.prev(),[M[0],M[1]]=["IDENTIFIER",this.value(!0)];if((J=this.tag())==="DEFAULT"||J==="IMPORT_ALL"||J==="IDENTIFIER")return this.token("AS",U),U.length}if(U==="as"&&this.seenExport){if((W=this.tag())==="IDENTIFIER"||W==="DEFAULT")return this.token("AS",U),U.length;if(z=this.value(!0),I.call(i,z)>=0)return M=this.prev(),[M[0],M[1]]=["IDENTIFIER",this.value(!0)],this.token("AS",U),U.length}if(U==="default"&&this.seenExport&&((H=this.tag())==="EXPORT"||H==="AS"))return this.token("DEFAULT",U),U.length;if(U==="do"&&(j=/^(\s*super)(?!\(\))/.exec(this.chunk.slice(3))))return this.token("SUPER","super"),this.token("CALL_START","("),this.token("CALL_END",")"),[F,w]=j,w.length+3;if(M=this.prev(),X&&M&&M[0]==="SPACE?")X=null;if(P=X||M!=null&&((O=M[0])==="."||O==="?."||O==="::"||O==="?::"||!M.spaced&&M[0]==="@")?"PROPERTY":"IDENTIFIER",v={},P==="IDENTIFIER"&&(I.call(N1,U)>=0||I.call(i,U)>=0)&&!(this.exportSpecifierList&&I.call(i,U)>=0)){if(P=U.toUpperCase(),P==="WHEN"&&(S=this.tag(),I.call(W2,S)>=0))P="LEADING_WHEN";else if(P==="FOR")this.seenFor={endsLength:this.ends.length};else if(P==="UNLESS");else if(P==="IMPORT")this.seenImport=!0;else if(P==="EXPORT")this.seenExport=!0;else if(I.call(f1,P)>=0)P="UNARY";else if(I.call(I2,P)>=0){if(P!=="INSTANCEOF"&&this.seenFor)P="FOR"+P,this.seenFor=!1;else if(P="RELATION",this.value()==="!")Z=this.tokens.pop(),v.invert=(T=(B=Z.data)!=null?B.original:void 0)!=null?T:Z[1]}}else if(P==="IDENTIFIER"&&this.seenFor&&U==="from"&&g2(M))P="FORFROM",this.seenFor=!1;else if(P==="PROPERTY"&&M){if(M.spaced&&(L=M[0],I.call(F1,L)>=0)&&/^[gs]et$/.test(M[1])&&this.tokens.length>1&&((K=this.tokens[this.tokens.length-2][0])!=="."&&K!=="?."&&K!=="@"))this.error(`'${M[1]}' cannot be used as a keyword, or as a function call without parentheses`,M[2]);else if(M[0]==="."&&this.tokens.length>1&&(D=this.tokens[this.tokens.length-2])[0]==="UNARY"&&D[1]==="new")D[0]="NEW_TARGET";else if(M[0]==="."&&this.tokens.length>1&&(D=this.tokens[this.tokens.length-2])[0]==="IMPORT"&&D[1]==="import")this.seenImport=!1,D[0]="IMPORT_META";else if(this.tokens.length>2){if(D=this.tokens[this.tokens.length-2],((q=M[0])==="@"||q==="THIS")&&D&&D.spaced&&/^[gs]et$/.test(D[1])&&((N=this.tokens[this.tokens.length-3][0])!=="."&&N!=="?."&&N!=="@"))this.error(`'${D[1]}' cannot be used as a keyword, or as a function call without parentheses`,D[2])}}if(P==="IDENTIFIER"&&I.call(q1,U)>=0)this.error(`reserved word '${U}'`,{length:U.length});if(!(P==="PROPERTY"||this.exportSpecifierList||this.importSpecifierList)){if(U==="is"&&this.chunk.slice(Y,Y+4)===" not"){if(_=this.chunk.slice(Y+4).trim(),!_.match(/^(false|true)\s+(is|isnt|==|!=)/))U="isnt",Y+=4}if(I.call(c1,U)>=0)E=U,U=l1[U],v.original=E;P=function(){switch(U){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"true":case"false":return"BOOL";case"break":case"continue":case"debugger":return"STATEMENT";case"&&":case"||":return U;default:return P}}()}let C=Y;if(U.length>1&&U.endsWith("!"))v.await=!0,U=U.slice(0,-1);if(V=this.token(P,U,{length:C,data:v}),E)V.origin=[P,E,V[2]];if(Z)[V[2].first_line,V[2].first_column,V[2].range[0]]=[Z[2].first_line,Z[2].first_column,Z[2].range[0]];if(X)R=F.lastIndexOf(":"),A=this.token(":",":",{offset:R});if(X)return C+X.length;else return C}commentToken(_=this.chunk,{heregex:E,returnCommentTokens:X=!1,offsetInChunk:R=0}={}){var A,U,Y,F,G,Z,M,D,Q,J,K,q,N,W,z,H,O,S,T,B,L,j,w,P,V,v;if(!(T=_.match(_2)))return 0;if([Y,Q,D,J,S]=T,G=null,N=/^\s*\n+\s*#/.test(Y),D){if(B=U2.exec(D),B)this.error(`block comments cannot contain ${B[0]}`,{offset:3+B.index,length:B[0].length});_=_.replace(`###${D}###`,""),_=_.replace(/^\n+/,""),this.lineToken({chunk:_}),F=D,G=[{content:F,length:Y.length-Q.length-J.length,leadingWhitespace:Q}]}else z="",F=S.replace(/^(\n*)/,function(C){return z=C,""}),V="",M=!1,G=F.split(`
6
6
  `).map(function(C,l){var f,t;if(!(C.indexOf("#")>-1)){V+=`
7
7
  ${C}`;return}return t="",F=C.replace(/^([ |\t]*)#/,function(g,Z1){return t=Z1,""}),f={content:F,length:1+F.length,leadingWhitespace:`${!M?z:""}${V}${t}`,precededByBlankLine:!!V},M=!0,V="",f}).filter(function(C){return C});if(Z=function({leadingWhitespace:C,nonInitial:l}){var f=C.lastIndexOf(`
8
8
  `);if(D!=null||!l){if(!(f>-1))return null}else if(f==null)f=-1;return C.length-1-f},U=function(){var C,l,f;f=[];for(K=C=0,l=G.length;C<l;K=++C){if({content:F,length:O,leadingWhitespace:H,precededByBlankLine:P}=G[K],j=K!==0,W=j?1:0,R+=W+H.length,q=Z({leadingWhitespace:H,nonInitial:j}),L=q==null||q===-1,A={content:F,here:D!=null,newLine:N||j,locationData:this.makeLocationData({offsetInChunk:R,length:O}),precededByBlankLine:P,indentSize:q,indented:!L&&q>this.indent,outdented:!L&&q<this.indent},E)A.heregex=!0;R+=O,f.push(A)}return f}.call(this),v=this.prev(),!v)U[0].newLine=!0,this.lineToken({chunk:this.chunk.slice(Y.length),offset:Y.length}),w=this.makeToken("JS","",{offset:Y.length,generated:!0}),w.comments=U,this.tokens.push(w),this.newlineToken(Y.length);else e1(U,v);if(X)return U;return Y.length}whitespaceToken(){var _,E,X;if(!((_=h1.exec(this.chunk))||(E=this.chunk.charAt(0)===`
@@ -530,4 +530,4 @@ function __catchErrors(fn) {
530
530
  `),X=E.findIndex((G)=>G==="__DATA__");if(X!==-1){let G=E.slice(X+1);_=G.length>0?G.join(`
531
531
  `)+`
532
532
  `:"",$=E.slice(0,X).join(`
533
- `)}let A=new m1().tokenize($);if(this.options.showTokens)A.forEach((G)=>console.log(`${G[0].padEnd(12)} ${JSON.stringify(G[1])}`)),console.log();$1.lexer={tokens:A,pos:0,setInput:function(){},lex:function(){if(this.pos>=this.tokens.length)return 1;let G=this.tokens[this.pos++];return this.yytext=G[1],this.yylloc=G[2],G[0]}};let U;try{U=$1.parse($)}catch(G){if(/\?\s*\([^)]*\?[^)]*:[^)]*\)\s*:/.test($)||/\?\s+\w+\s+\?\s+/.test($))throw Error("Nested ternary operators are not supported. Use if/else statements instead.");throw G}if(this.options.showSExpr)console.log(o(U,0,!0)),console.log();let Y=new c({dataSection:_,skipReactiveRuntime:this.options.skipReactiveRuntime,reactiveVars:this.options.reactiveVars}),F=Y.compile(U);return{tokens:A,sexpr:U,code:F,data:_,reactiveVars:Y.reactiveVars}}compileToJS($){return this.compile($).code}compileToSExpr($){return this.compile($).sexpr}}function U3($,_={}){return new O1(_).compile($)}function S1($,_={}){return new O1(_).compileToJS($)}var Q3="2.8.7",W3="2026-02-04@11:45:06GMT",$3=($)=>{let _=$.match(/^[ \t]*(?=\S)/gm),E=Math.min(...(_||[]).map((X)=>X.length));return $.replace(RegExp(`^[ ]{${E}}`,"gm"),"").trim()};async function k2(){let $=document.querySelectorAll('script[type="text/rip"]');for(let _ of $){if(_.hasAttribute("data-rip-processed"))continue;try{let E=$3(_.textContent),X=S1(E);(0,eval)(X),_.setAttribute("data-rip-processed","true")}catch(E){console.error("Error compiling Rip script:",E),console.error("Script content:",_.textContent)}}}if(typeof document<"u")if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",k2);else k2();function X3($){try{let E=S1($).replace(/^let\s+[^;]+;\s*\n\s*/m,"");E=E.replace(/^const\s+/gm,"var ");let X=(0,eval)(E);if(X!==void 0)globalThis._=X;return X}catch(_){console.error("Rip compilation error:",_.message);return}}if(typeof globalThis<"u")globalThis.rip=X3;export{X3 as rip,k2 as processRipScripts,$1 as parser,o as formatSExpr,S1 as compileToJS,U3 as compile,Q3 as VERSION,m1 as Lexer,O1 as Compiler,c as CodeGenerator,W3 as BUILD_DATE};
533
+ `)}let A=new m1().tokenize($);if(this.options.showTokens)A.forEach((G)=>console.log(`${G[0].padEnd(12)} ${JSON.stringify(G[1])}`)),console.log();$1.lexer={tokens:A,pos:0,setInput:function(){},lex:function(){if(this.pos>=this.tokens.length)return 1;let G=this.tokens[this.pos++];return this.yytext=G[1],this.yylloc=G[2],G[0]}};let U;try{U=$1.parse($)}catch(G){if(/\?\s*\([^)]*\?[^)]*:[^)]*\)\s*:/.test($)||/\?\s+\w+\s+\?\s+/.test($))throw Error("Nested ternary operators are not supported. Use if/else statements instead.");throw G}if(this.options.showSExpr)console.log(o(U,0,!0)),console.log();let Y=new c({dataSection:_,skipReactiveRuntime:this.options.skipReactiveRuntime,reactiveVars:this.options.reactiveVars}),F=Y.compile(U);return{tokens:A,sexpr:U,code:F,data:_,reactiveVars:Y.reactiveVars}}compileToJS($){return this.compile($).code}compileToSExpr($){return this.compile($).sexpr}}function U3($,_={}){return new O1(_).compile($)}function S1($,_={}){return new O1(_).compileToJS($)}var Q3="2.8.8",W3="2026-02-04@12:47:34GMT",$3=($)=>{let _=$.match(/^[ \t]*(?=\S)/gm),E=Math.min(...(_||[]).map((X)=>X.length));return $.replace(RegExp(`^[ ]{${E}}`,"gm"),"").trim()};async function k2(){let $=document.querySelectorAll('script[type="text/rip"]');for(let _ of $){if(_.hasAttribute("data-rip-processed"))continue;try{let E=$3(_.textContent),X=S1(E);(0,eval)(X),_.setAttribute("data-rip-processed","true")}catch(E){console.error("Error compiling Rip script:",E),console.error("Script content:",_.textContent)}}}if(typeof document<"u")if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",k2);else k2();function X3($){try{let E=S1($).replace(/^let\s+[^;]+;\s*\n\s*/m,"");E=E.replace(/^const\s+/gm,"var ");let X=(0,eval)(E);if(X!==void 0)globalThis._=X;return X}catch(_){console.error("Rip compilation error:",_.message);return}}if(typeof globalThis<"u")globalThis.rip=X3;export{X3 as rip,k2 as processRipScripts,$1 as parser,o as formatSExpr,S1 as compileToJS,U3 as compile,Q3 as VERSION,m1 as Lexer,O1 as Compiler,c as CodeGenerator,W3 as BUILD_DATE};
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rip-lang",
3
- "version": "2.8.7",
3
+ "version": "2.8.8",
4
4
  "description": "A modern language that compiles to JavaScript",
5
5
  "type": "module",
6
6
  "main": "src/compiler.js",
package/src/lexer.js CHANGED
@@ -328,6 +328,11 @@ export var Lexer = class Lexer {
328
328
  return sup.length + 3;
329
329
  }
330
330
  prev = this.prev();
331
+ // Don't treat colon as property when in ternary context (after SPACE?)
332
+ // This allows `a ? b : c` to parse correctly instead of treating `b :` as property
333
+ if (colon && prev && prev[0] === 'SPACE?') {
334
+ colon = null;
335
+ }
331
336
  tag = colon || (prev != null) && (((ref5 = prev[0]) === '.' || ref5 === '?.' || ref5 === '::' || ref5 === '?::') || !prev.spaced && prev[0] === '@') ? 'PROPERTY' : 'IDENTIFIER';
332
337
  tokenData = {};
333
338
  if (tag === 'IDENTIFIER' && (indexOf.call(JS_KEYWORDS, id) >= 0 || indexOf.call(RIP_KEYWORDS, id) >= 0) && !(this.exportSpecifierList && indexOf.call(RIP_KEYWORDS, id) >= 0)) {