3 个不稳定版本
0.2.1 | 2019 年 7 月 9 日 |
---|---|
0.2.0 | 2019 年 7 月 9 日 |
0.1.0 | 2019 年 6 月 30 日 |
#1968 在 命令行工具
120KB
3K SLoC
垃圾处理程序
Statecharts Rhap
功能
- 输出格式为
- REPL
- 适用于 Shell
- 彩色输出
- 可管道化(例如:
cat f.scdl | scrap eval
或scrap code f.scdl | cat
)以禁用彩色输出。当管道到文件或在 CI 上运行时很有用。
钩子 CLI
如果系统主机上可用,垃圾处理程序将自动使用以下 CLI。在游戏术语中,可以将其视为扩展包,其中一些功能将在安装后启用。
smcat
安装
npm -g state-machine-cat
解锁的功能
smcat
成为指定--format smcat
时的默认输出- 当指定
--format smcat
时,标志--as
可以接受 🗹-
svg
-> 可伸缩矢量图形 -
dot
-> Graphviz 格式/语言的别名 -
smcat
-> 状态机猫语言(默认) -
json
-> 状态机猫的 JSON 表示形式(默认) -
ast
-> 状态机猫的 AST 表示形式 -
html
-> HTML -
scxml
-> 状态图 XML(W3C 标准) -
scjson
-> 状态机猫的实验性 JSON 表示形式 -
xmi
-> XML 元数据交换(OMG 标准)
-
graph-easy
⚠️ smcat 需要先安装
安装
cpanm graph-easy
解锁的功能
- 当指定
--format graph
时,标志--as
可以接受 🗹-
ascii
-> ASCII 艺术渲染 -
boxart
-> Unicode Boxart 渲染(默认) -
html
-> HTML -
svg
-> 可伸缩矢量图形 -
dot
-> DOT 语言 -
txt
-> Graph::Easy 文本 -
vcg
-> VCG(可视化编译器图 - GDL 的子集)文本 -
gdl
-> GDL(图描述语言)文本 -
graphml
-> GraphML -
bmp
-> Windows 位图 -
gif
-> GIF -
hpgl
-> HP-GL/2 向量图形 -
jpg
-> JPEG -
pcl
-> PCL 打印机语言 -
pdf
-> PDF -
png
-> PNG -
ps
-> Postscript -
ps2
-> 带有 PDF 注释的 Postscript(参见 graphviz 文档) -
tga
-> Targa 位图 -
tif
-> TIFF 位图
-
dot
⚠️ smcat 需要先安装
解锁的功能
- 当指定
--format graph
时,标志--as
可以接受 🗹- bmp -> Windows 位图格式 (blob)
- canon/dot/gv/xdot -> DOT/Graphviz 语言
- cgimage -> CGImage 位图格式
- eps -> 封装 Postscript
- exr -> OpenEXR
- fig -> FIG 图形语言
- gd/gd2 -> GD/GD2 格式 (blob)
- gif -> 图像交换格式 (blob)
- gtk -> GTK 画布
- ico -> 图标图像文件格式
- imap/cmapx -> 服务器端和客户端图像映射
- imap_np/cmapx_np -> 这些格式与 imap 和 cmapx 相同,但它们仅依赖矩形作为活动区域
- jp2 -> JPEG 2000
- jpg/jpeg/jpe -> JPEG (blob)
- json/json0/dot_json/xdot_json -> 以 JSON 格式表示的 Dot 图
- pct/pict -> PICT
- pdf -> 可移植文档格式 (PDF)。此选项不支持锚点等。请参阅
ps2
- pic -> Kernighan 的 PIC 图形语言
- plain/plain-ext ->
dot
语言的简化版本。 - png -> 可移植网络图形格式 (blob)
- ps -> Postscript
- ps2 -> PDF 的 Postscript
- psd -> Photoshop 文档
- sgi -> Silicon Graphics 图像
- svg/svgz -> 可伸缩矢量图形 (blob:svgz)
- tga -> Truevision TGA
- tif/tiff -> TIFF(标签图像文件格式)(blob)
- tk -> TK 图形语言
- vml/vmlz -> 向量标记语言 (VML) (blob:vmlz)
- vrml -> 虚拟现实建模语言
- wbmp -> 无线位图
- webp -> Web 图像格式 (blob)
- xlib/x11 -> Xlib 画布
用法
$ scrap help
Statecharts Rhapsody
USAGE:
scrap <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
code Generate from scdlang file declaration to another format [aliases: generate, gen, declaration, declr]
eval Evaluate scdlang expression in interactive manner [aliases: repl]
help Prints this message or the help of the given subcommand(s)
scrap 帮助代码
$ scrap code --help
Generate from scdlang file declaration to another format
USAGE:
scrap code [FLAGS] [OPTIONS] <FILE> --format <target> [DIST]
FLAGS:
-h, --help Prints help information
--stream Parse the file line by line
OPTIONS:
--as <format> Select parser output [possible values: json, svg, dot, smcat, html, scxml, xmi, ascii, boxart, bmp, gif, jpg, pdf, png, ps, ps2, tif]
-f, --format <target> Select output format [possible values: xstate, smcat, graph]
ARGS:
<FILE> File to print / concatenate
<DIST> Output the result to this directory / file
scrap 帮助重放
$ scrap repl --help
Evaluate scdlang expression in interactive manner
USAGE:
scrap eval [FLAGS] [OPTIONS] --format <target>
FLAGS:
-h, --help Prints help information
-i, --interactive Prints result on each expression
--strict Exit immediately if an error occurred
OPTIONS:
--as <format> Select parser output [possible values: json, svg, dot, smcat, html, scxml, xmi, ascii, boxart, bmp, gif, jpg, pdf, png, ps, ps2, tif]
-f, --format <target> Select output format [possible values: xstate, smcat, graph]
技巧与窍门
一些有用的 CLI 和工具
watchexec
-> 在文件修改时执行命令。live-server
-> 一个简单的开发 http 服务器,具有实时刷新功能。可用于快速预览svg
输出。bat
-> 支持语法高亮的 cat(1) 克隆。用于尝试显示输出时的各种语法高亮器很有用。
在终端窗口中实时预览视觉表示
watchexec "scrap code $FILE.scl -f graph" --clear --watch $FILE.scl
实时预览媒体输出的视觉表示(svg, jpg, png 等)
- 对于 SVG
watchexec "scrap code $INPUT.scl -o $OUTPUT.svg -f smcat --as svg" --clear --watch $INPUT.scl
live-server --watch=$INPUT.scl --entry-file=$OUTPUT.svg --port=2019 --wait=2020
google-chrome --app=https://127.0.0.1:2019
- 对于 VSCode 用户,您可以使用
--output
它--as
媒体文件如 png 或 jpg,然后在 VSCode 中打开它
watchexec "scrap code $INPUT.scl -o $OUTPUT.png -f graph --as png" --watch $INPUT.scl
code $OUTPUT.png
检查每一行
cat $FILE.scl | scrap repl --interactive --format graph
仅检查结果
cat $FILE.scl | scrap repl --interactive --format xstate 2>/dev/null
仅检查错误
cat $FILE.scl | scrap repl --interactive --format xstate 1>/dev/null
将错误记录到文件中
scrap code $FILE.scl --stream 2> $OUTPUT.log
以纯文本格式打印(无语法高亮)
scrap code $FILE.scl --format xstate --stream 2>&1 | cat
仅打印结果
scrap code $FILE.scl --format xstate --stream 2>/dev/null | cat
仅打印错误
scrap code $FILE.scl --format xstate --stream 2>&1 1>/dev/null | cat
检查并将每一行记录到文件中
检查并记录错误
cat $FILE.scl | scrap repl --interactive --format xstate 2> $OUTPUT.log
检查并记录结果
cat $FILE.scl | scrap repl --interactive --format xstate > $OUTPUT.log
依赖关系
~22–35MB
~512K SLoC