Rev 16933 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
11480 | schaersvoo | 1 | #!/usr/bin/perl |
6464 | bpr | 2 | ##example classes |
3 | |||
4 | use warnings; |
||
5 | use strict; |
||
18106 | georgesk | 6 | use lib '/var/lib/wims/public_html/bases/sys'; |
16933 | czzmrn | 7 | use lib "."; |
7016 | bpr | 8 | use search ('out', 'sortuniq', 'hashdomain', 'treate_accent', 'treate_dict'); |
6464 | bpr | 9 | |
10 | my $dir='../../../log/classes/'; |
||
6519 | bpr | 11 | my $dirdomain='domain'; |
6464 | bpr | 12 | ## list of all domains in domain/domain |
13 | my %ref= (); |
||
14 | my $ref=\%ref; |
||
15 | my @list=listclass(); |
||
16 | my $dirout="../class"; |
||
17 | $ref=refclass(@list); |
||
6967 | bpr | 18 | my @Key = ('supervisor','domain','level','lang','institution','description','addr','keywords','title', 'information'); |
9875 | bpr | 19 | my @Lang= ('fr','en','it','nl'); |
6464 | bpr | 20 | my %T = ('version' => 'version', |
21 | 'lang' => 'language', |
||
6959 | bpr | 22 | 'description' => 'title', |
6464 | bpr | 23 | 'supervisor' => 'author', |
6959 | bpr | 24 | 'institution' => 'description', |
6464 | bpr | 25 | 'level' => 'level', |
6967 | bpr | 26 | 'information' => 'information', |
6464 | bpr | 27 | ); |
28 | my %keywords=(); |
||
29 | |||
30 | for my $key (@Key) { |
||
31 | my $text=''; |
||
32 | for my $cl (@list) { |
||
9875 | bpr | 33 | $text .= "$cl:"; |
6464 | bpr | 34 | $text .= $ref{$cl}{$key} if ($ref{$cl}{$key}); |
35 | $text .= "\n"; |
||
36 | }; |
||
9875 | bpr | 37 | out("$dirout/$T{$key}",join("\n",sort( split("\n", $text)))) if ($T{$key}); |
6464 | bpr | 38 | } |
39 | for my $l (@Lang) { my $text=''; |
||
7016 | bpr | 40 | my %dom = treate_dict ("$dirdomain/domain.$l"); |
9875 | bpr | 41 | my $dom = \%dom; |
42 | for my $cl (@list) { |
||
43 | next if (!($ref{$cl}{'lang'} =~ /$l/)); |
||
6519 | bpr | 44 | next if (!$ref{$cl}{'keywords'}); |
45 | $ref{$cl}{'keywords'}=lc(treate_accent($ref{$cl}{'keywords'})); |
||
46 | for my $k (sortuniq(split(', *',$ref{$cl}{'keywords'}))) { |
||
47 | $k =treate_accent($k); |
||
6464 | bpr | 48 | if ($keywords{$k}) { $keywords{$k} .= " " . $cl } else { $keywords{$k} = $cl}; |
9875 | bpr | 49 | next if !($dom{$k}); |
50 | my $d=lc(treate_accent($dom{$k})); |
||
51 | if ($keywords{$d}) { $keywords{$d} .= " " . $cl } else { $keywords{$d} = $cl}; |
||
6464 | bpr | 52 | } |
53 | for my $k (split(',',$ref{$cl}{'domain'})) { |
||
54 | if ($keywords{$k}) { $keywords{$k} .= " " . $cl } else { $keywords{$k} = $cl}; |
||
6519 | bpr | 55 | next if !($dom{$k}); |
56 | my $d=lc(treate_accent($dom{$k})); |
||
57 | if ($keywords{$d}) { $keywords{$d} .= " " . $cl } else { $keywords{$d} = $cl}; |
||
58 | } |
||
6464 | bpr | 59 | } |
60 | while ( my ($key, $value) = each (%keywords) ) { |
||
6951 | bpr | 61 | my $v = join(" ", sortuniq(split(" ",$value))); |
9875 | bpr | 62 | $text .= "$key:$v\n"; |
6464 | bpr | 63 | } |
6951 | bpr | 64 | $text =~ s / +(\w+:)/ $1/g; |
9875 | bpr | 65 | out("$dirout/$l", join("\n", sortuniq(split("\n",$text)))); |
6464 | bpr | 66 | } |
67 | |||
6519 | bpr | 68 | ############################### |
9875 | bpr | 69 | sub refclass { my @L=@_; |
6464 | bpr | 70 | for my $cl (@L) { |
71 | open IN, "$dir/$cl/.def"; |
||
72 | while(<IN>) { |
||
6985 | bpr | 73 | if ($_ =~ /!set class_(\w+)=\s*(.*)/) { |
9875 | bpr | 74 | my $f = $1; my $r= $2; |
6985 | bpr | 75 | if ($f =~ /\blevel/) { |
76 | $r=~ s/ //g; |
||
9875 | bpr | 77 | if( $r) { $ref{$cl}{$f}= "level" . join(', level', split(',',$r));} |
6985 | bpr | 78 | } |
9875 | bpr | 79 | else { $ref{$cl}{$1}=$2;}} |
80 | } |
||
6464 | bpr | 81 | close IN; |
82 | } |
||
83 | } |
||
84 | |||
9875 | bpr | 85 | sub listclass { |
86 | my @L= (); |
||
6464 | bpr | 87 | for my $cl (glob("$dir/*")) { |
9875 | bpr | 88 | $cl=~s /$dir\///; |
89 | push @L, $cl if (!($cl =~ /[A-Z]+/) && $cl < 10000); |
||
6464 | bpr | 90 | } |
91 | @L |
||
92 | } |