Quanta 参考文档脚本

From KDE UserBase Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This page is a translated version of the page Quanta RefreshDoc script and the translation is 100% complete.

请复制如下代码。

 #!/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);
 ?>