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 Cette fonction assume que les indices du tableau commencent à 1 et n'ont pas
de \"trous\". Si i==0, cette fonction est un NOP. 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 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 indexes des valeurs sont trouvées avec key_index(), puis les valeurs sont
supprimées avec array_deli() 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) array_extend(dest, src)
Ajouter les éléments de src dans dest, en commençant avec l'index 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 if (field >= 1 && field <= nbfields) return field
else return 0 else return 0
} }
field = tolower(field)
for (i = 1; i <= nbfields; i++) { for (i = 1; i <= nbfields; i++) {
if (tolower(ORIGHEADERS[i]) == tolower(field)) { if (field == tolower(ORIGHEADERS[i])) {
return i return i
} }
} }
@ -581,14 +584,14 @@ function build_skipfs(keepfields, skipfields, skipfs, addfs, keepfs, kee
} }
split(skipfields, tmpfields, /,/) split(skipfields, tmpfields, /,/)
for (i in tmpfields) { for (i in tmpfields) {
array_del(keepfs, tmpfields[i]) array_del(keepfs, tmpfields[i], 1)
} }
keepfs_count = length(keepfs) keepfs_count = length(keepfs)
# puis construire la liste des champs à supprimer dans skipfs # puis construire la liste des champs à supprimer dans skipfs
headers_count = length(HEADERS) headers_count = length(HEADERS)
for (i = 1; i <= headers_count; i++) { for (i = 1; i <= headers_count; i++) {
field = HEADERS[i] field = HEADERS[i]
if (!in_array(field, keepfs)) { if (!in_array(field, keepfs, 1)) {
fieldi = geth(field) fieldi = geth(field)
if (i != 0) array_add(skipfs, fieldi) 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 # puis construire la liste des champs à ajouter dans addfs
for (i = 1; i <= keepfs_count; i++) { for (i = 1; i <= keepfs_count; i++) {
field = keepfs[i] field = keepfs[i]
if (!in_array(field, HEADERS)) { if (!in_array(field, HEADERS, 1)) {
array_add(addfs, field) array_add(addfs, field)
} }
} }

View File

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