Move CharacterSb to lib

This commit is contained in:
2026-05-11 00:10:38 +02:00
parent 895b0a2f02
commit 6e4a4af044
3 changed files with 38 additions and 36 deletions

36
src/character.rs Normal file
View File

@@ -0,0 +1,36 @@
use serde::Deserialize;
#[allow(dead_code)]
#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
pub struct CharacterSb {
pub name: String,
#[serde(rename = "type")]
pub kind: String,
pub level: serde_json::Value,
#[serde(rename = "trait")]
pub traits: Vec<String>,
pub skill_markdown: Option<String>,
pub hp_raw: String,
pub perception: i32,
pub sense_markdown: String,
pub strength: i32,
pub dexterity: i32,
pub constitution: i32,
pub intelligence: i32,
pub wisdom: i32,
pub charisma: i32,
pub ac: i32,
pub fortitude_save: i32,
pub reflex_save: i32,
pub will_save: i32,
pub immunity_markdown: Option<String>,
pub resistance_markdown: Option<String>,
pub weakness_markdown: Option<String>,
pub speed_markdown: String,
pub markdown: String,
/// If this is a legacy creature that has been remastered, this will be `Some`
pub remaster_id: Option<Vec<String>>,
/// If this is a remastered creature, this will be `Some`
pub legacy_id: Option<Vec<String>>,
}

1
src/lib.rs Normal file
View File

@@ -0,0 +1 @@
pub mod character;

View File

@@ -1,7 +1,7 @@
use anyhow::Context;
use clap::Parser;
use nethys_to_obsidian::character::CharacterSb;
use regex::Regex;
use serde::Deserialize;
use std::fs;
use std::io::{Read, stdin};
use std::path::PathBuf;
@@ -14,41 +14,6 @@ struct Args {
path: Option<PathBuf>,
}
#[allow(dead_code)]
#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
struct CharacterSb {
name: String,
#[serde(rename = "type")]
kind: String,
level: serde_json::Value,
#[serde(rename = "trait")]
traits: Vec<String>,
skill_markdown: Option<String>,
hp_raw: String,
perception: i32,
sense_markdown: String,
strength: i32,
dexterity: i32,
constitution: i32,
intelligence: i32,
wisdom: i32,
charisma: i32,
ac: i32,
fortitude_save: i32,
reflex_save: i32,
will_save: i32,
immunity_markdown: Option<String>,
resistance_markdown: Option<String>,
weakness_markdown: Option<String>,
speed_markdown: String,
markdown: String,
/// If this is a legacy creature that has been remastered, this will be `Some`
remaster_id: Option<Vec<String>>,
/// If this is a remastered creature, this will be `Some`
legacy_id: Option<Vec<String>>,
}
fn format_val(v: &serde_json::Value) -> String {
if v.is_string() {
v.as_str().unwrap_or("").to_string()