Quanta 参考文档脚本

From KDE UserBase Wiki
Revision as of 08:25, 9 August 2012 by Claus chr (talk | contribs) (Created page with "Category:开发/zh-cn")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

请复制如下代码。

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