1
0
Fork 0
forked from wry/wry

config: add fallback output mode

This commit is contained in:
khyperia 2025-12-23 14:57:02 +01:00 committed by Julian Orth
parent a975e3b25a
commit dd3f8bad40
16 changed files with 215 additions and 19 deletions

View file

@ -0,0 +1,38 @@
use {
crate::{
config::parser::{DataType, ParseResult, Parser, UnexpectedDataType},
toml::toml_span::{Span, SpannedExt},
},
jay_config::input::FallbackOutputMode,
thiserror::Error,
};
pub struct FallbackOutputModeParser;
#[derive(Debug, Error)]
pub enum FallbackOutputModeParserError {
#[error(transparent)]
DataType(#[from] UnexpectedDataType),
#[error("Unknown mode {0}")]
Unknown(String),
}
impl Parser for FallbackOutputModeParser {
type Value = FallbackOutputMode;
type Error = FallbackOutputModeParserError;
const EXPECTED: &'static [DataType] = &[DataType::String];
fn parse_string(&mut self, span: Span, string: &str) -> ParseResult<Self> {
use FallbackOutputMode::*;
let api = match string.to_ascii_lowercase().as_str() {
"cursor" => Cursor,
"focus" => Focus,
_ => {
return Err(
FallbackOutputModeParserError::Unknown(string.to_string()).spanned(span)
);
}
};
Ok(api)
}
}