# Creates persistent ParseFunc setup for non-HTML content.
lib.parseFunc {
    makelinks = 1
    makelinks {
        http {
            keep = {$styles.content.links.keep}
            extTarget = {$styles.content.links.extTarget}
        }
        mailto {
            keep = path
        }
    }
    tags {
        pre = USER
        pre {
            userFunc = DanielSiepmann\DsSite\UserFunction\CodeHighlighting->preTag
        }
        a = TEXT
        a {
            current = 1
            typolink {
                parameter.data = parameters:href
                title.data = parameters:title
                ATagParams.data = parameters:allParams
                target.data = parameters:target
                extTarget = {$styles.content.links.extTarget}
                extTarget.override.data = parameters:target
            }
        }
    }
    allowTags = a, abbr, acronym, address, b, bdo, big, blockquote, br, caption, center, cite, code, dd, del, dfn, dl, div, dt, em, h3, h4, h5, h6, hr, i, img, ins, kbd, label, li, link, ol, p, pre, q, s, samp, sdfield, small, span, strike, strong, sub, sup, title, tt, u, ul, var
    denyTags = *
    sword = <span class="ce-sword">|</span>
    constants = 1
    nonTypoTagStdWrap {
        HTMLparser = 1
        HTMLparser {
            keepNonMatchedTags = 1
            htmlSpecialChars = 2
        }
    }
}

# Creates persistent ParseFunc setup for RTE content (which is mainly HTML) based on the "default" transformation.
lib.parseFunc_RTE < lib.parseFunc
lib.parseFunc_RTE {
    # Processing <ol>, <ul> and <table> blocks separately
    externalBlocks = blockquote, div, dd, dl, ol, ul, pre, p
    externalBlocks {
        ol {
            stripNL = 1
            stdWrap.parseFunc = < lib.parseFunc
        }
        ul < .ol
        pre {
            stripNl = 1
            stdWrap.parseFunc < lib.parseFunc
        }
        div {
            stripNL = 1
            callRecursive = 1
        }
        blockquote < .div
        dl < .div
        dd < .div
        p < .div
    }
    plainTextStdWrap {
        replacement {
            10 {
                search = #\r\n\r\n#
                replace {
                    cObject = COA
                    cObject {
                        1 = TEXT
                        1.char = 13
                        2 = TEXT
                        2.char = 10
                    }
                }
                useRegExp = 1
            }
        }
    }
    nonTypoTagStdWrap {
        encapsLines {
            encapsTagList = p,h1,h2,h3,h4,h5,h6,hr,dt
            remapTag.DIV = P
            nonWrappedTag = P
            innerStdWrap_all.ifBlank = &nbsp;
        }
        HTMLparser = 1
        HTMLparser {
            keepNonMatchedTags = 1
            htmlSpecialChars = 2
        }
    }
}