--- # paragrapher un texte contenant des <p> mal fermes
    #

paragrapher-init-trim:
    # trim
    type: all
    is_callback: y
    replace: trim

toujours-paragrapher:
    # Ajouter un <p> au debut pour assurer d'avoir toujours un paragraphe
    # annuler cette regle pour revenir a l'ancien comportement de SPIP
    type: all
    replace: "<p>$0"

toujours-ouvrir:
    # toujours ouvrir un parapgraphe derriere une balise bloc fermante
    if_str: "</"
    match: ",</(?:address|applet|article|aside|blockquote|button|center|d[ltd]|div|fieldset|fig(ure|caption)|footer|form|h[1-6r]|hgroup|head|header|iframe|li|map|marquee|nav|noscript|object|ol|pre|section|t(able|[rdh]|body|foot|extarea)|ul|script|style)[^>]*>\s*?,UimsS"
    replace: "$0<p>"

liens-block:
    # en HTML5, les <a> peuvent contenir une balise block
    if_str: "</a>"
    type: preg
    match: ",(<a\s[^>]*>)(.*)(</a>),Uims"
    is_callback: Y
    replace: detecter_liens_blocs

li-ouvrir:
    # toujours ouvrir un parapgraphe quand on ouvre une liste ?
    # desactive
    if_str: "<li"
    match: ",<li[^>]*>\s*?,UimsS"
    replace: "$0<p>"
    disabled: Y

ajouter-stop-p1:
    # Ajouter un espace aux <p> et un "STOP P"
    # transformer aussi les </p> existants en <p>, nettoyes ensuite
    if_str: "<p>"
    #if_match: ",<p\b,iS"
    match: "/^.*$/msS"
    replace: "<p>$0<STOP P>"

ajouter-stop-p2:
    if_str: "<"
    #if_match: ",<p\b,iS"
    match: ",</?p\b\s?(.*?)>,iS"
    replace: "<STOP P><p $1>"

fermer-para-preg:
    # Fermer les paragraphes
    # y compris sur "STOP P"
    # en reperant les balises blocs XHTML
    # en pure wheel : le \s* agit comme trim() et remplace reduire-blancs2
    match: ",<p (.*)\s*<(/?)(stop p|address|applet|article|aside|blockquote|button|center|d[ltd]|div|fieldset|fig(ure|caption)|footer|form|h[1-6r]|hgroup|head|header|iframe|li|map|marquee|nav|noscript|object|ol|pre|section|t(able|[rdh]|body|foot|extarea)|ul|script|style)\b,UimsS"
    replace: "<p $1</p>\n<$2$3"
    disabled: Y

fermer-para-mano:
    # Fermer les paragraphes
    # en reperant les balises blocs XHTML
    # optimise a la mano
    type: all
    is_callback: Y
    replace: fermer_para_mano


supprimer-stop-p:
    # Supprimer les marqueurs "STOP P"
    match: "<STOP P>"
    replace: ''
    type: str

## inutile
#reduire-blancs1:
#    # Reduire les blancs dans les <p> 1/2
#    match: ",(<p [^>]*>)\s*,UiuS"
#    replace: "$1"
#    disabled: Y

suppr-para-presque-vides:
    # Supprimer les <p xx></xx></p> (ne contiennent qu'une balise ouvrante/fermante)
    match: ",<p [^>]*>(<(?:/\w+|\w+[^>]*[^/])>)</p>,S"
    replace: "$1"

suppr-para-vides:
    # Supprimer les <p xx></p> vides
    match: ",<p [^>]*>\s*</p>\s*,S"
    replace: ""

## desormais implemente sous forme du \s* de fermer-para
#reduire-blancs2:
#    # Reduire les blancs dans les <p> 2/2
#    match: ",\s*</p\b,UiuS"
#    replace: "</p"
#    disabled: Y

renommer-para-normaux:
    # Renommer les paragraphes normaux
    match: ["\n<p >", "<p >"]
    replace: ["\n<p>", "\n<p>"]
    type: str
