4 个版本
0.1.0 | 2022年11月11日 |
---|---|
0.0.3 | 2022年9月11日 |
0.0.2 | 2022年9月8日 |
0.0.1 | 2022年9月5日 |
#1522 in 解析器实现
130KB
2.5K SLoC
Formula
电子表格类似公式的解析器和评估器
Formula 处于早期阶段,尚未准备好用于生产环境。
目前我们拥有以下功能
- 18 个日期时间函数
- 26 个文本函数
- 26 个数学函数
- 7 个逻辑函数
- 2 个网络函数
- 以及所有算术和比较运算符
安装和使用
Rust
使用 cargo add formula
命令将此库添加到您的项目中,或者将 formula = "*"
添加到您的 Cargo.toml
文件中。
使用方法类似于以下代码
use formula::{Formula, Expr, Result};
fn main() -> Result<()> {
let formula = Formula::new("=UPPER(TRIM(' Hello '))")?;
let value = formula.parse()?;
assert_eq!(value, Expr::String("HELLO".to_string()));
Ok(())
}
JavaScript
使用 npm install formula-wasm
将此库添加到您的项目中,或者将 formula-wasm
添加到您的 package.json
文件中。
使用方法类似于以下代码
import { parse } from 'formula-wasm';
const value = parse('=UPPER(TRIM(" Hello "))');
console.assert(value, "HELLO");
我们目前不支持的功能
- 我们不支持世界上所有的现有函数,但我们愿意添加更多,比如 Excel 函数、Google Sheets 函数等等
- 目前,我们不支持表格数据。这意味着您需要提取表格数据并将它们的值传递给此库
- 我们不支持像
1+1
这样的简单公式,或者作为参数使用,例如AND(1>3, 1<3)
或SUM(2-1, 2)
。相反,您可以使用我们的F.
函数,例如AND(F.GT(1, 3), F.LT(1, 3))
或SUM(F.SUB(2, 1), 2)
- 我们仍然不支持括号来改变运算顺序,但您可以使用我们的
F.
函数。所以例如,而不是使用2*(1+1)
,您应该使用F.MUL(2, F.ADD(1, 1))
贡献
我们非常希望得到您的贡献!请阅读我们的贡献指南 以开始。
灵感来源于
许可证
本项目受MIT许可证的许可。有关更多信息,请参阅LICENSE 文件。
依赖项
~3–16MB
~209K SLoC