use super::CONFIG_KEY;
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub(super) enum InlineStyle {
ExternalOnly,
ExternalWhenLong,
}
#[derive(Debug, serde::Deserialize)]
#[serde(default, deny_unknown_fields, rename_all = "snake_case")]
struct Config {
inline_style: InlineStyle,
inline_max_lines: usize,
inline_max_fraction_of_file: Option<f32>,
}
impl Default for Config {
fn default() -> Self {
Self {
inline_style: InlineStyle::ExternalWhenLong,
inline_max_lines: 50,
inline_max_fraction_of_file: None,
}
}
}
pub(super) struct InlineTestFootprint {
pub(super) inline_style: InlineStyle,
pub(super) inline_max_lines: usize,
pub(super) inline_max_fraction_of_file: Option<f32>,
}
impl InlineTestFootprint {
pub(super) fn new() -> Self {
let config: Config = dylint_linting::config_or_default(CONFIG_KEY);
if let Some(fraction) = config.inline_max_fraction_of_file
&& !(0.0..1.0).contains(&fraction)
{
panic!(
"perfectionist::inline_test_footprint: `inline_max_fraction_of_file` must be in \
the range `0.0 <= x < 1.0`; got {fraction}. Omit the key to disable the relative \
cap.",
);
}
Self {
inline_style: config.inline_style,
inline_max_lines: config.inline_max_lines,
inline_max_fraction_of_file: config.inline_max_fraction_of_file,
}
}
}