| 0.0.4 |
|
|---|---|
| 0.0.3 |
|
| 0.0.2 |
|
| 0.0.1 |
|
#4 in #wikidot
23KB
369 行
ftml-rpc
ftml的RPC服务器和客户端。有关“基础文本标记语言”的更多信息,请参阅相关crate文档。
目前它不连接到DEEPWELL服务器以获取必要的外部信息(其他页面、用户等),但将来会。
编译
此crate针对最新稳定版Rust。在编写时,那是1.40.0
$ cargo build --release
$ cargo run --release -- [arguments] # server
如果您想使用其客户端,导入crate并将其用作库。
API
目前,所有错误都作为 Err(String) 传输。
RPC服务器提供的当前API如下
协议() -> io::Result<String>:
返回一个静态协议版本。目前是 "0"。
ping() -> io::Result<()>:
确定服务器是否可到达。
time() -> io::Result<f64>:
返回服务器上的系统时间。它可能在任何时区,并且不是单调的。
随后是三个核心ftml方法
prefilter(input: String) -> io::Result<Result<String, String>>:
在解析或渲染之前预处理文本。这将加载任何包含或执行排版转换。有关更多信息,请参阅ftml使用说明。
parse(input: String) -> io::Result<Result<String, String>>:
在预过滤器之后解析输入字符串,返回与语法树对应的JSON对象。这目前在代码中未类型化,但遵循ftml的 SyntaxTree 中的对象模式。
render(page_info: PageInfoOwned, input: String) -> io::Result<Result<HtmlOutput, String>>:
对页面进行预过滤、解析和渲染成HTML。HtmlOutput 对象的定义可在此处找到,其中最值得注意的是包含部分HTML的html字段(即不包括像<html>或<body>这样的标签),以及包含任何生成CSS的style。
类型为PageInfoOwned的参数传递了关于正在渲染的文章的信息。
依赖项
~16–27MB
~392K SLoC