[PerlWikiBot] SF.net SVN: perlwikibot:[59] trunk/no-interwiki/prepare_noiw_list.pl
Status: Pre-Alpha
Brought to you by:
rotemliss
From: <am...@us...> - 2008-08-03 14:38:13
|
Revision: 59 http://perlwikibot.svn.sourceforge.net/perlwikibot/?rev=59&view=rev Author: amire80 Date: 2008-08-03 14:38:23 +0000 (Sun, 03 Aug 2008) Log Message: ----------- Added print_multi_links_by_local(). Modified Paths: -------------- trunk/no-interwiki/prepare_noiw_list.pl Modified: trunk/no-interwiki/prepare_noiw_list.pl =================================================================== --- trunk/no-interwiki/prepare_noiw_list.pl 2008-08-03 13:30:21 UTC (rev 58) +++ trunk/no-interwiki/prepare_noiw_list.pl 2008-08-03 14:38:23 UTC (rev 59) @@ -337,9 +337,17 @@ create_no_iw_pages(); INFO(q{}); + +# my @found_lang_codes = sort keys %found_links; +# INFO("found lang_codes: @found_lang_codes"); + say 'looking for multi links'; my $begin_multi_links_time = time; -print_multi_links_by_foreign(); + +# print_multi_links_by_foreign(); + +print_multi_links_by_local(); + my $total_multi_links_time = time - $begin_multi_links_time; say "total multi links time: $total_multi_links_time"; @@ -1151,14 +1159,20 @@ sub print_multi_links_by_foreign { LANG_CODE: foreach my $lang_code (sort keys %found_links) { - my $lang_fn = "$lang_code.multi_links.txt"; my @foreign_articles = sort keys %{ $found_links{$lang_code} }; FOREIGN_ARTICLE: foreach my $foreign_article (@foreign_articles) { my @local_articles = keys %{ $found_links{$lang_code}->{$foreign_article} }; if (scalar @local_articles > 1) { - handle_multi_link($lang_code, $foreign_article); + my $links = join q{ | }, sort map { make_link($_) } + keys %{ $found_links{$lang_code}->{$foreign_article} }; + + my $foreign_title = + make_link($lang_code + . $MW_SYNTAX{namespace_sep} + . $foreign_article); + INFO("* '''$foreign_title''' - $links\n"); } } } @@ -1166,17 +1180,68 @@ return; } -sub handle_multi_link { - my ($lang_code, $foreign_article) = @_; - my $links = join q{ | }, sort map { make_link($_) } - keys %{ $found_links{$lang_code}->{$foreign_article} }; +sub print_multi_links_by_local { + my %local_multi_links; + LANG_CODE: + foreach my $lang_code (sort keys %found_links) { - my $foreign_title = - make_link($lang_code . $MW_SYNTAX{namespace_sep} . $foreign_article); - INFO("* '''$foreign_title''' - $links\n"); + # my @foreign_articles = map { make_link($lang_code . $MW_SYNTAX{namespace_sep} . $_) } sort keys %{ $found_links{$lang_code} }; + my @foreign_articles = sort keys %{ $found_links{$lang_code} }; + FOREIGN_ARTICLE: + foreach my $foreign_article (@foreign_articles) { + my @local_articles = + keys %{ $found_links{$lang_code}->{$foreign_article} }; + + if (scalar @local_articles > 1) { + add_local_multi( + \%local_multi_links, + make_link( + $lang_code + . $MW_SYNTAX{namespace_sep} + . $foreign_article + ), + @local_articles + ); + } + } + } + + foreach my $local_multi_article (sort keys %local_multi_links) { + INFO('* ' . mw_bold(make_link($local_multi_article))); + foreach my $other_local_article ( + sort keys %{ $local_multi_links{$local_multi_article} }) + { + INFO('** ' . make_link($other_local_article)); + my $foreign_articles = join_links( + $local_multi_links{$local_multi_article} + ->{$other_local_article}, + 0 + ); + INFO("*** $foreign_articles"); + } + } + return; } +sub add_local_multi { + my ( + $local_multi_links_ref, $foreign_link, + $first_local_article, @other_local_articles + ) = @_; + + $local_multi_links_ref->{$first_local_article} //= {}; + + foreach my $other_local_article (@other_local_articles) { + $local_multi_links_ref->{$first_local_article} + ->{$other_local_article} //= []; + push @{ $local_multi_links_ref->{$first_local_article} + ->{$other_local_article} }, $foreign_link; + } + + return; +} + sub join_links { my ($links_ref, $line_end) = @_; $line_end //= 1; # / This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |