1#![deny(missing_docs)]
2mod lex;
29mod parse;
30
31pub mod mangle;
32#[cfg(feature = "pgp")]
33pub mod pgp;
34pub mod release;
35pub mod search;
36
37pub const DEFAULT_VERSION: u32 = 1;
40
41pub const DEFAULT_USER_AGENT: &str = concat!("debian-watch-rs/", env!("CARGO_PKG_VERSION"));
43
44mod types;
45
46pub use release::Release;
47pub use types::*;
48
49#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
52#[allow(non_camel_case_types, missing_docs, clippy::upper_case_acronyms)]
53#[repr(u16)]
54pub(crate) enum SyntaxKind {
55 KEY = 0,
56 VALUE,
57 EQUALS,
58 QUOTE,
59 COMMA,
60 CONTINUATION,
61 NEWLINE,
62 WHITESPACE, COMMENT, ERROR, ROOT, VERSION, ENTRY, OPTS_LIST, OPTION, OPTION_SEPARATOR, URL, MATCHING_PATTERN, VERSION_POLICY, SCRIPT, }
78
79impl From<SyntaxKind> for rowan::SyntaxKind {
81 fn from(kind: SyntaxKind) -> Self {
82 Self(kind as u16)
83 }
84}
85
86pub use crate::parse::Entry;
87pub use crate::parse::WatchFile;
88
89#[cfg(test)]
90mod tests {
91 #[test]
92 fn test_create_watchfile() {
93 let wf = super::WatchFile::new(None);
94 assert_eq!(wf.version(), super::DEFAULT_VERSION);
95
96 assert_eq!("", wf.to_string());
97
98 let wf = super::WatchFile::new(Some(4));
99 assert_eq!(wf.version(), 4);
100
101 assert_eq!("version=4\n", wf.to_string());
102 }
103
104 #[test]
105 fn test_set_version() {
106 let mut wf = super::WatchFile::new(Some(4));
107 assert_eq!(wf.version(), 4);
108
109 wf.set_version(5);
110 assert_eq!(wf.version(), 5);
111 assert_eq!("version=5\n", wf.to_string());
112
113 let mut wf = super::WatchFile::new(None);
115 assert_eq!(wf.version(), super::DEFAULT_VERSION);
116
117 wf.set_version(4);
118 assert_eq!(wf.version(), 4);
119 assert_eq!("version=4\n", wf.to_string());
120 }
121
122 #[test]
123 fn test_set_version_on_parsed() {
124 let mut wf: super::WatchFile = "version=4\n".parse().unwrap();
126 assert_eq!(wf.version(), 4);
127
128 wf.set_version(5);
129 assert_eq!(wf.version(), 5);
130 assert_eq!("version=5\n", wf.to_string());
131
132 let mut wf: super::WatchFile = "".parse().unwrap();
134 assert_eq!(wf.version(), super::DEFAULT_VERSION);
135
136 wf.set_version(4);
137 assert_eq!(wf.version(), 4);
138 assert_eq!("version=4\n", wf.to_string());
139 }
140}