11个版本 (6个稳定版)

1.0.6 2022年6月14日
1.0.3 2022年6月13日
1.0.1 2021年10月22日
0.2.3 2021年10月22日
0.1.2 2021年10月19日

解析器实现 中排名 432


aaa 中使用

GPL-3.0 许可证

53KB
1K SLoC

rs3a

该库提供了3a ascii动画格式的结构化表示以及读取和写入该格式的相关方法。
crates.io 上的此库

使用情况

  • aaa - 用于3a文件渲染的Tui工具

用法

将此添加到您的 Cargo.toml

[dependencies]
rs3a = "1"

以下是一个简单的示例,它解析一个3a格式的字符串并显示标题

use rs3a;

const COLORTABLE_EXAMPLE: &str = "	
width 32
height 19
loop false
colors full
title colortable demo
author Moth

in ' ab '                       ffffffffffffffffffffffffffffffff00000000000000000000000000000000
a-foreground, b-background      ffffffffffffffffffffffffffffffff00000000000000000000000000000000
                                ffffffffffffffffffffffffffffffff00000000000000000000000000000000
 00  01  02  03  04  05  06  07 0000000000000000000000000000000000001111222233334444555566667777
 10  11  12  13  14  15  16  17 1111111111111111111111111111111100001111222233334444555566667777
 20  21  22  23  24  25  26  27 2222222222222222222222222222222200001111222233334444555566667777
 30  31  32  33  34  35  36  37 3333333333333333333333333333333300001111222233334444555566667777
 40  41  42  43  44  45  46  47 4444444444444444444444444444444400001111222233334444555566667777
 50  51  52  53  54  55  56  57 5555555555555555555555555555555500001111222233334444555566667777
 60  61  62  63  64  65  66  67 6666666666666666666666666666666600001111222233334444555566667777
 70  71  72  73  74  75  76  77 7777777777777777777777777777777700001111222233334444555566667777
 80  81  82  83  84  85  86  87 8888888888888888888888888888888800001111222233334444555566667777
 90  91  92  93  94  95  96  97 9999999999999999999999999999999900001111222233334444555566667777
 a0  a1  a2  a3  a4  a5  a6  a7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00001111222233334444555566667777
 b0  b1  b2  b3  b4  b5  b6  b7 bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb00001111222233334444555566667777
 c0  c1  c2  c3  c4  c5  c6  c7 cccccccccccccccccccccccccccccccc00001111222233334444555566667777
 d0  d1  d2  d3  d4  d5  d6  d7 dddddddddddddddddddddddddddddddd00001111222233334444555566667777
 e0  e1  e2  e3  e4  e5  e6  e7 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00001111222233334444555566667777
 f0  f1  f2  f3  f4  f5  f6  f7 ffffffffffffffffffffffffffffffff00001111222233334444555566667777";

fn main() {
    let art = rs3a::load(COLORTABLE_EXAMPLE.to_string()).unwrap();
    println!("{:?}", art.header);
}

简短的API描述

结构体

库的核心是Art类型,它实现了3a结构

struct Art{
    pub header: Header,
    pub body: Body,
}

标题类型包含3a文件标题的信息

struct Header{
    width: u16,
    height: u16,
    delay: u16,
    loop_enable: bool,
    color_mod: ColorMod,
    utf8: bool,
    datacols: u16,
    preview: u16,
    audio: Option<String>,
    title: Option<String>,
    author: Option<String>,
}

主体类型包含帧的数组,其中每个帧是行的数组,每个行是行片段的数组

struct Body{
    frames: Vec<Frame>
}
type Frame = Vec<Row>;
type Row = Vec<RowFragment>;

每个RowFragment是一组具有相同前景和背景颜色值的连续符号

struct RowFragment{
    text: String,
    fg_color: Option<Color>,
    bg_color: Option<Color>,
}

函数

loadsave 函数允许您将字符串转换为 Art 并反向转换。
load_filesave_file 函数允许您将3a文件读取到 Art 并将 Art 写入3a文件。

依赖项

~2.2–3MB
~54K SLoC