aboutsummaryrefslogtreecommitdiff
path: root/src/gemtext/list.gleam
blob: 23a73c73df3fba5b0934373388af6d53faa70c3a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import gemtext/gemtext.{type Gemtext}
import gleam/list

pub fn group_adjacent_list_items(lines: List(Gemtext)) -> List(Gemtext) {
  case lines {
    [gemtext.ListLine(a), gemtext.ListLine(b), ..rest] ->
      group_adjacent_list_items([gemtext.List([[a], [b]]), ..rest])
    [gemtext.List(lists), gemtext.ListLine(item), ..rest] ->
      group_adjacent_list_items([
        gemtext.List(list.append(lists, [[item]])),
        ..rest
      ])
    [g, ..rest] -> list.append([g], group_adjacent_list_items(rest))
    [] -> []
  }
}