2017-07-26 20 views
0

我正在尋找一種方式,讓最終用戶處理來自用戶界面的一些數據。一個語法類似於Excel的腳本引擎可以。Excel的像腳本語言爲最終用戶

實施例:

輸入將是一個dict其中包含的數據(這是基本上爲腳本變量名)中,用規則的string

input = {'a':1, 'b':2, 'c':'add'}

rule_example_1 = "if(c == 'add',a+b,if(c=='sub',a-b,raise ERROR))"'

rule_example_2 = "if c == 'add' return a+b else if c == 'sub' return a-b else raise error()"

腳本必須擴展與自身的功能。也可以對用戶可以使用的類型進行一些定義。

使用案例:

基本上用戶在他們的帳戶(產品詳細信息)有一些二維數據。並且使用一些腳本規則,我想讓他們更改產品數據。

例如,如果用戶想要排除所有的產品開始以字母X,他們將創建一個規則:

set('product_status', if(starts_with(product_title,'X'), 'skip', ''))

,或者如果用戶想通過20%的提價,如果產品價格是低則10:

set('product_price', if(product_price < 10, product_price*1.20, product_price)

+3

也許...... Python的? –

+0

@ddofborg:你能提供一些限制嗎?基本上:爲什麼*不*只是讓最終用戶編寫Python代碼? –

+0

也許關於應用程序是關於什麼,腳本應該做什麼以及使用什麼類型的用戶的一些額外細節應該會讓我們更好地瞭解如何更好地幫助您。 –

回答

1

如果你想要的東西更方便用戶,也許你可以嘗試Blockly: https://developers.google.com/blockly/

您可以輕鬆地將其與你的應用集成和定製,打造自己的塊,以滿足您的用戶的需求。

你也可能想看看網: https://github.com/chrispsn/mesh

或許更簡單的東西: https://pypi.python.org/pypi/simpleeval

甚至更​​簡單(但不太安全的),您可以使用ast.literal_eval();這是一個Python的標準庫的一部分: https://docs.python.org/3/library/ast.html#ast.literal_eval

而且這個的其他問題可以幫助你: Safe expression parser in Python

+1

我認爲SimpleEval(https://github.com/danthedeckie/simpleeval)會完成這項工作! – ddofborg