use serde::{Deserialize, Serialize};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct CodeMetadata {
pub script_type: String,
pub byte_count: usize,
pub line_count: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub bom: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub line_ending: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trailing_newline: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_line_length: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blank_line_count: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub indentation: Option<String>,
}
impl Default for CodeMetadata {
fn default() -> Self {
Self {
script_type: "unknown".to_string(),
byte_count: 0,
line_count: 0,
bom: None,
line_ending: None,
trailing_newline: None,
max_line_length: None,
blank_line_count: None,
indentation: None,
}
}
}
impl MinimalFallback for CodeMetadata {
fn minimal_fallback(file_size_bytes: usize) -> Self {
Self {
script_type: "unknown".to_string(),
byte_count: file_size_bytes,
line_count: 0,
bom: None,
line_ending: None,
trailing_newline: None,
max_line_length: None,
blank_line_count: None,
indentation: None,
}
}
}