mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	Added module synopsis support with one (big) caveat: All the modules are
listed in each chapter that has a \localmoduletable. This will be fixed, and everything else seems to be working fine.
This commit is contained in:
		
							parent
							
								
									2903d03e2d
								
							
						
					
					
						commit
						a0f4c94af6
					
				
					 1 changed files with 142 additions and 30 deletions
				
			
		|  | @ -416,15 +416,20 @@ sub make_mod_index_entry{ | ||||||
| $THIS_MODULE = ''; | $THIS_MODULE = ''; | ||||||
| $THIS_CLASS = ''; | $THIS_CLASS = ''; | ||||||
| 
 | 
 | ||||||
| sub my_module_index_helper{ | sub define_module{ | ||||||
|     local($word, $_) = @_; |     my($word,$name) = @_; | ||||||
|     my($str,$br_id) = next_argument_id(); |  | ||||||
|     swallow_newline(); |  | ||||||
|     my $section_tag = join('', @curr_sec_id); |     my $section_tag = join('', @curr_sec_id); | ||||||
|     $word = "$word " if $word; |     $word = "$word " if $word; | ||||||
|     $THIS_MODULE = "$str"; |     $THIS_MODULE = "$name"; | ||||||
|     make_mod_index_entry("SECTION$section_tag", |     make_mod_index_entry("SECTION$section_tag", | ||||||
| 			 "<tt>$str</tt> (${word}module)", 'DEF') . $_; | 			 "<tt>$name</tt> (${word}module)", 'DEF'); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub my_module_index_helper{ | ||||||
|  |     local($word, $_) = @_; | ||||||
|  |     my $name = next_argument(); | ||||||
|  |     swallow_newline(); | ||||||
|  |     define_module($word, $name) . $_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub ref_module_index_helper{ | sub ref_module_index_helper{ | ||||||
|  | @ -690,15 +695,16 @@ sub do_cmd_memberlineni{ | ||||||
|     "<dt><b>$member</b><dd>" . $_; |     "<dt><b>$member</b><dd>" . $_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @col_aligns = ("<td>", "<td>", "<td>"); | @col_aligns = ("<td>", "<td>", "<td>", "<td>"); | ||||||
| 
 | 
 | ||||||
| sub setup_column_alignments{ | sub setup_column_alignments{ | ||||||
|     local($_) = @_; |     local($_) = @_; | ||||||
|     my($a1,$a2,$a3) = split(/[|]/,$_); |     my($a1,$a2,$a3,$a4) = split(/[|]/,$_); | ||||||
|     my($th1,$th2,$th3) = ('<th>', '<th>', '<th>'); |     my($th1,$th2,$th3,$th4) = ('<th>', '<th>', '<th>', '<th>'); | ||||||
|     $col_aligns[0] = (($a1 eq 'c') ? '<td align=center>' : '<td>'); |     $col_aligns[0] = (($a1 eq 'c') ? '<td align=center>' : '<td>'); | ||||||
|     $col_aligns[1] = (($a2 eq 'c') ? '<td align=center>' : '<td>'); |     $col_aligns[1] = (($a2 eq 'c') ? '<td align=center>' : '<td>'); | ||||||
|     $col_aligns[2] = (($a3 eq 'c') ? '<td align=center>' : '<td>'); |     $col_aligns[2] = (($a3 eq 'c') ? '<td align=center>' : '<td>'); | ||||||
|  |     $col_aligns[3] = (($a4 eq 'c') ? '<td align=center>' : '<td>'); | ||||||
|     # return the aligned header start tags; only used for \begin{tableiii?} |     # return the aligned header start tags; only used for \begin{tableiii?} | ||||||
|     $th1 = (($a1 eq 'l') ? '<th align=left>' |     $th1 = (($a1 eq 'l') ? '<th align=left>' | ||||||
| 	    : ($a1 eq 'r' ? '<th align=right>' : '<th>')); | 	    : ($a1 eq 'r' ? '<th align=right>' : '<th>')); | ||||||
|  | @ -706,12 +712,14 @@ sub setup_column_alignments{ | ||||||
| 	    : ($a2 eq 'r' ? '<th align=right>' : '<th>')); | 	    : ($a2 eq 'r' ? '<th align=right>' : '<th>')); | ||||||
|     $th3 = (($a3 eq 'l') ? '<th align=left>' |     $th3 = (($a3 eq 'l') ? '<th align=left>' | ||||||
| 	    : ($a3 eq 'r' ? '<th align=right>' : '<th>')); | 	    : ($a3 eq 'r' ? '<th align=right>' : '<th>')); | ||||||
|     ($th1, $th2, $th3); |     $th4 = (($a4 eq 'l') ? '<th align=left>' | ||||||
|  | 	    : ($a4 eq 'r' ? '<th align=right>' : '<th>')); | ||||||
|  |     ($th1, $th2, $th3, $th4); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub do_env_tableii{ | sub do_env_tableii{ | ||||||
|     local($_) = @_; |     local($_) = @_; | ||||||
|     my($th1,$th2,$th3) = setup_column_alignments(next_argument()); |     my($th1,$th2,$th3,$th4) = setup_column_alignments(next_argument()); | ||||||
|     my $font = next_argument(); |     my $font = next_argument(); | ||||||
|     my $h1 = next_argument(); |     my $h1 = next_argument(); | ||||||
|     my $h2 = next_argument(); |     my $h2 = next_argument(); | ||||||
|  | @ -742,7 +750,7 @@ sub do_cmd_lineii{ | ||||||
| 
 | 
 | ||||||
| sub do_env_tableiii{ | sub do_env_tableiii{ | ||||||
|     local($_) = @_; |     local($_) = @_; | ||||||
|     my($th1,$th2,$th3) = setup_column_alignments(next_argument()); |     my($th1,$th2,$th3,$th4) = setup_column_alignments(next_argument()); | ||||||
|     my $font = next_argument(); |     my $font = next_argument(); | ||||||
|     my $h1 = next_argument(); |     my $h1 = next_argument(); | ||||||
|     my $h2 = next_argument(); |     my $h2 = next_argument(); | ||||||
|  | @ -768,36 +776,52 @@ sub do_cmd_lineiii{ | ||||||
| 	$sfont = "<$font>"; | 	$sfont = "<$font>"; | ||||||
| 	$efont = "</$font>"; | 	$efont = "</$font>"; | ||||||
|     } |     } | ||||||
|     my($c1align,$c2align,$c3align) = @col_aligns; |     my($c1align,$c2align,$c3align) = @col_aligns[0,1,2]; | ||||||
|     "<tr>$c1align$sfont$c1$efont</td>\n" |     "<tr>$c1align$sfont$c1$efont</td>\n" | ||||||
|       . "      $c2align$c2</td>\n" |       . "      $c2align$c2</td>\n" | ||||||
|       . "      $c3align$c3</td>" |       . "      $c3align$c3</td>" | ||||||
|       . $_; |       . $_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub do_env_seealso{ | sub do_env_tableiv{ | ||||||
|     "<p><b>See Also:</b></p>\n" . @_[0]; |     local($_) = @_; | ||||||
|  |     my($th1,$th2,$th3,$th4) = setup_column_alignments(next_argument()); | ||||||
|  |     my $font = next_argument(); | ||||||
|  |     my $h1 = next_argument(); | ||||||
|  |     my $h2 = next_argument(); | ||||||
|  |     my $h3 = next_argument(); | ||||||
|  |     my $h4 = next_argument(); | ||||||
|  |     $font = '' | ||||||
|  |         if ($font eq 'textrm'); | ||||||
|  |     $globals{'lineifont'} = $font; | ||||||
|  |     '<table border align=center>' | ||||||
|  |       . "\n  <tr>$th1<b>$h1</b></th>" | ||||||
|  |       . "\n      $th2<b>$h2</b></th>" | ||||||
|  |       . "\n      $th3<b>$h3</b></th>" | ||||||
|  |       . "\n      $th4<b>$h4</b></th>" | ||||||
|  |       . $_ | ||||||
|  |       . "\n</table>"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub do_cmd_seemodule{ | sub do_cmd_lineiv{ | ||||||
|     # Insert the right magic to jump to the module definition.  This should |  | ||||||
|     # work most of the time, at least for repeat builds.... |  | ||||||
|     local($_) = @_; |     local($_) = @_; | ||||||
|     my $key = next_optional_argument(); |     my $c1 = next_argument(); | ||||||
|     my $module = next_argument(); |     my $c2 = next_argument();  | ||||||
|     my $text = next_argument(); |     my $c3 = next_argument(); | ||||||
|     $key = $module |     my $c4 = next_argument(); | ||||||
|         unless $key; |     my($font,$sfont,$efont) = ($globals{'lineifont'}, '', ''); | ||||||
|     "<p>Module <tt><b><a href=\"module-$key.html\">$module</a></b></tt>" |     if ($font) { | ||||||
|       . "   ($text)</p>" | 	$sfont = "<$font>"; | ||||||
|  | 	$efont = "</$font>"; | ||||||
|  |     } | ||||||
|  |     my($c1align,$c2align,$c3align,$c4align) = @col_aligns; | ||||||
|  |     "<tr>$c1align$sfont$c1$efont</td>\n" | ||||||
|  |       . "      $c2align$c2</td>\n" | ||||||
|  |       . "      $c3align$c3</td>\n" | ||||||
|  |       . "      $c4align$c4</td>" | ||||||
|       . $_; |       . $_; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| sub do_cmd_seetext{ |  | ||||||
|     '<p>' . @_[0]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| sub do_cmd_maketitle { | sub do_cmd_maketitle { | ||||||
|     local($_) = @_; |     local($_) = @_; | ||||||
|     my $the_title = ''; |     my $the_title = ''; | ||||||
|  | @ -837,6 +861,94 @@ sub do_cmd_maketitle { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | # | ||||||
|  | #  Module synopsis support | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | require SynopsisTable; | ||||||
|  | 
 | ||||||
|  | $MY_CHAPTER_COUNTER = 0; | ||||||
|  | 
 | ||||||
|  | sub get_chapter_id{ | ||||||
|  |     return $MY_CHAPTER_COUNTER; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub get_synopsis_table{ | ||||||
|  |     my $chap = @_; | ||||||
|  |     my $st = $ModuleSynopses{$chap}; | ||||||
|  |     if (!$st) { | ||||||
|  | 	$st = SynopsisTable->new(); | ||||||
|  | 	$ModuleSynopses{$chap} = $st; | ||||||
|  |     } | ||||||
|  |     return $st; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub do_cmd_declaremodule{ | ||||||
|  |     local($_) = @_; | ||||||
|  |     my $key = next_optional_argument(); | ||||||
|  |     my $type = next_argument(); | ||||||
|  |     my $name = next_argument(); | ||||||
|  |     my $st = get_synopsis_table(get_chapter_id()); | ||||||
|  |     # | ||||||
|  |     $key = $name unless $key; | ||||||
|  |     $type = 'built-in' if $type eq 'builtin'; | ||||||
|  |     $st->declare($name, $key, $type); | ||||||
|  |     define_module($type, $name); | ||||||
|  |     anchor_label("module-$key",$CURRENT_FILE,$_) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub do_cmd_modulesynopsis{ | ||||||
|  |     local($_) = @_; | ||||||
|  |     my $st = get_synopsis_table(get_chapter_id()); | ||||||
|  |     $st->set_synopsis($THIS_MODULE, next_argument()); | ||||||
|  |     swallow_newline(); | ||||||
|  |     $_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub do_cmd_localmoduletable{ | ||||||
|  |     local($_) = @_; | ||||||
|  |     $MY_CHAPTER_COUNTER = $MY_CHAPTER_COUNTER + 1; | ||||||
|  |     my $chap = get_chapter_id(); | ||||||
|  |     "<tex2htmllocalmoduletable><$chap>" . $_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub process_all_localmoduletables{ | ||||||
|  |     while (/<tex2htmllocalmoduletable><(\d+)>/) { | ||||||
|  | 	my $chap = $1; | ||||||
|  | 	my $st = get_synopsis_table($chap); | ||||||
|  | 	my $data = $st->tohtml(); | ||||||
|  | 	s/$&/$data/; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # | ||||||
|  | #  "See also:" -- references placed at the end of a \section | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | sub do_env_seealso{ | ||||||
|  |     "<p><b>See Also:</b></p>\n" . @_[0]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub do_cmd_seemodule{ | ||||||
|  |     # Insert the right magic to jump to the module definition.  This should | ||||||
|  |     # work most of the time, at least for repeat builds.... | ||||||
|  |     local($_) = @_; | ||||||
|  |     my $key = next_optional_argument(); | ||||||
|  |     my $module = next_argument(); | ||||||
|  |     my $text = next_argument(); | ||||||
|  |     $key = $module | ||||||
|  |         unless $key; | ||||||
|  |     "<p>Module <tt><b><a href=\"module-$key.html\">$module</a></b></tt>" | ||||||
|  |       . "   ($text)</p>" | ||||||
|  |       . $_; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | sub do_cmd_seetext{ | ||||||
|  |     '<p>' . @_[0]; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # | # | ||||||
| #  Definition list support. | #  Definition list support. | ||||||
| # | # | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fred Drake
						Fred Drake