#html #parser #rendering #wikidot #html-rendering #markup-language #ftml

已删除 ftml-rpc

基础文本标记语言 - 提供ftml解析或渲染的RPC服务器

0.0.4 2020年1月27日
0.0.3 2020年1月25日
0.0.2 2020年1月25日
0.0.1 2020年1月25日

#4 in #wikidot

AGPL-3.0-or-later

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