From 1a52430f4d198fd464bc61f38e5f1719bc853dcd Mon Sep 17 00:00:00 2001 From: richie Date: Sat, 31 Aug 2019 09:51:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=84=9A=E6=9C=AC=E5=85=AC=E5=BC=8FAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/fanruan/api/cal/FormulaKit.java | 12 ++++++++++++ .../java/com/fanruan/api/cal/FormulaKitTest.java | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/com/fanruan/api/cal/FormulaKit.java b/src/main/java/com/fanruan/api/cal/FormulaKit.java index 10bb4fa..93cd52a 100644 --- a/src/main/java/com/fanruan/api/cal/FormulaKit.java +++ b/src/main/java/com/fanruan/api/cal/FormulaKit.java @@ -1,7 +1,9 @@ package com.fanruan.api.cal; import com.fanruan.api.err.KitError; +import com.fanruan.api.util.GeneralKit; import com.fr.base.BaseFormula; +import com.fr.base.ScriptFormula; import com.fr.log.FineLoggerFactory; import com.fr.script.Calculator; import com.fr.stable.FormulaProvider; @@ -58,6 +60,16 @@ public class FormulaKit { return BaseFormula.createFormulaBuilder().build(content); } + /** + * 生成脚本公式对象 + * + * @param content 公式的内容,是一段javascript脚本 + * @return 脚本公式 + */ + public @NotNull static BaseFormula newScriptFormula(Object content) { + return new ScriptFormula(GeneralKit.objectToString(content)); + } + /** * 检查公式内容合法性 * diff --git a/src/test/java/com/fanruan/api/cal/FormulaKitTest.java b/src/test/java/com/fanruan/api/cal/FormulaKitTest.java index c54ec7f..abed6cb 100644 --- a/src/test/java/com/fanruan/api/cal/FormulaKitTest.java +++ b/src/test/java/com/fanruan/api/cal/FormulaKitTest.java @@ -2,9 +2,11 @@ package com.fanruan.api.cal; import com.fanruan.api.Prepare; import com.fanruan.api.err.KitError; +import com.fr.base.BaseFormula; import com.fr.base.Formula; import com.fr.base.ParameterMapNameSpace; import com.fr.script.Calculator; +import com.fr.stable.UtilEvalError; import com.fr.stable.script.CalculatorProvider; import org.junit.Assert; import org.junit.Test; @@ -43,6 +45,19 @@ public class FormulaKitTest extends Prepare { Assert.fail(); } } + + @Test + public void testScriptFormula() { + BaseFormula formula = FormulaKit.newScriptFormula("=return Math.abs(-1)"); + CalculatorProvider provider = CalculatorKit.createCalculator(); + try { + Object r = formula.evalValue(provider); + Assert.assertEquals(1, r); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Test public void testCheckFormulaContent() { assertEquals(true, FormulaKit.checkFormulaContent(new Formula("")));