##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Fonctions de base: protection de valeurs chaine
##@cooked nocomments
uprovide base.quote
urequire base.core

function _qawk() {
# Dans la chaine $*, remplacer \ par \\ et " par \". Ceci est utile pour quoter
# des valeur à insérer dans un script awk
    local s="$*"
    s="${s//\\/\\\\}"
    s="${s//\"/\\\"}"
    s="${s//
/\\n}"
    recho_ "$s"
}
function qawk() {
# Dans la chaine $*, remplacer \ par \\ et " par \" et afficher la chaine
# entourée de guillemets. Ceci est utile pour quoter des valeur à insérer dans
# un script awk
    echo -n \"
    _qawk "$@"
    echo \"
}
function qseds() {
# Quoter la chaine $*, qui doit être utilisée comme chaine de recherche ou de
# remplacement de grep, sed ou awk
    local s="$*"
    s="${s//\\/\\\\}"
    s="${s//\//\\/}"
    s="${s//
/\\n}"
    recho "$s"
}
function _qform() {
# Dans la chaine $*, remplacer '%' par '%25', '+' par '%2B', '&' par '%26', '='
# par '%3D', ' ' par '+'
    local s="$*"
    s="${s//\%/%25}"
    s="${s//+/%2B}"
    s="${s//&/%26}"
    s="${s//=/%3D}"
    s="${s// /+}"
    recho_ "$s"
}
function qform() {
# Dans la chaine $* qui est de la forme "name=value", remplacer dans name et
# dans value '%' par '%25', '+' par '%2B', '&' par '%26', '=' par '%3D', ' ' par
# '+'
    local s="$*"
    if [[ "$s" == *=* ]]; then
        _qform "${s%%=*}"
        echo -n =
        _qform "${s#*=}"
        echo
    else
        _qform "$s"
        echo
    fi
}
function _qsql() {
# Dans la chaine $*, remplacer ' par ''. Ceci est utile pour quoter une valeur à
# insérer dans une chaine d'une requête SQL.
    local q="'" qq="''"
    echo "${*//$q/$qq}"
}
function qsql() {
# Dans la chaine $*, remplacer ' par '' et afficher la chaine entourée de
# quotes. Ceci est utile pour quoter des valeurs à insérer dans une requête SQL.
    local q="'" qq="''"
    echo "'${*//$q/$qq}'"
}
