diff --git a/outils/stats-corpus/statsCorpus.pl b/outils/stats-corpus/statsCorpus.pl index 5387739..25a30a8 100755 --- a/outils/stats-corpus/statsCorpus.pl +++ b/outils/stats-corpus/statsCorpus.pl @@ -23,8 +23,8 @@ " $substitut [ -f (csv|json|tsv) ] [ -x (normal|lodex) ] \n". " $programme -h \n"; -my $version = "3.4.1"; -my $dateModif = "27 Septembre 2018"; +my $version = "3.4.2"; +my $dateModif = "1 Octobre 2018"; # Variables pour les options my $aide = 0; @@ -795,63 +795,59 @@ while (my $niv1 = shift @niv1) { if ( ref($niv1) eq 'ARRAY' ) { my @niv2 = @{$niv1}; - if ( $champ =~ /^Catégories WoS/o and $xtended eq 'lodex' ) { - foreach my $item (@niv2) { - if ( $item !~ /^[-+]? ?\d+(\.\d+)?\z/o ) { - $item = '"' . $item . '"'; - } - } - my $generique = shift @niv2; - while (my $specifique = shift @niv2) { - print OUT " {\n"; - print OUT " \"Nom\": $specifique,\n"; - print OUT " \"Classification\": \[\n"; - print OUT " $generique\n"; - print OUT " \]\n"; - print OUT " }"; - print OUT "," if @niv1 or @niv2; - print OUT "\n"; - } - next; - } - elsif ( $champ =~ /^Catégories /o and $xtended eq 'lodex') { - foreach my $item (@niv2) { - if ( $item !~ /^[-+]? ?\d+(\.\d+)?\z/o ) { - $item = '"' . $item . '"'; - } - } - my $specifique = pop @niv2; - print OUT " {\n"; - print OUT " \"Nom\": $specifique,\n"; - print OUT " \"Classification\": \[\n"; - while (my $generique = shift @niv2) { - print OUT " $generique", @niv2 ? "," : "", "\n"; - } - print OUT " \]\n"; - print OUT " }", @niv1 ? "," : "", "\n"; - next; - } + if ( $champ =~ /^Catégories WoS/o and $xtended eq 'lodex' ) { + foreach my $item (@niv2) { + $item =~ s/\\/\\\\/go; + $item =~ s/"/\\"/go; + $item = '"' . $item . '"'; + } + my $generique = shift @niv2; + while (my $specifique = shift @niv2) { + print OUT " {\n"; + print OUT " \"Nom\": $specifique,\n"; + print OUT " \"Classification\": \[\n"; + print OUT " $generique\n"; + print OUT " \]\n"; + print OUT " }"; + print OUT "," if @niv1 or @niv2; + print OUT "\n"; + } + next; + } + elsif ( $champ =~ /^Catégories /o and $xtended eq 'lodex') { + foreach my $item (@niv2) { + $item =~ s/\\/\\\\/go; + $item =~ s/"/\\"/go; + $item = '"' . $item . '"'; + } + my $specifique = pop @niv2; + print OUT " {\n"; + print OUT " \"Nom\": $specifique,\n"; + print OUT " \"Classification\": \[\n"; + while (my $generique = shift @niv2) { + print OUT " $generique", @niv2 ? "," : "", "\n"; + } + print OUT " \]\n"; + print OUT " }", @niv1 ? "," : "", "\n"; + next; + } if ( $#niv2 < 0 ) { print OUT " []", $#niv1 > -1 ? "," : "", "\n"; next; } print OUT " [\n"; while(my $niv2 = shift @niv2) { - if ( $niv2 =~ /^[-+]? ?\d+(\.\d+)?\z/o ) { - print OUT " $niv2"; - } - else { - print OUT " \"$niv2\""; - } + $niv2 =~ s/\\/\\\\/go; + $niv2 =~ s/"/\\"/go; + print OUT " \"$niv2\""; print OUT "," if $#niv2 > -1; print OUT "\n"; } print OUT " ]"; } - elsif ( $niv1 =~ /^[-+]? ?\d+(\.\d+)?\z/o ) { - print OUT " $niv1"; - } else { + $niv1 =~ s/\\/\\\\/go; + $niv1 =~ s/"/\\"/go; print OUT " \"$niv1\""; } print OUT "," if $#niv1 > -1; @@ -866,6 +862,8 @@ print OUT " \"$champ\": $valeur"; } else { + $valeur =~ s/\\/\\\\/go; + $valeur =~ s/"/\\"/go; print OUT " \"$champ\": \"$valeur\""; } print OUT "," if $nb;