Skip to content

Commit 4de115a

Browse files
committed
Implement Rule support in markdown widget
1 parent ef13eb5 commit 4de115a

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

widget/src/markdown.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ use crate::core::{
5151
self, Color, Element, Length, Padding, Pixels, Theme, color,
5252
};
5353
use crate::{
54-
column, container, rich_text, row, rule, scrollable, span, text,
55-
vertical_rule,
54+
column, container, horizontal_rule, rich_text, row, rule, scrollable, span,
55+
text, vertical_rule,
5656
};
5757

5858
use std::borrow::BorrowMut;
@@ -213,6 +213,8 @@ pub enum Item {
213213
},
214214
/// A quote.
215215
Quote(Vec<Item>),
216+
/// A horizontal separator.
217+
Rule,
216218
}
217219

218220
/// A bunch of parsed Markdown text.
@@ -877,6 +879,9 @@ fn parse_with<'a>(
877879
});
878880
None
879881
}
882+
pulldown_cmark::Event::Rule => {
883+
produce(state.borrow_mut(), &mut stack, Item::Rule, source)
884+
}
880885
_ => None,
881886
})
882887
}
@@ -1107,6 +1112,7 @@ where
11071112
items,
11081113
} => viewer.ordered_list(settings, *start, items),
11091114
Item::Quote(quote) => viewer.quote(settings, quote),
1115+
Item::Rule => viewer.rule(settings),
11101116
}
11111117
}
11121118

@@ -1296,6 +1302,17 @@ where
12961302
.into()
12971303
}
12981304

1305+
/// Displays a rule using the default look.
1306+
pub fn rule<'a, Message, Theme, Renderer>()
1307+
-> Element<'a, Message, Theme, Renderer>
1308+
where
1309+
Message: 'a,
1310+
Theme: Catalog + 'a,
1311+
Renderer: core::text::Renderer<Font = Font> + 'a,
1312+
{
1313+
horizontal_rule(2).into()
1314+
}
1315+
12991316
/// A view strategy to display a Markdown [`Item`].
13001317
pub trait Viewer<'a, Message, Theme = crate::Theme, Renderer = crate::Renderer>
13011318
where
@@ -1402,6 +1419,16 @@ where
14021419
) -> Element<'a, Message, Theme, Renderer> {
14031420
quote(self, settings, contents)
14041421
}
1422+
1423+
/// Displays a rule.
1424+
///
1425+
/// By default, it calls [`rule`].
1426+
fn rule(
1427+
&self,
1428+
_settings: Settings,
1429+
) -> Element<'a, Message, Theme, Renderer> {
1430+
rule()
1431+
}
14051432
}
14061433

14071434
#[derive(Debug, Clone, Copy)]

0 commit comments

Comments
 (0)