let node_of_blk_itm (doc_settings : t_doc_settings) (path : t_path) (auto_nr : int) (a : Doc_types.tr_blk_itm) : t_node =
match a.fld_blk_itm_lbl with
| Cu_lbl_auto Cs_lbl_auto -> (
let lvl : int = lvl_of_path path in
let lbl : string = doc_settings.auto_numbering lvl auto_nr in
match a.fld_blk_itm_tag_or_id with
|None -> ITM_NODE (ITM_AUTO lbl)
|Some tag_or_id -> (
match tag_or_id with
|Cu_tag_or_id_tag (tag : ts_tag) -> (
match doc_settings.expand_tag tag with
|None -> (
match tag with
|Cs_tag "BIB" -> ITM_NODE (ITM_BIB_AUTO lbl)
|_ -> ITM_NODE (ITM_AUTO lbl)
)
|Some (_,tag) -> ITM_NODE (ITM_TAG_AUTO (tag, lbl))
)
|Cu_tag_or_id_id (id : tr_id) -> (
match doc_settings.expand_tag id.fld_id_tag with
|None -> (
match id.fld_id_tag with
|Cs_tag "BIB" -> ITM_NODE (ITM_BIB_AUTO lbl)
|_ -> ITM_NODE (ITM_AUTO lbl)
)
|Some (_,tag) -> ITM_NODE (ITM_TAG_AUTO (tag, lbl))
)
)
)
| Cu_lbl_custom (Cs_lbl_custom (s : string)) ->
match a.fld_blk_itm_tag_or_id with
|None -> ITM_NODE (ITM_CUSTOM s)
|Some tag_or_id -> (
match tag_or_id with
|Cu_tag_or_id_tag (tag : ts_tag) -> (
match doc_settings.expand_tag tag with
|None -> (
match tag with
|Cs_tag "BIB" -> ITM_NODE (ITM_BIB_CUSTOM s)
|_ -> ITM_NODE (ITM_AUTO s)
)
|Some (_,tag) -> ITM_NODE (ITM_TAG_AUTO (tag, s))
)
|Cu_tag_or_id_id (id : tr_id) -> (
match doc_settings.expand_tag id.fld_id_tag with
|None -> (
match id.fld_id_tag with
|Cs_tag "BIB" -> ITM_NODE (ITM_BIB_CUSTOM s)
|_ -> ITM_NODE (ITM_CUSTOM s)
)
|Some (_,tag) -> ITM_NODE (ITM_TAG_CUSTOM (tag, s))
)
)