zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

list_info.ex (1229B)


      1 defmodule EarmarkParser.Parser.ListInfo do
      2 
      3   import EarmarkParser.Helpers.LookaheadHelpers, only: [opens_inline_code: 1, still_inline_code: 2]
      4 
      5   @moduledoc false
      6 
      7   @not_pending {nil, 0}
      8 
      9   defstruct(
     10     indent: 0, 
     11     lines: [],
     12     loose?: false,
     13     pending: @not_pending,
     14     options: %EarmarkParser.Options{},
     15     width: 0
     16   )
     17 
     18   def new(%EarmarkParser.Line.ListItem{initial_indent: ii, list_indent: width}=item, options) do
     19     pending = opens_inline_code(item)
     20     %__MODULE__{indent: ii, lines: [item.content], options: options, pending: pending, width: width}
     21   end
     22 
     23   def update_list_info(list_info, line, pending_line, loose? \\ false) do
     24     prepend_line(list_info, line) |> _update_rest(pending_line, loose?)
     25   end
     26 
     27   def prepend_line(%__MODULE__{lines: lines}=list_info, line) do
     28     %{list_info|lines: [line|lines]}
     29   end
     30 
     31   defp _update_rest(%{pending: @not_pending}=list_info, line, loose?) do
     32     pending = opens_inline_code(line)
     33     %{list_info | pending: pending, loose?: loose?}
     34   end
     35 
     36   defp _update_rest(%{pending: pending}=list_info, line, loose?) do
     37     pending1 = still_inline_code(line, pending)
     38     %{list_info | pending: pending1, loose?: loose?}
     39   end
     40 end
     41 # SPDX-License-Identifier: Apache-2.0