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