2 个版本
0.1.1 | 2022年1月15日 |
---|---|
0.1.0 | 2022年1月9日 |
#2707 in 解析器实现
115KB
3K SLoC
rmarshal
rmarshal 是一个文档重整器。
概述
用法
rmarshal [INPUT...] COMMAND [OUTPUT...]
命令行界面
输入和输出以相同的方式表达。在第一个命令之前,所有内容都被解释为输入。在最后一个命令之后,所有内容都被解释为输出。
路径可以用 - 替换,根据上下文表示 stdin 或 stdout。
有关详细信息,请参阅 CLI 语法。
命令
命令消费并生成文档。
复制
复制 命令在没有任何修改的情况下生成与消耗相同数量的文档。目的是更改文件的格式。
用法
rmarshal [INPUT...] --copy [OUTPUT...]
示例
$ cat data.json
{"name":"Althea","fingers":10}
$ rmarshal data.json --copy out.yaml
$ cat out.yaml
---
name: Althea
fingers: 10
合并
合并 命令消耗多个文档并生成一个。
用法
rmarshal INPUT... --merge [--depth DEPTH] OUTPUT
深度选项
深度用于数组或对象值。它表示合并深度。
例如
- 值为 0 的深度将始终应用第二个操作数。
- 值为 1 的深度将仅合并数组或对象值的第一个级别。
没有深度选项或负值表示无限深度。
渲染
渲染 命令消耗多个文档并生成一个基于字符串的文档。
用法
rmarshal [INPUT...] --render PATH OUTPUT
标签
引擎识别提供的模板中的一些标签,并根据以下规则进行转换
<% Lua code. %>
<%= Lua expression -- replaced with result. %>
<%# Comment -- not rendered. %>
% A line of Lua code -- treated as <% line %>
%% replaced with % if first thing on a line and % processing is used
<%% or %%> -- replaced with <% or %> respectively.
如果指令以 <%-
开始,则删除任何前导空白。
如果指令以 -%>
结束,则删除任何尾随空白。
示例
$ cat data.json
{"name":"Althea","fingers":10}
$ cat report
% local data = ctx:get_input(1)
My name is <%= data:get('name') %> and I have <%= data:get('fingers') %> fingers!
$ rmarshal data.json --render report out
$ cat out
My name is Althea and I have 10 fingers!
转换
转换 命令消耗并生成多个文档。
用法
rmarshal [INPUT...] --transform PATH [OUTPUT...]
Lua 预言
有关详细信息,请参阅 Lua 预言。
示例
$ cat data.json
{"name":"Althea","fingers":10}
$ cat script.lua
local data = ctx:get_input(1)
data:set("name", "James Hook")
data:set("rank", "captain")
data:set("fingers", 5)
ctx:set_output(data)
$ rmarshal data.json --transform script.lua out.yaml
$ cat out.yaml
---
name: James Hook
rank: captain
fingers: 5
其他命令
其他命令包括 检查、连接、打包 和 解包。
文件格式
可用的文件格式有 纯文本、json、toml、yaml 和 lua。
纯文本 格式是无格式格式。
版本历史
更改日志.
许可证
MIT。
依赖项
~5–6.5MB
~118K SLoC