Skip to main content

floria_plugin_sdk/utils/
depiction.rs

1use super::super::*;
2
3use std::fmt;
4
5/// Depiction markup delimiter.
6pub const MARKUP_DELIMITER: char = '|';
7
8/// Depiction markup escaped delimiter.
9pub const MARKUP_ESCAPED_DELIMITER: &str = "\\|";
10
11/// Escape depiction markup.
12pub fn escape_depiction_markup<ThingT>(thing: ThingT) -> String
13where
14    ThingT: fmt::Display,
15{
16    thing.to_string().replace(MARKUP_DELIMITER, MARKUP_ESCAPED_DELIMITER)
17}
18
19//
20// MapEscapeDepictionError
21//
22
23/// Map escape depiction error.
24pub trait MapEscapeDepictionError<OkT> {
25    /// Map escape depiction error.
26    fn map_escape_depiction_error(self) -> Result<OkT, DispatchError>;
27}
28
29impl<OkT, FromErrorT> MapEscapeDepictionError<OkT> for Result<OkT, FromErrorT>
30where
31    FromErrorT: fmt::Display,
32{
33    fn map_escape_depiction_error(self) -> Result<OkT, DispatchError> {
34        self.map_err(|error| escape_depiction_markup(error))
35    }
36}