Script RefreshDoc di Quanta

    From KDE UserBase Wiki
    This page is a translated version of the page Quanta RefreshDoc script and the translation is 100% complete.

    Copia il codice seguente

     #!/usr/bin/php
     <?php
     $doc = array();
     $doc2 = array();
     // ####F-ref-seitem
     $doc[] = array('name' => 'Function reference pages', 'link' => '');
     // ####### treeee
     $cXmlReader = new XMLReader();
     $cXmlReader->open($argv[1].'/index.html');
     while($cXmlReader->read())
     {
     if($cXmlReader->name == a && $cXmlReader->readInnerXML() != "")
     {
     if($cXmlReader->depth == 5)
     $doc[] = array('link' => $cXmlReader->getAttribute("href"), 'name' => $cXmlReader->readInnerXML());
     if($cXmlReader->depth == 7)
     $doc[count($doc)-1][] = array('link' => $cXmlReader->getAttribute("href"), 'name' => $cXmlReader->readInnerXML());
     }
     }
     // ####### treeee 2
     $cXmlReader = new XMLReader();
     $cXmlReader->open($argv[1].'/funcref.html');
     while($cXmlReader->read())
     {
     if($cXmlReader->name == a && $cXmlReader->depth != 4 && $cXmlReader->depth != 8 && $cXmlReader->readInnerXML() != "")
     {
     if($cXmlReader->depth == 5)
     $doc2[] = array('link' => $cXmlReader->getAttribute("href"), 'name' => $cXmlReader->readInnerXML());
     if($cXmlReader->depth == 7)
     $doc2[count($doc2)-1][] = array('link' => $cXmlReader->getAttribute("href"), 'name' => $cXmlReader->readInnerXML());
     }
     }
     // ######### ;F-Ref-Liste 
     $dir = opendir($argv[1]);
     while($file = readdir($dir))
     {
     if(substr($file, 0, 4) == 'ref.')
     {
     $filec = file_get_contents($argv[1].'/'.$file);
     $i = strpos($filec, '<title>');
     $j = strpos($filec, '</title>');
     $name = substr($filec, $i + 7, $j-$i-7);
     $doc[0][] = array('link' => $file, 'name' => $name);
     }
     }
     closedir ($dir);
     // ################# CONTEXT
     $cXmlReader = new XMLReader();
     $cXmlReader->open($argv[1].'/indexes.html');
     $context = array();
     while($cXmlReader->read())
     {
     if($cXmlReader->name == a && $cXmlReader->readInnerXML() != "" && $cXmlReader->depth == 6)
     {
     if(substr($cXmlReader->readInnerXML(), -2) == "()")
     $name = substr($cXmlReader->readInnerXML(), 0, -2);
     else
     $name = $cXmlReader->readInnerXML();
     $context[] = array('link' => $cXmlReader->getAttribute("href"), 'name' => $name);
     }
     }
     // ############## write tree into file
     function w($text, $nl=0)
     {
     global $file;
     $text = utf8_decode($text);
     fwrite($file, $text.(($nl)?"\n":''));
     }
     $file = fopen($argv[1].'.docrc', 'w');
     w('[Tree]
     Doc dir='.$argv[1].'
     Top Element='.$argv[1].' documentation
     ');
     w($argv[1].' documentation=');
     $c='';
     foreach($doc as $line)
     {
     w($c.((count($line) > 2)?'#':'').$line['name']);
     $c=',';
     }
     w("\n");
     function wrec($array)
     {
     w("\n");
     foreach($array as $line)
     {
     if(count($line) == 2)
     w($line['name'].'='.$line['link'], 1);
     else if(count($line) > 2)
     {
     w($line['name'].'=');
     $c = '';
     foreach($line as $key=>$subline)
     {
     if(!is_numeric($key)) continue;
     w($c.((count($subline) > 2)?'#':'').$subline['name']);
     $c=',';
     }
     w("\n");
     wrec($line);
     }
     }
     w("\n");
     }
     wrec($doc);
     // ############## write context into file
     w('[Context]',1);
     w('ContextList=');
     $c = '';
     foreach($context as $line)
     {
     w($c.$line['name']);
     $c = ',';
     }
     w("\n",1);
     foreach($context as $key=>$line)
     {
     if(!is_numeric($key)) continue;
     w($line['name'].'='.$line['link'],1);
     }
     fclose($file);
     // ############## write tree 2 into second file
     $file = fopen($argv[1].'_fref.docrc', 'w');
     w('[Tree]
     Doc dir='.$argv[1].'
     Top Element='.$argv[1].'_fref documentation
     ');
     w($argv[1].'_fref documentation=');
     $c='';
     foreach($doc2 as $line)
     {
     w($c.((count($line) > 2)?'#':'').$line['name']);
     $c=',';
     }
     w("\n");
     wrec($doc2);
     fclose($file);
     ?>