if not modules then modules = { } end modules ['lpdf-tag-imp-crap'] = {
    version   = 1.001,
    comment   = "companion to lpdf-tag.mkiv",
    author    = "Hans Hagen & Mikael Sundqvist",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files"
}

-- You can enable this at your own risk by saying:
--
-- \enabledirectives[backend.usetags=crap]
--
-- which will try to satisfy the sloppy mapping in pdf. You can also use this file to
-- roll out your own variant. We also use this file for testing so there coule be subtle
-- changes over time.

return {
    name      = "old school pdf tagging",
    version   = "1.00",
    comment   = "This is our crappy level two mapping, sort of an example.",
    author    = "Hans Hagen",
    copyright = "ConTeXt development team",
    mapping   = {

        -- Part      : no structure
        -- Sect      : structure
        -- NonStruct : skip level
        -- Sub       : line with lbl numbers

        document           = { pua = "ua1", pdf = "Document"   },
        documentpart       = { pua = "ua1", pdf = "NonStruct"  },

        division           = { pua = "ua1", pdf = "Part"       },
        paragraph          = { pua = "ua1", pdf = "P"          },
        subparagraph       = { pua = "ua1", pdf = "P"          },
        p                  = { pua = "ua1", pdf = "P"          },
        highlight          = { pua = "ua1", pdf = "Span"       },
        ornament           = { pua = "ua1", pdf = "Span"       },
        textdisplay        = { pua = "ua1", pdf = "Div"        },
        placeholder        = { pua = "ua1", pdf = "Span"       },

        ["break"]          = { pua = "ua1", pdf = "Div"        },

        construct          = { pua = "ua1", pdf = "Span"       },
        constructleft      = { pua = "ua1", pdf = "Span"       },
        constructright     = { pua = "ua1", pdf = "Span"       },
        constructcontent   = { pua = "ua1", pdf = "NonStruct"  },

        sectionblock       = { pua = "ua1", pdf = "Part"       },

        section            = { pua = "ua1", pdf = "Sect"       }, -- Part
        sectioncaption     = { pua = "ua1", pdf = "NonStruct"  },
        sectiontitle       = { pua = "ua1", pdf = "H"          },
        sectionnumber      = { pua = "ua1", pdf = "Lbl"        },
        sectioncontent     = { pua = "ua1", pdf = "NonStruct"  },

        itemgroup          = { pua = "ua1", pdf = "L"          },
        item               = { pua = "ua1", pdf = "LI"         },
        itemtag            = { pua = "ua1", pdf = "Lbl"        },
        itemcontent        = { pua = "ua1", pdf = "LBody"      },
        itemhead           = { pua = "ua1", pdf = "NonStruct"  },
        itembody           = { pua = "ua1", pdf = "NonStruct"  },

        items              = { pua = "ua1", pdf = "Div"        },
        itemsymbols        = { pua = "ua1", pdf = "Div"        },
        itemsymbol         = { pua = "ua1", pdf = "Span"       },
        itemtexts          = { pua = "ua1", pdf = "Div"        },
        itemtext           = { pua = "ua1", pdf = "Span"       },

        description        = { pua = "ua1", pdf = "Sect"       },
        descriptiontag     = { pua = "ua1", pdf = "Lbl"        },
        descriptioncontent = { pua = "ua1", pdf = "NonStruct"  },
        descriptionsymbol  = { pua = "ua1", pdf = "Lbl"        },

        verbatimblock      = { pua = "ua1", pdf = "Part"       },
        verbatimlines      = { pua = "ua1", pdf = "Part"       },
        verbatimline       = { pua = "ua1", pdf = "Code"       },
        verbatim           = { pua = "ua1", pdf = "Code"       },

        lines              = { pua = "ua1", pdf = "Part"       },
        line               = { pua = "ua1", pdf = "Code"       },
        linenumber         = { pua = "ua1", pdf = "Span"       },

        synonym            = { pua = "ua1", pdf = "Span"       },
        sorting            = { pua = "ua1", pdf = "Span"       },

        register           = { pua = "ua1", pdf = "Part"       },
        registerlocation   = { pua = "ua1", pdf = "Span"       },
        registersection    = { pua = "ua1", pdf = "Part"       },
        registertag        = { pua = "ua1", pdf = "Span"       },
        registerentries    = { pua = "ua1", pdf = "Part"       },
        registerentry      = { pua = "ua1", pdf = "Part"       },
        registercontent    = { pua = "ua1", pdf = "Span"       },
        registersee        = { pua = "ua1", pdf = "Span"       },
        registerpages      = { pua = "ua1", pdf = "Span"       },
        registerpage       = { pua = "ua1", pdf = "Span"       },
        registerseparator  = { pua = "ua1", pdf = "Span"       },
        registerpagerange  = { pua = "ua1", pdf = "Span"       },

        table              = { pua = "ua1", pdf = "Table"      },
        tablerow           = { pua = "ua1", pdf = "TR"         },
        tablecell          = { pua = "ua1", pdf = "TD"         },
        tableheadcell      = { pua = "ua1", pdf = "TH"         },
        tablehead          = { pua = "ua1", pdf = "THEAD"      },
        tablebody          = { pua = "ua1", pdf = "TBODY"      },
        tablefoot          = { pua = "ua1", pdf = "TFOOT"      },

        tabulate           = { pua = "ua1", pdf = "Table"      },
        tabulaterow        = { pua = "ua1", pdf = "TR"         },
        tabulatecell       = { pua = "ua1", pdf = "TD"         },
        tabulateheadcell   = { pua = "ua1", pdf = "TH"         },
        tabulatehead       = { pua = "ua1", pdf = "THEAD"      },
        tabulatebody       = { pua = "ua1", pdf = "TBODY"      },
        tabulatefoot       = { pua = "ua1", pdf = "TFOOT"      },

        list               = { pua = "ua1", pdf = "TOC"        },
        listitem           = { pua = "ua1", pdf = "TOCI"       },
        listtag            = { pua = "ua1", pdf = "Lbl"        },
        listcontent        = { pua = "ua1", pdf = "NonStruct"  },
        listdata           = { pua = "ua1", pdf = "NonStruct"  },
        listpage           = { pua = "ua1", pdf = "Lbl"        },
        listtext           = { pua = "ua1", pdf = "Span"       },

        delimitedblock     = { pua = "ua1", pdf = "BlockQuote" },
        delimited          = { pua = "ua1", pdf = "Quote"      },
        delimitedcontent   = { pua = "ua1", pdf = "NonStruct"  },
        delimitedsymbol    = { pua = "ua1", pdf = "Span"       },

        subsentence        = { pua = "ua1", pdf = "Span"       },
        subsentencecontent = { pua = "ua1", pdf = "Span"       },
        subsentencesymbol  = { pua = "ua1", pdf = "Span"       },

        label              = { pua = "ua1", pdf = "Span"       },
        number             = { pua = "ua1", pdf = "Span"       },

        float              = { pua = "ua1", pdf = "Part"       },
        floatcaption       = { pua = "ua1", pdf = "Caption"    },
        floatlabel         = { pua = "ua1", pdf = "Span"       },
        floatnumber        = { pua = "ua1", pdf = "Span"       },
        floattext          = { pua = "ua1", pdf = "Span"       },
        floatcontent       = { pua = "ua1", pdf = "NonStruct"  },

        image              = { pua = "ua1", pdf = "NonStruct"  },
        mpgraphic          = { pua = "ua1", pdf = "NonStruct"  },

        formulaset         = { pua = "ua1", pdf = "Part"       },
        formula            = { pua = "ua1", pdf = "Part"       },
        formulacaption     = { pua = "ua1", pdf = "Span"       },
        formulalabel       = { pua = "ua1", pdf = "Span"       },
        formulanumber      = { pua = "ua1", pdf = "Span"       },
        formulacontent     = { pua = "ua1", pdf = "NonStruct"  },
        subformula         = { pua = "ua1", pdf = "Part"       },

        link               = { pua = "ua1", pdf = "Link"       },
        reference          = { pua = "ua1", pdf = "NonStruct"  },

        navigation         = { pua = "ua1", pdf = "NonStruct"  },
        navigationbutton   = { pua = "ua1", pdf = "NonStruct"  },
        navigationmenu     = { pua = "ua1", pdf = "NonStruct"  },
        navigationmenuitem = { pua = "ua1", pdf = "NonStruct"  },
        navigationaction   = { pua = "ua1", pdf = "NonStruct"  },
        navigationpage     = { pua = "ua1", pdf = "NonStruct"  },

        margintextblock    = { pua = "ua1", pdf = "Aside"      },
        margintext         = { pua = "ua1", pdf = "NonStruct"  },
        marginanchor       = { pua = "ua1", pdf = "Span"       },

        linetext           = { pua = "ua1", pdf = "NonStruct"  },

        -- no math here

        ignore             = { pua = "ua1", pdf = "NonStruct"  },
        private            = { pua = "ua1", pdf = "NonStruct"  },
        metadata           = { pua = "ua1", pdf = "Part"       },
        metavariable       = { pua = "ua1", pdf = "Span"       },

        mid                = { pua = "ua1", pdf = "Span"       },
        sub                = { pua = "ua1", pdf = "Span"       },
        sup                = { pua = "ua1", pdf = "Span"       },
        subsup             = { pua = "ua1", pdf = "Span"       },

        combination        = { pua = "ua1", pdf = "Table"      },
        combinationpair    = { pua = "ua1", pdf = "TR"         },
        combinationcontent = { pua = "ua1", pdf = "TD"         },
        combinationcaption = { pua = "ua1", pdf = "TD"         },

        publications       = { pua = "ua1", pdf = "Part"       },
        publication        = { pua = "ua1", pdf = "NonStruct"  },
        pubfld             = { pua = "ua1", pdf = "Span"       },

        citation           = { pua = "ua1", pdf = "Span"       },
        cite               = { pua = "ua1", pdf = "Span"       },

        narrower           = { pua = "ua1", pdf = "Part"       },

        block              = { pua = "ua1", pdf = "Part"       },

        userdata           = { pua = "ua1", pdf = "Part"       },

        quantity           = { pua = "ua1", pdf = "Span"       },
        unit               = { pua = "ua1", pdf = "Span"       },

        verse              = { pua = "ua1", pdf = "Part"       },
        versetag           = { pua = "ua1", pdf = "Lbl"        },
        verseseparator     = { pua = "ua1", pdf = "Span"       },
        versecontent       = { pua = "ua1", pdf = "NonStruct"  },

    },

    -- This is a hack to get around the specifications "We can't expect an
    -- application to keep track of nested H's (but otherwise expect very complex
    -- things things to be properly dealt with)". A typical example of bugs
    -- becoming features, standards being not really standards as they get
    -- adapted, etc. That said: it is up to the user to decide what to do but
    -- don't blame us for the resulting less optimal structure.

    -- Because we don't want to spoil the otherwise rather clean structure in
    -- ConTeXt, this kicks in very late in the backend. We might extend this
    -- hackery but there are limits to what is desired. After all, in over a
    -- decade of pdf tagging nothing significant happened (we're speaking 2024)
    -- nor proper viewer support showed up and we can anyway expect LLM's to deal
    -- with proper tags anyway some day.

    overloads = {

        -- criterium : parent    : use parent "detail"
        --             parents   : use first in parent "parents" list
        --             otherwise : look at self "detail"

        -- We need violate the proper structure by getting a Hn on the title so we
        -- have to backtrack to what we're in, thereby also denying the proper
        -- section instance. Don't ask. The plural "parents" will make sure we
        -- consult the first in the chain and not the instance that is encoded in
        -- "detail".

        sectioncaption = {
            criterium = "parents",
            mapping   = {

                part                         = { pua = "ua1", tag = "section_title_1",  pdf = "H1"  },

                chapter                      = { pua = "ua1", tag = "section_title_2",  pdf = "H2"  },
                title                        = { pua = "ua1", tag = "subject_title_2",  pdf = "H2"  },

                section                      = { pua = "ua1", tag = "section_title_3",  pdf = "H3"  },
                subject                      = { pua = "ua1", tag = "subject_title_3",  pdf = "H3"  },

                subsection                   = { pua = "ua1", tag = "section_title_4",  pdf = "H4"  },
                subsubject                   = { pua = "ua1", tag = "subject_title_4",  pdf = "H4"  },

                subsubsection                = { pua = "ua1", tag = "section_title_5",  pdf = "H5"  },
                subsubsubject                = { pua = "ua1", tag = "subject_title_5",  pdf = "H5"  },

                subsubsubsection             = { pua = "ua1", tag = "section_title_6",  pdf = "H6"  },
                subsubsubsubject             = { pua = "ua1", tag = "subject_title_6",  pdf = "H6"  },

                subsubsubsubsection          = { pua = "ua1", tag = "section_title_7",  pdf = "H7"  },
                subsubsubsubsubject          = { pua = "ua1", tag = "subject_title_7",  pdf = "H7"  },

                subsubsubsubsubsection       = { pua = "ua1", tag = "section_title_8",  pdf = "H8"  },
                subsubsubsubsubsubject       = { pua = "ua1", tag = "subject_title_8",  pdf = "H8"  },

                subsubsubsubsubsubsection    = { pua = "ua1", tag = "section_title_9",  pdf = "H9"  },
                subsubsubsubsubsubsubject    = { pua = "ua1", tag = "subject_title_9",  pdf = "H9"  },

                subsubsubsubsubsubsubsection = { pua = "ua1", tag = "section_title_10", pdf = "H10" },
                subsubsubsubsubsubsubsubject = { pua = "ua1", tag = "subject_title_10", pdf = "H10" },

            },
        },
    },

}