tooltip: Tooltip,
playground_button: Option<&str>,
) {
- let class = match tooltip {
- Tooltip::Ignore => " ignore",
- Tooltip::CompileFail => " compile_fail",
- Tooltip::ShouldPanic => " should_panic",
- Tooltip::Edition(_) => " edition",
- Tooltip::None => "",
- };
-
- if tooltip != Tooltip::None {
- write!(
- out,
- "<div class='information'><div class='tooltip{}'{}>ⓘ</div></div>",
- class,
- if let Tooltip::Edition(edition_info) = tooltip {
- format!(" data-edition=\"{}\"", edition_info)
- } else {
- String::new()
- },
- );
- }
-
- write_header(out, &format!("rust-example-rendered{}", class), None);
+ write_header(out, "rust-example-rendered", None, tooltip);
write_code(out, src, None, None);
write_footer(out, playground_button);
}
/// Highlights `src` as a macro, returning the HTML output.
pub(crate) fn render_macro_with_highlighting(src: &str, out: &mut Buffer) {
- write_header(out, "macro", None);
+ write_header(out, "macro", None, Tooltip::None);
write_code(out, src, None, None);
write_footer(out, None);
}
href_context: HrefContext<'_, '_, '_>,
decoration_info: DecorationInfo,
) {
- write_header(out, "", Some(line_numbers));
+ write_header(out, "", Some(line_numbers), Tooltip::None);
write_code(out, src, Some(href_context), Some(decoration_info));
write_footer(out, None);
}
-fn write_header(out: &mut Buffer, class: &str, extra_content: Option<Buffer>) {
+fn write_header(out: &mut Buffer, class: &str, extra_content: Option<Buffer>, tooltip: Tooltip) {
write!(out, "<div class=\"example-wrap\">");
+
+ let tooltip_class = match tooltip {
+ Tooltip::Ignore => " ignore",
+ Tooltip::CompileFail => " compile_fail",
+ Tooltip::ShouldPanic => " should_panic",
+ Tooltip::Edition(_) => " edition",
+ Tooltip::None => "",
+ };
+
+ if tooltip != Tooltip::None {
+ write!(
+ out,
+ "<div class='information'><div class='tooltip{}'{}>ⓘ</div></div>",
+ tooltip_class,
+ if let Tooltip::Edition(edition_info) = tooltip {
+ format!(" data-edition=\"{}\"", edition_info)
+ } else {
+ String::new()
+ },
+ );
+ }
+
if let Some(extra) = extra_content {
out.push_buffer(extra);
}
- if class.is_empty() {
+ if class.is_empty() && tooltip_class.is_empty() {
write!(out, "<pre class=\"rust\">");
} else {
- write!(out, "<pre class=\"rust {}\">", class);
+ write!(out, "<pre class=\"rust {class}{tooltip_class}\">");
}
write!(out, "<code>");
}
fn new(iter: TokenIter<'a>) -> Self {
Self { stored: VecDeque::new(), peek_pos: 0, iter }
}
- /// Returns the next item after the current one. It doesn't interfer with `peek_next` output.
+ /// Returns the next item after the current one. It doesn't interfere with `peek_next` output.
fn peek(&mut self) -> Option<&(TokenKind, &'a str)> {
if self.stored.is_empty() {
if let Some(next) = self.iter.next() {
}
self.stored.front()
}
- /// Returns the next item after the last one peeked. It doesn't interfer with `peek` output.
+ /// Returns the next item after the last one peeked. It doesn't interfere with `peek` output.
fn peek_next(&mut self) -> Option<&(TokenKind, &'a str)> {
self.peek_pos += 1;
if self.peek_pos - 1 < self.stored.len() {