#!/usr/bin/perl -s use CGI qw(:all); use XML::DT ; use strict; use POSIX qw(locale_h); setlocale(LC_CTYPE, "pt_PT"); use locale; our ($st,$basename); $st ||=1; binmode(STDOUT, ":utf8"); my $filename = shift; unless ($basename){ # invent a basename if necessary $basename = $filename ; $basename =~ s!\.[^.]*$!!; $basename =~ s!^.*[\/\\]!!; $basename =~ s![ ()]!_!g; } my $output = shift or die("usage: $0 [-st=] [-basename=name] x.xml out.html\n"); my %tabela=(); my %tabela2=(); open(STDOUT,">$output") or die("cant create $output"); my $basedir = $output; $basedir =~ s!(.*)/(.*)!$1! or $basedir = "."; mkdir($basedir) if ($basedir =~ /\w/); sub makecss{ open(F,">$basedir/multiterm2html.css") or die("cant create css\n"); print F join("",); close F; } my %handler=( '-default' => sub{$c}, 'concept' => sub{ father->{number}=norm($c); li(a({name=>norm($c)},em("Number: "),$c)) }, 'conceptGrp' => sub{ my $b = name_id($output,$v{number}); if($st==3){ open(F,">$b") or die("cant create $b"); binmode(F, ":utf8"); print F start_html(-title=>"$output", -style=>{'src'=>'multiterm2html.css'}, -meta=>{"Content-Type" => "text/html; charset=UTF-8"}); print F div(ul($c)); print F end_html; close F; } print "\n",div(ul($c)); "" }, 'date' => sub{"" }, 'descrip' => sub{ if($v{type} =~ /^(imagem|images?|fotos?|photos?)$/i){ li(em($v{type}),": ",img({src=>"media_$basename/$c",alt => $c}))} else{ li(em($v{type}),": ",addLinks($c)) }}, # 'descripGrp' => sub{ $c }, 'language' => sub{ father->{lang}=$v{type}; $tabela2{$v{type}}++; "" }, # 'languageGrp' => sub{ ul($c).hr }, 'languageGrp' => sub{ li(em({class=>"L"},$v{lang}), ul($c)) }, # 'mtf' => sub{ $c }, 'term' => sub{ push(@{$tabela{$c}},[ggfather->{number},gfather->{lang}]); my $n=norm(gfather->{lang} . ":$c"); a({name=>$n},""). $c }, 'termGrp' => sub{ li({class=>"L"},$c) }, 'transac' => sub{"" }, 'transacGrp' => sub{"" }, 'xref' => sub{ my $n=norm($v{Tlink}); a({href=>"#$n"},$c) }, ); #print header(-charset=>"UTF-8"), print start_html(-title=>"Base", -style=>{'src'=>'multiterm2html.css'}, -meta=>{"Content-Type" => "text/html; charset=UTF-8"}); dt($filename,%handler); print end_html(); makecss; if($st>=2){ geraindex($output) } sub addLinks{ my $a = shift; $a =~ s{((?:http|ftp)://\S+)}{a({href => $1},$1)}gei; $a; } sub geraindex{ my $basename=shift; my $name=$basename; $basename =~ s/\.html?$//; $name =~ s!.*/!!; for my $l (keys %tabela2){ open(F,">$basename.$l.html") or die; binmode(F, ":utf8"); print F start_html(-title=>"$name : $l", -style=>{'src'=>'multiterm2html.css'}, -meta=>{"Content-Type" => "text/html; charset=UTF-8"}), h1($l),"
    "; ###for my $t (sort {lc($a) cmp lc($b)} (keys %tabela)) for my $t (sort (keys %tabela)){ next unless $tabela{$t}[0][1] eq $l; if($st==2){ print F "\n",li("$t: ". join(", ", map {a({href=>"$name#$_->[0]"},"($_->[0])")} @{ $tabela{$t} })) } if($st==3){ print F "\n",li("$t: ". join(", ", map {a({href=> name_id($name,$_->[0])},"($_->[0])")} @{ $tabela{$t} })) } } print F "
"; close F; } } sub name_id{ my $name=shift; my $id = shift; my $strip = shift || 0; $name =~ s!.*/!! if $strip; $name =~ s/\.html?$/_$id$&/; $name; } #for(sort(keys %tabela)){ # print li($_ . ": ". join(", ", map {a({href=>"#$_->[0]"},"($_->[0], $_->[1])")} @{ $tabela{$_} })) } sub norm{ my $p=shift; for ($p){ s/.*://; s/\s*$//; s/^\s*//; s/[- ,.():]/_/g; } lc($p) } __DATA__ ul { /* margin-left: -10px; */ } li.L { color:red; font-size: larger; margin-left: 0px; } li { list-style-type: none; /* margin-left: 10px; */ } div { display: block; border: solid 1px black; /* */ margin: 3px; padding: 2px; padding-left: 0px; background-color: #f5f5f5; /**/ } a { color: black; } em.L { color: darkgreen; } em { color: green; }