31 个版本
4.0.0-alpha.33 | 2022年5月20日 |
---|---|
4.0.0-alpha.32 |
|
4.0.0-alpha.29 | 2022年1月31日 |
4.0.0-alpha.22 | 2021年4月27日 |
0.0.0 |
|
83 在 模板引擎 中排名
每月下载量 201
580KB
13K SLoC
rant 是一种动态类型的、多范式的模板语言,主要设计用于程序化生成。它考虑到可扩展性:它可以处理从简单的随机字符串生成到更复杂的任务,如程序化对话、角色生成和世界构建。
预发布通知
此项目处于 alpha 阶段。 这意味着 API 不稳定,功能可能已损坏/缺失,一切均可能更改。
请毫不犹豫地尝试它并提供反馈;然而,不要 在稳定版本发布之前将其用于生产环境。
功能可能随时因任何原因出现或消失。假设每个 alpha 版本都会带来破坏性的更改。
介绍 Rant 4
Rant 是为了实现一个全能的数据模板工具而长期以来的愿望,该工具专门为游戏和交互式艺术等创意应用而设计。
Rant 4 是实现这一目标的下一个飞跃:语法、标准库和解释器都从零开始进行了完全的重新构思。
功能
🧰 无烦恼的 API
Rant 具有简单易用的 API,便于使用。无需陷入配置地狱。将 Rant 集成到您的项目中只需几行代码。
💻 跨平台
一次编写,到处运行!运行时在 Windows、Mac、Linux 和 WebAssembly 上工作相同。
✍ 功能更强大的模板化
Rant 的全部关于“打印”:每个词法作用域都有一个输出要打印(追加值)到,然后打印自身到父输出,依此类推。这使您能够在熟悉的模板环境中直观地构建字符串、集合等。
🎨 现在 故意 具有图灵完备性!
除了是一种模板语言外,Rant 还采用了声明性和命令性编程概念,并受到了许多其他流行语言的设计影响。
✨ 生成一切 —— 而不仅仅是文本
与旧版 Rant 版本只能生成字符串不同,Rant 4 可以使用任何内置数据类型输出任意数据结构。享受对字符串、数字、集合、闭包等常见原语的一流支持。
🎲 为随机数生成器精心打造
Rant 是为了作为主要用例的随机生成而制作的。
利用大量内置工具来生成随机数、字符串、布尔值、列表、列表子集等,满足您所有的随机化需求。内部随机数生成器可以手动播种,以产生可重复的输出。
🔱 分支及其以上
通过多种配置选项增强常规控制流行为,以实现迭代、随机和加权分支选择。
🧬 愉悦的排列组合
通过最小努力执行嵌套映射、过滤器、连接、组合等操作。Rant 强大的管道语法允许您使用更短、更易读的代码执行复杂操作。
📝 自动文本格式化
被动地格式化文本输出,包括自动首字母大写、空格规范化、数字格式化等——支持众多书写系统。
📦 数据源
将自定义数据源附加到您的 Rant 执行上下文中,以便您的脚本可以控制访问外部资源。
🧩 简单的模块系统
在 Rant 程序之间共享代码是微不足道的。只需编写您的模块脚本,并在其他地方使用 @require
即可。
需要自定义模块解析逻辑?没问题。您可以编写自己的解析器并将其插入。
📚 Rant 标准库
全面的库提供了快速迭代您想法所需的工具。
🧪 集成或独立使用
无论您是想将 Rant 直接集成到产品中,还是将其用作辅助写作的独立工具,Rant 都可以在您的工作流程的任何部分发挥作用。
入门指南
Rant 是用 Rust 编写的,因此您需要安装 工具链 才能构建它。
命令行界面
Rant 的 CLI 可以从文件或命令行运行 Rant 代码。使用 Cargo 安装它
$ cargo install rant --version 4.0.0-alpha.33 --features cli
然后运行它
# Launch the REPL
$ rant
# Get a full list of options
$ rant -h
# Run an inline script and display output
$ rant -e '[rep:3] [sep:\s] {b{ee|i|o|u}bbity}'
# Run hello_world.rant and send output to result.txt
$ rant hello_world.rant > result.txt
库
要在 Rust 项目中使用 Rant,请将 rant
仓库添加到 Cargo.toml
[dependencies]
rant = "*"
您只需几行代码就可以运行 Rant 程序
use rant::Rant;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
// Create a default Rant context
let mut rant = Rant::new();
// Compile a simple program
let program = rant.compile_quiet(r#"
[$greet:name] {
{Hello|Hi|Hey} <name>!
}
[greet:world]
"#)?;
// Run the program and print the output
let output = rant.run(&program)?;
println!("{}", output);
Ok(())
}
示例
此存储库包含一系列示例 Rant 脚本供您学习。查看它们!
文档
最新参考文档可在 docs.rant-lang.org 找到。
由于 Rant 4 仍处于早期开发阶段,一些文档可能已过时/不完整,但它正在积极更新,以确保以合理的准确性反映当前功能。
变更日志
在整个开发过程中,变更日志会持续更新,提供对即将推出更改的完整总结,甚至在新版本发布之前。
许可
根据您的选择,许可如下
- Apache 许可证版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~3–11MB
~82K SLoC