31 个版本

4.0.0-alpha.332022年5月20日
4.0.0-alpha.32 2022年2月18日
4.0.0-alpha.292022年1月31日
4.0.0-alpha.222021年4月27日
0.0.0 2020年6月6日

83模板引擎 中排名

Download history 196/week @ 2024-07-06 5/week @ 2024-07-13

每月下载量 201

MIT/Apache

580KB
13K SLoC

Rant Logo

Crates.io Docs.rs Discord

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 仍处于早期开发阶段,一些文档可能已过时/不完整,但它正在积极更新,以确保以合理的准确性反映当前功能。

变更日志

在整个开发过程中,变更日志会持续更新,提供对即将推出更改的完整总结,甚至在新版本发布之前。

许可

根据您的选择,许可如下

任选其一。

依赖

~3–11MB
~82K SLoC