mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-10-31 09:08:07 +07:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0;
 | |
| 
 | |
| function makeStatementFormatter(fn) {
 | |
|   return {
 | |
|     code: str => `/* @babel/template */;\n${str}`,
 | |
|     validate: () => {},
 | |
|     unwrap: ast => {
 | |
|       return fn(ast.program.body.slice(1));
 | |
|     }
 | |
|   };
 | |
| }
 | |
| 
 | |
| const smart = makeStatementFormatter(body => {
 | |
|   if (body.length > 1) {
 | |
|     return body;
 | |
|   } else {
 | |
|     return body[0];
 | |
|   }
 | |
| });
 | |
| exports.smart = smart;
 | |
| const statements = makeStatementFormatter(body => body);
 | |
| exports.statements = statements;
 | |
| const statement = makeStatementFormatter(body => {
 | |
|   if (body.length === 0) {
 | |
|     throw new Error("Found nothing to return.");
 | |
|   }
 | |
| 
 | |
|   if (body.length > 1) {
 | |
|     throw new Error("Found multiple statements but wanted one");
 | |
|   }
 | |
| 
 | |
|   return body[0];
 | |
| });
 | |
| exports.statement = statement;
 | |
| const expression = {
 | |
|   code: str => `(\n${str}\n)`,
 | |
|   validate: ({
 | |
|     program
 | |
|   }) => {
 | |
|     if (program.body.length > 1) {
 | |
|       throw new Error("Found multiple statements but wanted one");
 | |
|     }
 | |
| 
 | |
|     const expression = program.body[0].expression;
 | |
| 
 | |
|     if (expression.start === 0) {
 | |
|       throw new Error("Parse result included parens.");
 | |
|     }
 | |
|   },
 | |
|   unwrap: ast => ast.program.body[0].expression
 | |
| };
 | |
| exports.expression = expression;
 | |
| const program = {
 | |
|   code: str => str,
 | |
|   validate: () => {},
 | |
|   unwrap: ast => ast.program
 | |
| };
 | |
| exports.program = program; |