Open hseager opened 7 months ago
I've created a wrapper module which detects WASM builds and isn't perfect, but is working well enough for my needs.
pub trait TextFormatter {
fn format_bold(self) -> String;
}
impl TextFormatter for &str {
#[cfg(target_arch = "wasm32")]
fn format_bold(self) -> String {
format!("<span style='font-weight: bold;'>{}</span>", self)
}
#[cfg(not(target_arch = "wasm32"))]
fn format_bold(self) -> String {
use colored::Colorize;
self.bold().to_string()
}
}
I wonder if there would be interest in integrating this into this crate, or if it better separated out into another crate.
IMO a tool that does what you're asking, wrapping text in <span style="STYLE"></span>
, should be a separate crate. This could also be useful even when not used in WASM. For example, a server rendering an HTML response.
BTW, such a tool should probably use the appropriate HTML elements. As a usage example, perhaps something like this:
assert_eq!("foo".strong().style("color: red;").to_string(), "<strong style=\"color: red;\">foo</strong>");
This could be achieved, for example, if str
implements fn strong(&self) -> SomeHTMLType
and SomeHTMLType
implements fn style(mut self, style: SomeStyleType) -> Self
.
You might want to check if a crate that does this already exists, because this usage I'm making up does feel vaguely familiar.
Firstly, thanks for the crate!
Would it be possible to get this crate working when building for WASM?
I've built a text based adventure game which I'm also building for WASM and it's a shame for the colored text not to work: https://github.com/hseager/you-are-merlin
I thought I'd ask for some advice before diving in and to see if it's a terrible idea or not as I apprectiate this crate is built with the terminal in mind. Thanks!