From e8bb153b19ffa0ad815eb8934d40cd89ce550b99 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 8 Jul 2020 22:37:35 +0200 Subject: Add Markup type --- crates/ra_ide/src/markup.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 crates/ra_ide/src/markup.rs (limited to 'crates/ra_ide/src/markup.rs') diff --git a/crates/ra_ide/src/markup.rs b/crates/ra_ide/src/markup.rs new file mode 100644 index 000000000..2f2b3cc25 --- /dev/null +++ b/crates/ra_ide/src/markup.rs @@ -0,0 +1,38 @@ +//! Markdown formatting. +//! +//! Sometimes, we want to display a "rich text" in the UI. At the moment, we use +//! markdown for this purpose. It doesn't feel like a right option, but that's +//! what is used by LSP, so let's keep it simple. +use std::fmt; + +#[derive(Default, Debug)] +pub struct Markup { + text: String, +} + +impl From for String { + fn from(markup: Markup) -> Self { + markup.text + } +} + +impl fmt::Display for Markup { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + fmt::Display::fmt(&self.text, f) + } +} + +impl Markup { + pub fn as_str(&self) -> &str { + self.text.as_str() + } + pub fn is_empty(&self) -> bool { + self.text.is_empty() + } + pub fn push_section(&mut self, section: &str) { + if !self.text.is_empty() { + self.text.push_str("\n\n___\n"); + } + self.text.push_str(section); + } +} -- cgit v1.2.3