Subversion Repositories wimsdev

Rev

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
}