wdl_format/config/
max_line_length.rs

1//! Configuration for max line length formatting.
2
3/// The default maximum line length.
4pub const DEFAULT_MAX_LINE_LENGTH: usize = 90;
5/// The minimum maximum line length.
6pub const MIN_MAX_LINE_LENGTH: usize = 60;
7/// The maximum maximum line length.
8pub const MAX_MAX_LINE_LENGTH: usize = 240;
9
10/// The maximum line length.
11#[derive(Clone, Copy, Debug, Eq, PartialEq)]
12pub struct MaxLineLength(Option<usize>);
13
14impl MaxLineLength {
15    /// Attempts to create a new `MaxLineLength` with the provided value.
16    ///
17    /// A value of `0` indicates no maximum.
18    pub fn try_new(value: usize) -> Result<Self, String> {
19        let val = match value {
20            0 => Self(None),
21            MIN_MAX_LINE_LENGTH..=MAX_MAX_LINE_LENGTH => Self(Some(value)),
22            _ => {
23                return Err(format!(
24                    "The maximum line length must be between {MIN_MAX_LINE_LENGTH} and \
25                     {MAX_MAX_LINE_LENGTH} or 0"
26                ));
27            }
28        };
29        Ok(val)
30    }
31
32    /// Gets the maximum line length. A value of `None` indicates no maximum.
33    pub fn get(&self) -> Option<usize> {
34        self.0
35    }
36}
37
38impl Default for MaxLineLength {
39    fn default() -> Self {
40        Self(Some(DEFAULT_MAX_LINE_LENGTH))
41    }
42}