1#![doc = include_str!("readme.md")]
2use core::range::Range;
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8#[derive(Debug, Clone)]
9pub struct NginxRoot {
10 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
12 pub range: Range<usize>,
13 pub items: Vec<NginxItem>,
15}
16
17#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19#[derive(Debug, Clone)]
20pub enum NginxItem {
21 Directive(Directive),
23 Block(Block),
25 Comment(Comment),
27}
28
29#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
31#[derive(Debug, Clone)]
32pub struct Directive {
33 pub name: String,
34 pub parameters: Vec<String>,
35 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
36 pub range: Range<usize>,
37}
38
39#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
41#[derive(Debug, Clone)]
42pub struct Block {
43 pub name: String,
44 pub parameters: Vec<String>,
45 pub items: Vec<NginxItem>,
46 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
47 pub range: Range<usize>,
48}
49
50#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
52#[derive(Debug, Clone)]
53pub struct Comment {
54 pub text: String,
55 #[cfg_attr(feature = "serde", serde(with = "oak_core::serde_range"))]
56 pub range: Range<usize>,
57}
58
59impl NginxRoot {
60 pub fn new(range: Range<usize>, items: Vec<NginxItem>) -> Self {
62 Self { range, items }
63 }
64}