Skip to content

Latest commit

 

History

History
79 lines (56 loc) · 1.93 KB

File metadata and controls

79 lines (56 loc) · 1.93 KB

chara_card   Version License

chara_card provides thick (not yet...) abstraction layer on character card formats and .charx in Rust.

Its primary goal is to help programs to run the same format everywhere with same behaviour.

Features

(De)serialization/Validation:

Evaluation:

  • Content evaluation
    • Decorator evaluator
    • CBS evaluator
  • Non-standard extension compatibility
    • RisuAI

Packaging:

  • Extracting from .charx
  • Packaging to .charx

Usage

Add chara_card to your dependencies in Cargo.toml.

Parse card.json:

use chara_card::raw::CharacterCard;

fn parse_card_json(card_json: &str) {
    // Parse character card from JSON string
    let parsed: CharacterCard = serde_json::from_str(card_json).unwrap();

    println!("{:#?}", parsed);
}

Extract from .charx:

Warning

Currently, charx module is unstable and API may be changed in future.

use chara_card::charx::{CharXImport, CharX};
use std::io::Cursor;

fn parse_charx(bytes: &[u8]) {
    // Extract from archived bytes (.charx)
    let reader = Cursor::new(bytes);
    let import = CharXImport::from_reader(reader).unwrap();
    let _charx = CharX::try_from(import).unwrap();
}

License

Licensed under Apache License, Version 2.0.