#statemachine #language #cli #scdlang

bin+lib 垃圾处理程序

Scdlang 的 CLI 工具

3 个不稳定版本

0.2.1 2019 年 7 月 9 日
0.2.0 2019 年 7 月 9 日
0.1.0 2019 年 6 月 30 日

#1968命令行工具

UPL-1.0LGPL-3.0-or-later

120KB
3K SLoC

垃圾处理程序

Statecharts Rhap

功能

钩子 CLI

如果系统主机上可用,垃圾处理程序将自动使用以下 CLI。在游戏术语中,可以将其视为扩展包,其中一些功能将在安装后启用。

smcat

安装

npm -g state-machine-cat

👆 如何安装 npm!

解锁的功能

  • 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

👆 如何安装 cpanminus!

解锁的功能

  • 当指定 --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

live preview boxart.gif

实时预览媒体输出的视觉表示(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

live preview svg.gif

  • 对于 VSCode 用户,您可以使用 --output--as 媒体文件如 png 或 jpg,然后在 VSCode 中打开它
watchexec "scrap code $INPUT.scl -o $OUTPUT.png -f graph --as png" --watch $INPUT.scl
code $OUTPUT.png

live preview png.gif

检查每一行
cat $FILE.scl | scrap repl --interactive --format graph

Inspect each line

仅检查结果
cat $FILE.scl | scrap repl --interactive --format xstate 2>/dev/null

Only inspect result on each line

仅检查错误
cat $FILE.scl | scrap repl --interactive --format xstate 1>/dev/null

Only inspect error on each line

将错误记录到文件中
scrap code $FILE.scl --stream 2> $OUTPUT.log

Log error to file

以纯文本格式打印(无语法高亮)
scrap code $FILE.scl --format xstate --stream 2>&1 | cat

Print in plain format

仅打印结果
scrap code $FILE.scl --format xstate --stream 2>/dev/null | cat

Only print result and in plain format

仅打印错误
scrap code $FILE.scl --format xstate --stream 2>&1 1>/dev/null | cat

Only print error and in plain format

检查并将每一行记录到文件中
检查并记录错误
cat $FILE.scl | scrap repl --interactive --format xstate 2> $OUTPUT.log

Inspect and log error

检查并记录结果
cat $FILE.scl | scrap repl --interactive --format xstate > $OUTPUT.log

Inspect and log result

依赖关系

~22–35MB
~512K SLoC