array_del supporte ignoreCase

bug dans le filtrage des champs
This commit is contained in:
Jephté Clain 2014-08-18 11:25:57 +04:00
parent c39b145391
commit caa47fd12f
2 changed files with 10 additions and 7 deletions

View File

@ -96,10 +96,12 @@ array_deli(dest, i)
Cette fonction assume que les indices du tableau commencent à 1 et n'ont pas
de \"trous\". Si i==0, cette fonction est un NOP.
array_del(dest, value)
array_del(dest, value[, ignoreCase])
Supprimer *tous* les éléments du tableau dest dont la valeur est value. Les
indexes des valeurs sont trouvées avec key_index(), puis les valeurs sont
supprimées avec array_deli()
ignoreCase permet de spécifier que la recherche de la valeur se fait en
ignorant la casse.
array_extend(dest, src)
Ajouter les éléments de src dans dest, en commençant avec l'index
@ -407,8 +409,9 @@ function ogeth(field, nbfields, i) {
if (field >= 1 && field <= nbfields) return field
else return 0
}
field = tolower(field)
for (i = 1; i <= nbfields; i++) {
if (tolower(ORIGHEADERS[i]) == tolower(field)) {
if (field == tolower(ORIGHEADERS[i])) {
return i
}
}
@ -581,14 +584,14 @@ function build_skipfs(keepfields, skipfields, skipfs, addfs, keepfs, kee
}
split(skipfields, tmpfields, /,/)
for (i in tmpfields) {
array_del(keepfs, tmpfields[i])
array_del(keepfs, tmpfields[i], 1)
}
keepfs_count = length(keepfs)
# puis construire la liste des champs à supprimer dans skipfs
headers_count = length(HEADERS)
for (i = 1; i <= headers_count; i++) {
field = HEADERS[i]
if (!in_array(field, keepfs)) {
if (!in_array(field, keepfs, 1)) {
fieldi = geth(field)
if (i != 0) array_add(skipfs, fieldi)
}
@ -597,7 +600,7 @@ function build_skipfs(keepfields, skipfields, skipfs, addfs, keepfs, kee
# puis construire la liste des champs à ajouter dans addfs
for (i = 1; i <= keepfs_count; i++) {
field = keepfs[i]
if (!in_array(field, HEADERS)) {
if (!in_array(field, HEADERS, 1)) {
array_add(addfs, field)
}
}

View File

@ -2130,9 +2130,9 @@ function array_deli(dest, i, l) {
}
delete dest[l]
}
function array_del(dest, value, i) {
function array_del(dest, value, ignoreCase, i) {
do {
i = key_index(value, dest)
i = key_index(value, dest, ignoreCase)
if (i != 0) array_deli(dest, i)
} while (i != 0)
}