support des attributs ordonnés
This commit is contained in:
parent
00088b30b2
commit
75f21b5a52
|
@ -505,41 +505,6 @@ END {
|
||||||
function tl_ensureval() {
|
function tl_ensureval() {
|
||||||
local attr="$1"; shift
|
local attr="$1"; shift
|
||||||
local script="$(def_match_attr "$attr")
|
local script="$(def_match_attr "$attr")
|
||||||
function resetp() {
|
|
||||||
ensure = 0
|
|
||||||
found = 0
|
|
||||||
}
|
|
||||||
function get_attrvalue(line) {
|
|
||||||
sub(/^[^:]+::?[ ]+/, \"\", line)
|
|
||||||
return line
|
|
||||||
}
|
|
||||||
function add_to_found_values(value) {
|
|
||||||
found_values[found_count] = value
|
|
||||||
found_count++
|
|
||||||
}
|
|
||||||
function in_found_values(value, i) {
|
|
||||||
for (i = 0; i < found_count; i++) {
|
|
||||||
if (found_values[i] == value) {
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
function print_ensure_values() {
|
|
||||||
for (i = 0; i < ensure_count; i++) {
|
|
||||||
print attr \" \" ensure_values[i]
|
|
||||||
}
|
|
||||||
resetp()
|
|
||||||
}
|
|
||||||
function print_missing_values( value) {
|
|
||||||
for (i = 0; i < ensure_count; i++) {
|
|
||||||
value = ensure_values[i]
|
|
||||||
if (!in_found_values(value)) {
|
|
||||||
print attr \" \" value
|
|
||||||
}
|
|
||||||
}
|
|
||||||
resetp()
|
|
||||||
}
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
resetp()
|
resetp()
|
||||||
attr = fix_attr($(quoted_awk "$attr"))
|
attr = fix_attr($(quoted_awk "$attr"))
|
||||||
|
@ -556,6 +521,55 @@ BEGIN {
|
||||||
found_values[0] = 0
|
found_values[0] = 0
|
||||||
delete found_values
|
delete found_values
|
||||||
}"'
|
}"'
|
||||||
|
function resetp() {
|
||||||
|
ensure = 0
|
||||||
|
found = 0
|
||||||
|
}
|
||||||
|
function get_attrvalue(line) {
|
||||||
|
sub(/^[^:]+::?[ ]+/, "", line)
|
||||||
|
return line
|
||||||
|
}
|
||||||
|
function add_to_found_values(value) {
|
||||||
|
found_values[found_count] = value
|
||||||
|
found_count++
|
||||||
|
}
|
||||||
|
function in_found_values(value, i, found_value) {
|
||||||
|
if (value ~ /^{}/) {
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
for (i = 0; i < found_count; i++) {
|
||||||
|
found_value = found_values[i]
|
||||||
|
sub(/^{[0-9]+}/, "", found_value)
|
||||||
|
if (found_value == value) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < found_count; i++) {
|
||||||
|
if (found_values[i] == value) {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
function print_ensure_values() {
|
||||||
|
for (i = 0; i < ensure_count; i++) {
|
||||||
|
value = ensure_values[i]
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
print attr " " value
|
||||||
|
}
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
|
function print_missing_values( value) {
|
||||||
|
for (i = 0; i < ensure_count; i++) {
|
||||||
|
value = ensure_values[i]
|
||||||
|
if (!in_found_values(value)) {
|
||||||
|
sub(/^{}/, "", value)
|
||||||
|
print attr " " value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resetp()
|
||||||
|
}
|
||||||
/^dn:/ {
|
/^dn:/ {
|
||||||
ensure = 1
|
ensure = 1
|
||||||
}
|
}
|
||||||
|
@ -1056,6 +1070,12 @@ ev, ensureval ATTR VALUES...
|
||||||
déjà. Par exemple, pour s'assurer que l'attribut ATTR a les valeurs V0 et
|
déjà. Par exemple, pour s'assurer que l'attribut ATTR a les valeurs V0 et
|
||||||
V1, on ferait:
|
V1, on ferait:
|
||||||
ensureval ATTR V0 V1 // modaddval
|
ensureval ATTR V0 V1 // modaddval
|
||||||
|
Certains attributs sont ordonnés. Leurs valeurs sont étiquettées avec leur
|
||||||
|
index, e.g {2}value. Si l'on ne veut pas faire de correspondance exacte,
|
||||||
|
c'est à dire tester uniquement la présence d'une valeur indépendamment de
|
||||||
|
son index, il faut utiliser la syntaxe {}value, e.g:
|
||||||
|
ensureval ATTR {}value // modaddval
|
||||||
|
S'il faut ajouter les valeurs, elle sont mentionnées sans le préfixe {}
|
||||||
sed ARGS
|
sed ARGS
|
||||||
awk ARGS
|
awk ARGS
|
||||||
grep ARGS
|
grep ARGS
|
||||||
|
|
Loading…
Reference in New Issue