use serde::{Deserialize, Serialize};
use super::{default_priority, default_rule_scope, default_rule_weight, default_true};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct CustomRendererConfig {
pub id: String,
pub name: String,
#[serde(default)]
pub detect_patterns: Vec<String>,
#[serde(default)]
pub render_command: Option<String>,
#[serde(default)]
pub render_args: Vec<String>,
#[serde(default = "default_priority")]
pub priority: i32,
}
#[derive(Clone, Debug, Serialize, Deserialize, Default)]
pub struct FormatDetectionRulesConfig {
#[serde(default)]
pub additional: Vec<UserDetectionRule>,
#[serde(default)]
pub overrides: Vec<RuleOverride>,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct UserDetectionRule {
pub id: String,
pub pattern: String,
#[serde(default = "default_rule_weight")]
pub weight: f32,
#[serde(default = "default_rule_scope")]
pub scope: String,
#[serde(default = "default_true")]
pub enabled: bool,
#[serde(default)]
pub description: String,
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct RuleOverride {
pub id: String,
#[serde(default)]
pub enabled: Option<bool>,
#[serde(default)]
pub weight: Option<f32>,
}