7 个版本

0.2.1 2023年4月9日
0.2.0 2023年4月7日
0.1.7 2023年4月7日
0.0.0 2023年3月13日

#112 in 仿真器

Download history 26/week @ 2024-03-31 50/week @ 2024-04-28

83 每月下载量

MIT 许可证

130KB
3K SLoC

ZEN VM

GoRules 商务优先表达式语言解析器。该语言设计遵循以下原则

  • 无副作用
  • 动态类型
  • 简单语法,易于大众理解

其主要目标是弥合业务分析师和工程师之间的差距,同时提供卓越的性能和可读性。

资源

文档

Zen 语言游乐场

在线规则编辑器

单元测试

单元测试是一个以逗号分隔的简单表达式列表,其计算结果为布尔值。每个逗号分隔符被视为或运算符。在单元表达式中,存在一个特殊符号 $,它代表当前列。

一些示例

// Given: $ = 1
1, 2, 3      // true
1            // true
>= 1         // true
< 1          // false
[0..10]      // true, (internally this is $ >= 0 and $ <= 10)
> 0 and < 10 // true

// Given: $ = 'USD'
'GBP', 'USD'          // true
'EUR'                 // false
startsWith($, "US")   // true - defaults to expression mode, comma is unavailable
endsWith($, "US")     // false - defaults to expression mode
lower($) == "usd"     // true - defaults to expression mode

标准测试

表达式提供了 ZEN 语言的全功能语法。它们允许您访问所有函数,并在定义列或输出时非常有用。当使用 $ 时(因为它强制表达式模式),单元表达式中也提供了全语法。

100 + 100                              // 200
10 * 5                                 // 50
10 ^ 2                                 // 100
1 in [1, 2, 3]                         // true
5 in (5..10]                           // false
sum([1, 2, 3])                         // 6
max([1, 2, 3])                         // 3

"hello" + " " + "world"                // "hello world"
len("world")                           // 5
weekdayString(date("2022-11-08"))      // "Tue"
contains("hello world", "hello")       // true
upper('john')                          // "JOHN"

some(['admin', 'user'], # == "admin")  // true
not all([100, 200, 400, 800], # in (100..800)) // false
filter([100, 200, 400, 800], # >= 200) // [200, 400, 800]

依赖关系

~5.5MB
~93K SLoC