]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/Graph/external/jpgraph/src/utils/jpdocgen/jpgendoc.php
Se mejora un poco los ALT para navegadores de texto.
[mecon/meconlib.git] / lib / MECON / Graph / external / jpgraph / src / utils / jpdocgen / jpgendoc.php
1 <?php
2 //==============================================================================
3 // Name:        JPGENDOC.PHP
4 // Description: Use parsing classes to generate a documentation skeleton
5 // Created:     01/12/03 
6 // Author:      johanp@aditus.nu
7 // Version:     $Id: jpgendoc.php,v 1.2 2003/01/30 14:55:57 aditus Exp $
8 //
9 // License:     QPL 1.0
10 // Copyright (C) 2001,2002 Johan Persson
11 //==============================================================================
12 include("jplintphp.php");
13
14 // Utility function to highlight a snippet of PHP code
15 function HighlightCodeSnippet($t,$bg=true) {
16     $t = "<?$t?>";
17     $t = highlight_string($t,true);
18     $t=str_replace('&lt;?','',$t);
19     $t=str_replace('?&gt;','',$t);
20     if( $bg ) {
21         $t = "<div style=\"background-color:#E6E6E6;font-family:courier new;font-size:85%;font-weight:bold;\"><b>$t</b></div>";
22     }
23     else {
24         $t = "<span style=\"font-family:courier;font-size:85%;font-weight:bold;\">$t</span>";
25     }
26     return $t;
27 }
28
29
30 // Formatting class for Classes
31 class DocClassProp extends ClassProp {
32     var $aB,$aC;
33         
34     function DocClassProp($aParent,$aName,$aLineNbr,$aFile) {   
35         parent::ClassProp($aParent,$aName,$aLineNbr,$aFile);
36     }
37                 
38     function FormatVar($aVar) {
39         //return $aVar;
40         return HighlightCodeSnippet($aVar,false)."; ";
41     }
42         
43     function FormatClass($aClass,$aParent) {
44         $res = "<div style=\"background-color:yellow;font-family:courier new;\">";
45         $res .= "CLASS <b>".$aClass."</b>";
46         if( $aParent != "" )
47             $res .= " EXTENDS <b><i>$aParent</i></b>";
48         $res .= "</div>\n";
49         return $res;
50     }   
51
52     function PrettyPrintVars() {
53         $res =  "<table border=0>\n";
54         for($i=0; $i<count($this->iVars); ++$i) {
55             $res .= "<tr><td valign=top>";
56             // highlight_string is buggy so we add ';' to be able to parse a 
57             // single variable.
58             $t = $this->iVars[$i];
59             $t = "<?php $t?>";
60             ob_start();
61             highlight_string($t);
62             $t = ob_get_contents();     
63             ob_end_clean();
64             $t=str_replace('&lt;?php&nbsp;','',$t);
65             $t=str_replace('?&gt;','',$t);
66             $res .= "<span style=\"font-family:times;font-size:85%;font-weight:bold;\">$t</span>\n";
67             //$res .= "</td><td valign=top>&nbsp;</td><td>".$this->[$i+1];
68             $res .= "</td></tr>\n";
69         }
70         $res .= "</table>\n";
71         return $res;
72     }
73 }
74
75 // Formatting class for Methods
76 class DocFuncProp extends FuncProp {
77     function DocFuncProp($aClassName,$aName,$aLineNbr,$aArgs,$aArgsVal,$aShortComment) {
78         parent::FuncProp($aClassName,$aName,$aLineNbr,$aArgs,$aArgsVal,$aShortComment);
79     }
80
81     function ToString() {
82         $res = $this->PrettyPrintFunc();
83         $res .= $this->PrettyPrintArgs();
84         $res .= "<b>Returns:</b>\n";
85         $res .= "<br><b>Description:</b><br>\n".str_replace('//','',$this->iShortComment);
86         $res .= "<br><b>Also see:</b>\n";
87         $res .= "<br><b>Example:</b><br>&nbsp;\n";
88         return  $res;
89     }
90         
91     function PrettyPrintFunc() {
92         $t="function ".$this->GetName()."(";
93         for($i=0; $i<count($this->iArgs); ++$i) {
94             if( $i != 0 ) $t .= ",";
95             $t .= $this->iArgs[$i];
96         }
97         $t .= ")";
98         return HighlightCodeSnippet($t);
99     }
100         
101     function PrettyPrintArgs()  {
102         if( count($this->iArgs) == 0 ) 
103             return "<br>\n";
104         $res =  "<table border=0>\n";
105         for($i=0; $i<count($this->iArgs); ++$i) {
106             $res .= "<tr><td valign=top>";
107             // highlight_string is buggy so we add ';' to be able to parse a 
108             // single variable.
109             $t = $this->iArgs[$i];
110             $t = "<?php $t?>";
111             ob_start();
112             highlight_string($t);
113             $t = ob_get_contents();     
114             ob_end_clean();
115             $t=str_replace('&lt;?php&nbsp;','',$t);
116             $t=str_replace('?&gt;','',$t);
117             $res .= "<span style=\"font-family:times;font-size:85%;font-weight:bold;\">$t</span>\n";
118             $res .= "</td><td valign=top>&nbsp;</td><td>XXXX</td></tr>\n";
119         }
120         $res .= "</table>\n";
121         return $res;
122     }
123 }
124
125 // Parser
126 class DocParser extends Parser {
127     function DocParser($aFile) {
128         parent::Parser($aFile);
129     }
130     // Factory function for classes
131     function NewClassProp($aParent,$aName,$aLineNbr,$aFileName) {
132         return new DocClassProp($aParent,$aName,$aLineNbr,$aFileName);
133     }
134     // Factory function for methods
135     function NewFuncProp($aClassName,$aName,$aLineNbr,$aArgs,$aArgsVal,$aShortComment) {
136         return new DocFuncProp($aClassName,$aName,$aLineNbr,$aArgs,$aArgsVal,$aShortComment);
137     }
138     // Map function for methods
139     function MapFunc(&$aFunc) {
140         parent::MapFunc($aFunc);
141     }
142     // map function for classes
143     function MapClass(&$aClass) {
144         parent::MapClass($aClass);
145     }
146 }
147
148
149 // Driver
150 class DocDriver extends Driver {
151     function DocDriver($aFile) {
152         parent::Driver($aFile);
153     }
154         
155     function NewParser($aFile) {
156         return new DocParser($aFile);
157     }
158         
159     function PostProcessing() {
160         parent::PostProcessing();
161         $res = $this->iParser->GetUnusedClassVariables();
162         if( trim($res!="") )
163             echo "<hr><h3>SUMMARY of unused instance variables</h3>$res";               
164         $res = $this->iParser->GetWarnings();
165         if( trim($res!="") )
166             echo "<hr><h3>SUMMARY of warnings</h3>$res";
167     }           
168 }
169
170
171 //==========================================================================
172 // Script entry point
173 // Read URL argument and create Driver
174 //==========================================================================
175 if( !isset($HTTP_GET_VARS['target']) )
176 die("<b>No file specified.</b> Use 'mylintphp.php?target=file_name'" ); 
177 $file = urldecode($HTTP_GET_VARS['target']);
178 $driver = new DocDriver($file);
179 $driver->Run();
180
181
182
183
184 ?>