pull/1814/head
			
			
		
		
							parent
							
								
									4759c0b8dd
								
							
						
					
					
						commit
						4dd58c1e98
					
				| @ -0,0 +1,34 @@ | |||||||
|  | package io.legado.app.utils | ||||||
|  | 
 | ||||||
|  | import io.legado.app.constant.AppConst.SCRIPT_ENGINE | ||||||
|  | import io.legado.app.constant.AppPattern.EXP_PATTERN | ||||||
|  | import javax.script.SimpleBindings | ||||||
|  | 
 | ||||||
|  | object JsUtils { | ||||||
|  | 
 | ||||||
|  |     fun evalJs(js: String, bindingsFun: ((SimpleBindings) -> Unit)? = null): String { | ||||||
|  |         val bindings = SimpleBindings() | ||||||
|  |         bindingsFun?.invoke(bindings) | ||||||
|  |         if (js.contains("{{") && js.contains("}}")) { | ||||||
|  |             val sb = StringBuffer() | ||||||
|  |             val expMatcher = EXP_PATTERN.matcher(js) | ||||||
|  |             while (expMatcher.find()) { | ||||||
|  |                 val result = expMatcher.group(1)?.let { | ||||||
|  |                     SCRIPT_ENGINE.eval(it, bindings) | ||||||
|  |                 } ?: "" | ||||||
|  |                 if (result is String) { | ||||||
|  |                     expMatcher.appendReplacement(sb, result) | ||||||
|  |                 } else if (result is Double && result % 1.0 == 0.0) { | ||||||
|  |                     expMatcher.appendReplacement(sb, String.format("%.0f", result)) | ||||||
|  |                 } else { | ||||||
|  |                     expMatcher.appendReplacement(sb, result.toString()) | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             expMatcher.appendTail(sb) | ||||||
|  |             return sb.toString() | ||||||
|  |         } | ||||||
|  |         return SCRIPT_ENGINE.eval(js, bindings).toString() | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue