@makano/rew 1.3.6 → 1.3.7
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/lib/rew/modules/compiler.js +69 -2
 - package/main.js +2 -1
 - package/package.json +1 -1
 
| 
         @@ -283,6 +283,40 @@ function useImp(token, options){ 
     | 
|
| 
       283 
283 
     | 
    
         
             
            	return '';
         
     | 
| 
       284 
284 
     | 
    
         
             
            }
         
     | 
| 
       285 
285 
     | 
    
         | 
| 
      
 286 
     | 
    
         
            +
            function mapTokensToStrings(tokens) {
         
     | 
| 
      
 287 
     | 
    
         
            +
              const result = [];
         
     | 
| 
      
 288 
     | 
    
         
            +
              let current = '';
         
     | 
| 
      
 289 
     | 
    
         
            +
              let inBrackets = false;
         
     | 
| 
      
 290 
     | 
    
         
            +
             
     | 
| 
      
 291 
     | 
    
         
            +
              tokens.forEach(token => {
         
     | 
| 
      
 292 
     | 
    
         
            +
                if (token.type === 'OTHER' && token.value === '{') {
         
     | 
| 
      
 293 
     | 
    
         
            +
                  if (current) {
         
     | 
| 
      
 294 
     | 
    
         
            +
                    result.push(current.trim());
         
     | 
| 
      
 295 
     | 
    
         
            +
                    current = '';
         
     | 
| 
      
 296 
     | 
    
         
            +
                  }
         
     | 
| 
      
 297 
     | 
    
         
            +
                  inBrackets = true;
         
     | 
| 
      
 298 
     | 
    
         
            +
                  current += token.value + ' ';
         
     | 
| 
      
 299 
     | 
    
         
            +
                } else if (token.type === 'OTHER' && token.value === '}') {
         
     | 
| 
      
 300 
     | 
    
         
            +
                  current += token.value;
         
     | 
| 
      
 301 
     | 
    
         
            +
                  result.push(current.trim());
         
     | 
| 
      
 302 
     | 
    
         
            +
                  current = '';
         
     | 
| 
      
 303 
     | 
    
         
            +
                  inBrackets = false;
         
     | 
| 
      
 304 
     | 
    
         
            +
                } else if(token.type === 'OTHER' && token.value === ',' && !inBrackets){
         
     | 
| 
      
 305 
     | 
    
         
            +
            			return;
         
     | 
| 
      
 306 
     | 
    
         
            +
            		} else {
         
     | 
| 
      
 307 
     | 
    
         
            +
                  current += token.value;
         
     | 
| 
      
 308 
     | 
    
         
            +
                  if (!inBrackets) {
         
     | 
| 
      
 309 
     | 
    
         
            +
                    result.push(current.trim());
         
     | 
| 
      
 310 
     | 
    
         
            +
                    current = '';
         
     | 
| 
      
 311 
     | 
    
         
            +
                  } else {
         
     | 
| 
      
 312 
     | 
    
         
            +
                    current += ' ';
         
     | 
| 
      
 313 
     | 
    
         
            +
                  }
         
     | 
| 
      
 314 
     | 
    
         
            +
                }
         
     | 
| 
      
 315 
     | 
    
         
            +
              });
         
     | 
| 
      
 316 
     | 
    
         
            +
             
     | 
| 
      
 317 
     | 
    
         
            +
              return result;
         
     | 
| 
      
 318 
     | 
    
         
            +
            }
         
     | 
| 
      
 319 
     | 
    
         
            +
             
     | 
| 
       286 
320 
     | 
    
         
             
            function updateAliases(aliases, o = execOptions._syntaxAliases){
         
     | 
| 
       287 
321 
     | 
    
         
             
            	for(let h in o){
         
     | 
| 
       288 
322 
     | 
    
         
             
            		for(let i in o[h]){
         
     | 
| 
         @@ -293,6 +327,17 @@ function updateAliases(aliases, o = execOptions._syntaxAliases){ 
     | 
|
| 
       293 
327 
     | 
    
         
             
            	return aliases;
         
     | 
| 
       294 
328 
     | 
    
         
             
            }
         
     | 
| 
       295 
329 
     | 
    
         | 
| 
      
 330 
     | 
    
         
            +
            function insertAt(array, index, ...values) {
         
     | 
| 
      
 331 
     | 
    
         
            +
              if (index > array.length) {
         
     | 
| 
      
 332 
     | 
    
         
            +
                index = array.length;
         
     | 
| 
      
 333 
     | 
    
         
            +
              } else if (index < 0) {
         
     | 
| 
      
 334 
     | 
    
         
            +
                index = 0;
         
     | 
| 
      
 335 
     | 
    
         
            +
              }
         
     | 
| 
      
 336 
     | 
    
         
            +
              array.splice(index, 0, ...values);
         
     | 
| 
      
 337 
     | 
    
         
            +
             
     | 
| 
      
 338 
     | 
    
         
            +
              return array;
         
     | 
| 
      
 339 
     | 
    
         
            +
            }
         
     | 
| 
      
 340 
     | 
    
         
            +
             
     | 
| 
       296 
341 
     | 
    
         
             
            function compileRewStuff(content, options) {
         
     | 
| 
       297 
342 
     | 
    
         
             
            	straceLog('TOKENIZE() for CURRENTFILE');
         
     | 
| 
       298 
343 
     | 
    
         
             
            	const tokens = tokenizeCoffeeScript(content);
         
     | 
| 
         @@ -318,7 +363,7 @@ function compileRewStuff(content, options) { 
     | 
|
| 
       318 
363 
     | 
    
         
             
                if ((token.type === "COMMENT" && multilineDeclare) || (token.type !== "COMMENT" && multilineDeclare)) {
         
     | 
| 
       319 
364 
     | 
    
         
             
                  if(token.type === "COMMENT"){
         
     | 
| 
       320 
365 
     | 
    
         
             
            				multilineDeclareBuffer.push(token.value.startsWith('###') ? token.value.slice(3) : token.value.slice(1));
         
     | 
| 
       321 
     | 
    
         
            -
            				if (token.value. 
     | 
| 
      
 366 
     | 
    
         
            +
            				if (token.value.trim().endsWith(';')) {
         
     | 
| 
       322 
367 
     | 
    
         
             
            					multilineDeclare = false;
         
     | 
| 
       323 
368 
     | 
    
         
             
            					const combinedDeclaration = multilineDeclareBuffer.join('\n');
         
     | 
| 
       324 
369 
     | 
    
         
             
            					declareAlias(aliases, { ...token, value: combinedDeclaration });
         
     | 
| 
         @@ -454,6 +499,27 @@ function compileRewStuff(content, options) { 
     | 
|
| 
       454 
499 
     | 
    
         
             
            				if(useImp(nextToken, options)) updateAliases(aliases);
         
     | 
| 
       455 
500 
     | 
    
         
             
            				result += `inc ${nextToken.value}`;
         
     | 
| 
       456 
501 
     | 
    
         
             
            				i += n;
         
     | 
| 
      
 502 
     | 
    
         
            +
            			} else if (nextToken.type === 'OTHER' && nextToken.value == "(") {
         
     | 
| 
      
 503 
     | 
    
         
            +
            				const closingBraceToken = fnextToken(ind, tokens, 'OTHER', ')');
         
     | 
| 
      
 504 
     | 
    
         
            +
            				let lastindex = ind;
         
     | 
| 
      
 505 
     | 
    
         
            +
            				if (closingBraceToken) {
         
     | 
| 
      
 506 
     | 
    
         
            +
            					const namesTokens = tokens.slice(ind, closingBraceToken.ti);
         
     | 
| 
      
 507 
     | 
    
         
            +
            					const next = gnextToken(closingBraceToken.ti, 1, tokens);
         
     | 
| 
      
 508 
     | 
    
         
            +
            					let exports = [];
         
     | 
| 
      
 509 
     | 
    
         
            +
            					if(next?.token?.value == 'as'){
         
     | 
| 
      
 510 
     | 
    
         
            +
            						const ebraceOpen = gnextToken(next.token.ti, 1, tokens);
         
     | 
| 
      
 511 
     | 
    
         
            +
            						const ebraceClose = fnextToken(ebraceOpen.ti, tokens, 'OTHER', ')');
         
     | 
| 
      
 512 
     | 
    
         
            +
            						const exportsTokens = tokens.slice(ebraceOpen.ti+1, ebraceClose.ti);
         
     | 
| 
      
 513 
     | 
    
         
            +
            						exports = mapTokensToStrings(exportsTokens.filter(token => token.type !== 'WHITESPACE'));
         
     | 
| 
      
 514 
     | 
    
         
            +
            						lastindex = ebraceClose.ti;
         
     | 
| 
      
 515 
     | 
    
         
            +
            					} else lastindex = closingBraceToken.ti;
         
     | 
| 
      
 516 
     | 
    
         
            +
            					const statements = namesTokens.filter(token => token.type !== 'WHITESPACE').map((token, index) => {
         
     | 
| 
      
 517 
     | 
    
         
            +
            						return tokenizeCoffeeScript(`\nimport `+ (exports[index] ? `${exports[index].startsWith('@') ? '* as '+ exports[index].slice(1) : exports[index]} from ${token.value};` : `${token.value}`))
         
     | 
| 
      
 518 
     | 
    
         
            +
            					});
         
     | 
| 
      
 519 
     | 
    
         
            +
            					i = lastindex+1;
         
     | 
| 
      
 520 
     | 
    
         
            +
            					insertAt(tokens, i, ...statements.flat());
         
     | 
| 
      
 521 
     | 
    
         
            +
            					continue;
         
     | 
| 
      
 522 
     | 
    
         
            +
            				}
         
     | 
| 
       457 
523 
     | 
    
         
             
            			} else if (nextToken.value === '{') {
         
     | 
| 
       458 
524 
     | 
    
         
             
            				const closingBraceToken = fnextToken(ind, tokens, 'OTHER', '}');
         
     | 
| 
       459 
525 
     | 
    
         
             
            				const nameToken = fnextToken(ind, tokens, 'STRING');
         
     | 
| 
         @@ -617,7 +683,8 @@ function compileRewStuff(content, options) { 
     | 
|
| 
       617 
683 
     | 
    
         
             
            		options.aliases = aliases;
         
     | 
| 
       618 
684 
     | 
    
         
             
            	}
         
     | 
| 
       619 
685 
     | 
    
         
             
            	// console.log(aliases);
         
     | 
| 
       620 
     | 
    
         
            -
            	 
     | 
| 
      
 686 
     | 
    
         
            +
            	console.log(result);
         
     | 
| 
      
 687 
     | 
    
         
            +
            	return "";
         
     | 
| 
       621 
688 
     | 
    
         
             
            	return result;
         
     | 
| 
       622 
689 
     | 
    
         
             
            }
         
     | 
| 
       623 
690 
     | 
    
         | 
    
        package/main.js
    CHANGED