//! allows configuration of how the error will appear.
/// characters used in printing the error.
#[derive(Debug, Clone, Copy)]
pub struct Charset {
/// the line on the left
pub column_line: char,
/// the line on the left when theres a label there
pub column_broken_line: char,
/// the character shown below the error span for inline labels
/// ```text
/// 0 | problem
/// ^^^^^^^ issue
/// ^^^^^^^ these ones
/// ```
pub spanning: char,
/// the character shown about the span, when the error is moved to a next line
/// ```text
/// 0 | problem
/// ───┬───
/// ^^^ ^^^ these ones
/// ```
pub spanning_out: char,
/// the character shown in the middle of the span, when the error is moved to a next line, in the middle
/// ```text
/// 0 | problem
/// ───┬───
/// ^ this one
/// ```
pub spanning_mid: char,
/// the character used to extend the label to yet another line
/// ```text
/// 0 | problem
/// ───┬───
/// │ < this one
/// ```
pub out_extension: char,
/// the character used to end the label for a moved label
/// ```text
/// 0 | problem
/// ───┬───
/// ╰ issue
/// ^ this one
/// ```
pub out_end: char,
/// the character used for a note
/// ```text
/// 0 | problem
/// > btw i must say you use the same text in the example alot
/// ^ this one
/// ```
pub note: char,
}
impl Charset {
/// Produces a (pretty) unicode charset.
pub const fn unicode() -> Self {
Self {
column_line: '|',
column_broken_line: '¦',
spanning: '^',
spanning_out: '─',
spanning_mid: '┬',
out_extension: '│', // not a pipe btw
out_end: '╰',
note: '>',
}
}
/// Produces a (ugly) ascii charset.
pub const fn ascii() -> Self {
Self {
column_line: '|',
column_broken_line: ':',
spanning: '^',
spanning_out: '-',
spanning_mid: '.',
out_extension: '|',
out_end: '\\',
note: '>',
}
}
}