/// A struct representing some properties to control the [`pretty_html`] generation. /// The `insert_tag`, `delete_tag` and `equality_tag` represents the `html` tag to wrap the part of the text being inserted, deleted or equality. /// /// E.g. if `insert_tag` is set to `span`, the text to be inserted will be wrapped around with `some text to insert`. /// `insert_tag` defaults to the `ins` tag, `delete_tag` defaults to the `del` tag and `equality_tag` defaults to `span`. /// /// `nltobr` switch enables or disables replacing of `\n` in the text with a `
` element. Defaults to `true` /// /// `insert_class`, `delete_class` or `equality_class` if set will be added as a `class="your css class"`. Defaults to `None` /// /// `insert_style`, `delete_style` and `equality_style` would add css style property to the output. /// E.g. if `insert_style: Some("background: yellow; color: purple")` is set the /// `insert` part of the pretty html would look like `insert text` /// /// [`pretty_html`]: struct.DiffMatchPatch.html/method.diff_pretty_html pub struct HtmlConfig<'a> { insert_tag: &'a str, delete_tag: &'a str, equality_tag: &'a str, nltobr: bool, insert_class: Option<&'a str>, delete_class: Option<&'a str>, equality_class: Option<&'a str>, insert_style: Option<&'a str>, delete_style: Option<&'a str>, equality_style: Option<&'a str>, } impl Default for HtmlConfig<'_> { fn default() -> Self { Self { insert_tag: "ins", delete_tag: "del", equality_tag: "span", nltobr: true, insert_class: None, delete_class: None, equality_class: None, insert_style: None, delete_style: None, equality_style: None, } } } impl<'a> HtmlConfig<'a> { /// Creates a new instance of the struct with some defaults. /// /// `insert_tag` defaults to "ins". /// /// `delete_tag` defaults to "del" /// /// `equality_tag` defaults to "span" /// /// `nltobr` defaults to `true` /// /// Other fields defaults to `None` pub fn new() -> Self { Self::default() } pub(crate) fn insert_tag(&self) -> &str { self.insert_tag } /// Set the HTML tag to be used for text inserted pub fn set_insert_tag(&mut self, tag: &'a str) { self.insert_tag = tag; } pub(crate) fn delete_tag(&self) -> &str { self.delete_tag } /// Set the HTML tag to be used for text deleted pub fn set_delete_tag(&mut self, tag: &'a str) { self.delete_tag = tag; } pub(crate) fn equality_tag(&self) -> &str { self.equality_tag } /// Set the HTML tag to be used for text that has not changed pub fn set_equality_tag(&mut self, tag: &'a str) { self.equality_tag = tag; } pub(crate) fn nltobr(&self) -> bool { self.nltobr } /// Switch to control if `\nl` should be replaced with `
` pub fn set_nl_to_br(&mut self, nltobr: bool) { self.nltobr = nltobr } pub(crate) fn insert_class(&self) -> Option<&'a str> { self.insert_class } /// Set the css class for the text inserted pub fn set_insert_class(&mut self, class: Option<&'a str>) { self.insert_class = class; } pub(crate) fn delete_class(&self) -> Option<&'a str> { self.delete_class } /// Set the delete class for text deleted pub fn set_delete_class(&mut self, class: Option<&'a str>) { self.delete_class = class; } pub(crate) fn equality_class(&self) -> Option<&'a str> { self.equality_class } /// Set the css class for text that has not changed pub fn set_equality_class(&mut self, class: Option<&'a str>) { self.equality_class = class; } pub(crate) fn insert_style(&self) -> Option<&'a str> { self.insert_style } /// Set the css style property for text inserted pub fn set_insert_style(&mut self, style: Option<&'a str>) { self.insert_style = style; } pub(crate) fn delete_style(&self) -> Option<&'a str> { self.delete_style } /// Set the css style property for text deleted pub fn set_delete_style(&mut self, style: Option<&'a str>) { self.delete_style = style; } pub(crate) fn equality_style(&self) -> Option<&'a str> { self.equality_style } /// Set the css style for text that has not changed pub fn set_equality_style(&mut self, style: Option<&'a str>) { self.equality_style = style; } }