File tree Expand file tree Collapse file tree 4 files changed +26
-11
lines changed Expand file tree Collapse file tree 4 files changed +26
-11
lines changed Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ def foobar(foor, bar={}):
99"# ;
1010
1111 let message = & [ Group :: new ( )
12+ . primary_level ( Level :: NOTE )
1213 . element (
1314 Snippet :: source ( source)
1415 . fold ( false )
Original file line number Diff line number Diff line change @@ -275,14 +275,16 @@ impl Renderer {
275275 if og_primary_path. is_none ( ) && primary_path. is_some ( ) {
276276 og_primary_path = primary_path;
277277 }
278- let level = group
279- . elements
280- . iter ( )
281- . find_map ( |s| match & s {
282- Element :: Title ( title) => Some ( title. level . clone ( ) ) ,
283- _ => None ,
284- } )
285- . unwrap_or ( Level :: ERROR ) ;
278+ let level = group. primary_level . clone ( ) . unwrap_or_else ( || {
279+ group
280+ . elements
281+ . first ( )
282+ . and_then ( |s| match & s {
283+ Element :: Title ( title) => Some ( title. level . clone ( ) ) ,
284+ _ => None ,
285+ } )
286+ . unwrap_or ( Level :: ERROR )
287+ } ) ;
286288 let mut source_map_annotated_lines = VecDeque :: new ( ) ;
287289 let mut max_depth = 0 ;
288290 for e in & group. elements {
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ pub(crate) struct Id<'a> {
2020/// An [`Element`] container
2121#[ derive( Clone , Debug ) ]
2222pub struct Group < ' a > {
23+ pub ( crate ) primary_level : Option < Level < ' a > > ,
2324 pub ( crate ) elements : Vec < Element < ' a > > ,
2425}
2526
@@ -31,7 +32,10 @@ impl Default for Group<'_> {
3132
3233impl < ' a > Group < ' a > {
3334 pub fn new ( ) -> Self {
34- Self { elements : vec ! [ ] }
35+ Self {
36+ primary_level : None ,
37+ elements : vec ! [ ] ,
38+ }
3539 }
3640
3741 pub fn element ( mut self , section : impl Into < Element < ' a > > ) -> Self {
@@ -44,6 +48,14 @@ impl<'a> Group<'a> {
4448 self
4549 }
4650
51+ /// Set the primary [`Level`] for this [`Group`]. If not specified, the
52+ /// [`Level`] of the first [`Title`] in the [`Group`] will be used, if no
53+ /// [`Title`] is present, it will default to [`Level::ERROR`].
54+ pub fn primary_level ( mut self , level : Level < ' a > ) -> Self {
55+ self . primary_level = Some ( level) ;
56+ self
57+ }
58+
4759 pub fn is_empty ( & self ) -> bool {
4860 self . elements . is_empty ( )
4961 }
You can’t perform that action at this time.
0 commit comments