2 个版本

0.1.1 2022年1月15日
0.1.0 2022年1月9日

#2707 in 解析器实现

MIT 许可证

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

其他命令

其他命令包括 检查连接打包解包

文件格式

可用的文件格式有 纯文本jsontomlyamllua

纯文本 格式是无格式格式。

版本历史

更改日志.

许可证

MIT。

依赖项

~5–6.5MB
~118K SLoC