1#![doc = include_str!("readme.md")]
2use core::range::Range;
3
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6#[derive(Debug, Clone)]
7pub struct NginxRoot {
8 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
10 pub range: Range<usize>,
11 pub items: Vec<NginxItem>,
13}
14
15#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
17#[derive(Debug, Clone)]
18pub enum NginxItem {
19 Directive(Directive),
21 Block(Block),
23 Comment(Comment),
25}
26
27#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
29#[derive(Debug, Clone)]
30pub struct Directive {
31 pub name: String,
33 pub parameters: Vec<String>,
35 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
37 pub range: Range<usize>,
38}
39
40#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
42#[derive(Debug, Clone)]
43pub struct Block {
44 pub name: String,
46 pub parameters: Vec<String>,
48 pub items: Vec<NginxItem>,
50 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
52 pub range: Range<usize>,
53}
54
55#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
57#[derive(Debug, Clone)]
58pub struct Comment {
59 pub text: String,
61 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
63 pub range: Range<usize>,
64}
65
66impl NginxRoot {
67 pub fn new(range: Range<usize>, items: Vec<NginxItem>) -> Self {
69 Self { range, items }
70 }
71}