osu-file-parser 1.1.0

A crate to parse an osu! beatmap file
Documentation
use std::num::ParseIntError;

use strum_macros::{EnumString, IntoStaticStr};
use thiserror::Error;

use crate::{helper::macros::verbose_error_to_error, InvalidRepr};

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseBackgroundError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `start_time` field")]
    MissingStartTime,
    #[error("Invalid `start_time` value")]
    InvalidStartTime,
    #[error("Missing `file_name` field")]
    MissingFileName,
    #[error("Missing `x` field")]
    MissingX,
    #[error("Invalid `x` value")]
    InvalidX,
    #[error("Missing `y` field")]
    MissingY,
    #[error("Invalid `y` value")]
    InvalidY,
}

verbose_error_to_error!(ParseBackgroundError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseVideoError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `start_time` field")]
    MissingStartTime,
    #[error("Invalid `start_time` value")]
    InvalidStartTime,
    #[error("Missing `file_name` field")]
    MissingFileName,
    #[error("Missing `x` field")]
    MissingX,
    #[error("Invalid `x` value")]
    InvalidX,
    #[error("Missing `y` field")]
    MissingY,
    #[error("Invalid `y` value")]
    InvalidY,
}

verbose_error_to_error!(ParseVideoError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseBreakError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `start_time` field")]
    MissingStartTime,
    #[error("Invalid `start_time` value")]
    InvalidStartTime,
    #[error("Missing `end_time` field")]
    MissingEndTime,
    #[error("Invalid `end_time` value")]
    InvalidEndTime,
}

verbose_error_to_error!(ParseBreakError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseColourTransformationError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `start_time` field")]
    MissingStartTime,
    #[error("Invalid `start_time` value")]
    InvalidStartTime,
    #[error("Missing `end_time` field")]
    MissingEndTime,
    #[error("Invalid `end_time` value")]
    InvalidEndTime,
    #[error("Missing `red` field")]
    MissingRed,
    #[error("Invalid `red` value")]
    InvalidRed,
    #[error("Missing `green` field")]
    MissingGreen,
    #[error("Invalid `green` value")]
    InvalidGreen,
    #[error("Missing `blue` field")]
    MissingBlue,
    #[error("Invalid `blue` value")]
    InvalidBlue,
}

verbose_error_to_error!(ParseColourTransformationError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseSpriteLegacyError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `layer` field")]
    MissingLayer,
    #[error("Invalid `layer` value")]
    InvalidLayer,
    #[error("Missing `origin` field")]
    MissingOrigin,
    #[error("Invalid `origin` value")]
    InvalidOrigin,
    #[error("Missing `file_name` field")]
    MissingFileName,
    #[error("Missing `x` field")]
    MissingX,
    #[error("Invalid `x` value")]
    InvalidX,
    #[error("Missing `y` field")]
    MissingY,
    #[error("Invalid `y` value")]
    InvalidY,
}

verbose_error_to_error!(ParseSpriteLegacyError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseAnimationLegacyError {
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `layer` field")]
    MissingLayer,
    #[error("Invalid `layer` value")]
    InvalidLayer,
    #[error("Missing `origin` field")]
    MissingOrigin,
    #[error("Invalid `origin` value")]
    InvalidOrigin,
    #[error("Missing `file_name` field")]
    MissingFileName,
    #[error("Missing `x` field")]
    MissingX,
    #[error("Invalid `x` value")]
    InvalidX,
    #[error("Missing `y` field")]
    MissingY,
    #[error("Invalid `y` value")]
    InvalidY,
}

verbose_error_to_error!(ParseAnimationLegacyError);

#[derive(Debug, Error, IntoStaticStr, EnumString)]
#[non_exhaustive]
pub enum ParseSampleLegacyError {
    #[error("Missing `time` field")]
    MissingTime,
    #[error("Invalid `time` value")]
    InvalidTime,
    #[error("Wrong event type")]
    WrongEventType,
    #[error("Missing `file_name` field")]
    MissingFileName,
    #[error("Missing `volume` field")]
    MissingVolume,
    #[error("Invalid `volume` value")]
    InvalidVolume,
    #[error("Missing `layer` field")]
    MissingLayer,
    #[error("Invalid `layer` value")]
    InvalidLayer,
}

verbose_error_to_error!(ParseSampleLegacyError);

#[derive(Debug, Error, IntoStaticStr)]
#[non_exhaustive]
pub enum ParseOriginTypeLegacyError {
    #[error(transparent)]
    ParseIntError(#[from] ParseIntError),
    #[error(transparent)]
    InvalidRepr(#[from] InvalidRepr),
}

#[derive(Debug, Error, IntoStaticStr)]
#[non_exhaustive]
pub enum ParseLayerLegacyError {
    #[error(transparent)]
    ParseIntError(#[from] ParseIntError),
    #[error(transparent)]
    InvalidRepr(#[from] InvalidRepr),
}