#![doc = include_str!("readme.md")]
use core::range::Range;
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct NginxRoot {
#[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
pub range: Range<usize>,
pub items: Vec<NginxItem>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub enum NginxItem {
Directive(Directive),
Block(Block),
Comment(Comment),
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct Directive {
pub name: String,
pub parameters: Vec<String>,
#[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
pub range: Range<usize>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct Block {
pub name: String,
pub parameters: Vec<String>,
pub items: Vec<NginxItem>,
#[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
pub range: Range<usize>,
}
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone)]
pub struct Comment {
pub text: String,
#[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
pub range: Range<usize>,
}
impl NginxRoot {
pub fn new(range: Range<usize>, items: Vec<NginxItem>) -> Self {
Self { range, items }
}
}