Szerkesztő:GumiBot/code6

A Wikipédiából, a szabad enciklopédiából

A(z) 6. kódú hibát javító kódrészlet[szerkesztés]

sub fix_6 {		# DEFAULTSORT with special letters
    my ($error_code, $title_str, $text_str) = @_;

    my @defsorts;
    my $count = 0;
    while ($text_str =~ m/^(({{DEFAULTSORT:[^}]*[^~a-z }-][^}]*}}) *)$/gmi) {
        my ($pos, $defsort, $len) =
            (pos($text_str), $2, length($&));
        $pos -= $len;
        my $replacement = $defsort;
        $replacement =~ tr [\x{00c1}\x{00c7}\x{0106}\x{010c}\x{00c9}\x{0114}\x{011a}\x{00cd}\x{0142}\x{00d1}\x{00d3}\x{0160}\x{00da}\x{016e}\x{00dd}]
                            [ACCCEEEILNOSUUY];

        $replacement =~ tr [\x{00e1}\x{00e7}\x{0107}\x{010d}\x{00e9}\x{0115}\x{011b}\x{00ed}\x{0141}\x{00f1}\x{00f3}\x{0161}\x{00fa}\x{016f}\x{00fd}]
                            [accceeeilnosuuy];

        $replacement =~ s/[\x{00c4}]/A~/g;
        $replacement =~ s/[\x{00d0}]/D~/g;
        $replacement =~ s/[\x{00cb}]/E~/g;
        $replacement =~ s/[\x{00cf}]/I~/g;
        $replacement =~ s/[\x{00d4}\x{0150}]/O~/g;
        $replacement =~ s/[\x{00d6}\x{0150}]/O~/g;
        $replacement =~ s/[\x{00dc}\x{0170}]/U~/g;
        $replacement =~ s/[\x{00e4}]/a~/g;
        $replacement =~ s/[\x{00f0}]/d~/g;
        $replacement =~ s/[\x{00eb}]/e~/g;
        $replacement =~ s/[\x{00ef}]/i~/g;
        $replacement =~ s/[\x{00f4}\x{0151}]/o~/g;
        $replacement =~ s/[\x{00f6}\x{0151}]/o~/g;
        $replacement =~ s/[\x{00fc}\x{0171}]/u~/g;
        $replacement =~ s/[+]//g;
        next if $replacement eq $defsort;
        unshift(@defsorts, {
            'pos'       => $pos,
            len         => $len,
            defsort     => $defsort,
            replacement => $replacement,
        });
        $count++;
    }
    $count or return ('Nincs ekezetes karakter defaultsortban');
    foreach (@defsorts) {
        substr($text_str, $_->{pos}, $_->{len}) = $_->{replacement};
    }

    my $summary_str = $latin2->decode(
        "Bot: $count DEFAULTSORT-ból törölve az ékezetes betűk. (Hibakód: $error_code)"
    );
    return ($summary_str, $count, $text_str);
}