mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			235 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			235 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/perl
 | |
| # fill_func_tables - parse ../Docs/manual.texi 
 | |
| 
 | |
| # Original version by vva 
 | |
| 
 | |
| my $cat_name= "";
 | |
| my $func_name= "";
 | |
| my $text= "";
 | |
| my $example= "";
 | |
| 
 | |
| local $mode= "";
 | |
| 
 | |
| sub prepare_name
 | |
| {
 | |
|   my ($a)= @_;
 | |
| 
 | |
|   $a =~ s/(\@itemize \@bullet)/  /g;
 | |
|   $a =~ s/(\@end itemize)/  /g;
 | |
|   $a =~ s/(\@end multitable)/  /g;
 | |
|   $a =~ s/(\@end table)/  /g;
 | |
|   $a =~ s/(\@cindex(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@multitable \@columnfractions(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@node(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@tab)/\t/g;
 | |
|   $a =~ s/\@item/  /g;
 | |
|   $a =~ s/\@code\{((.|\n)+?)\}/$1/go;
 | |
|   $a =~ s/\@strong\{(.+?)\}/$1/go;
 | |
|   $a =~ s/\@samp\{(.+?)\}/$1/go;
 | |
|   $a =~ s/\@emph\{((.|\n)+?)\}/\/$1\//go;
 | |
|   $a =~ s/\@xref\{((.|\n)+?)\}/See also : [$1]/go;
 | |
|   $a =~ s/\@ref\{((.|\n)+?)\}/[$1]/go;
 | |
|   $a =~ s/\'/\'\'/g;
 | |
|   $a =~ s/\\/\\\\/g;
 | |
|   $a =~ s/\`/\`\`/g;
 | |
| 
 | |
|   $a =~ s/\@table \@code/  /g;
 | |
| 
 | |
|   $a =~ s/\(\)//g;
 | |
| 
 | |
|   $a =~ s/((\w|\s)+)\(([\+-=><\/%*!<>\s]+)\)/$3/gxs; #$a =~ s/((\w|\s)+)\(([\+-=><\/%*!<>\s]+)\)/$3 $1/gxs;
 | |
|   $a =~ s/([\+-=><\/%*!<>\s]+)\(((\w|\s)+)\)/$1/gxs;#$a =~ s/([\+-=><\/%*!<>\s]+)\(((\w|\s)+)\)/$1 $2/gxs;
 | |
|   $a =~ s/((\w|\s)+)\((.+)\)/$1/gxs;
 | |
| 
 | |
|   return $a;
 | |
| }
 | |
| 
 | |
| sub prepare_text
 | |
| {
 | |
|   my ($a)= @_;
 | |
| 
 | |
|   $a =~ s/(\@itemize \@bullet)/  /g;
 | |
|   $a =~ s/(\@end itemize)/  /g;
 | |
|   $a =~ s/(\@end multitable)/  /g;
 | |
|   $a =~ s/(\@end table)/  /g;
 | |
|   $a =~ s/(\@cindex(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@multitable \@columnfractions(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@node(.*?)\n)/  /g;
 | |
|   $a =~ s/(\@tab)/\t/g;
 | |
|   $a =~ s/\@itemx/  /g;
 | |
|   $a =~ s/\@item/  /g;
 | |
|   $a =~ s/\@code\{((.|\n)+?)\}/$1/go;
 | |
|   $a =~ s/\@strong\{(.+?)\}/$1/go;
 | |
|   $a =~ s/\@samp\{(.+?)\}/$1/go;
 | |
|   $a =~ s/\@emph\{((.|\n)+?)\}/\/$1\//go;
 | |
|   $a =~ s/\@xref\{((.|\n)+?)\}/See also : [$1]/go;
 | |
|   $a =~ s/\@ref\{((.|\n)+?)\}/[$1]/go;
 | |
|   $a =~ s/\'/\'\'/g;
 | |
|   $a =~ s/\\/\\\\/g;
 | |
|   $a =~ s/\`/\`\`/g;
 | |
|   $a =~ s/(\n*?)$//g;
 | |
|   $a =~ s/\n/\\n/g;
 | |
| 
 | |
|   $a =~ s/\@table \@code/  /g;
 | |
| 
 | |
|   return $a;
 | |
| }
 | |
| 
 | |
| sub prepare_example
 | |
| {
 | |
|   my ($a)= @_;
 | |
| 
 | |
|   $a =~ s/\'/\'\'/g;
 | |
|   $a =~ s/\\/\\\\/g;
 | |
|   $a =~ s/\`/\`\`/g;
 | |
|   $a =~ s/(\n*?)$//g;
 | |
|   $a =~ s/\n/\\n/g;
 | |
| 
 | |
|   return $a;
 | |
| }
 | |
| 
 | |
| sub flush_all
 | |
| {
 | |
|   my ($mode) = @_;
 | |
| 
 | |
|   if ($mode eq ""){return;}
 | |
| 
 | |
|   $func_name= prepare_name($func_name);
 | |
|   $text= prepare_text($text);
 | |
|   $example= prepare_example($example);
 | |
| 
 | |
|   if ($func_name ne "" && $text ne "" && !($func_name =~ /[abcdefghikjlmnopqrstuvwxyz]/)){
 | |
|     print "INSERT INTO function (name,description,example) VALUES (";
 | |
|     print "'$func_name',";
 | |
|     print "'$text',";
 | |
|     print "'$example'";
 | |
|     print ");\n";
 | |
|     print "INSERT INTO function_category (cat_id,func_id) VALUES (\@cur_category,LAST_INSERT_ID());\n";
 | |
|   }
 | |
| 
 | |
|   $func_name= "";
 | |
|   $text= "";
 | |
|   $example= "";
 | |
|   $mode= "";
 | |
| }
 | |
| 
 | |
| sub new_category
 | |
| {
 | |
|   my ($category)= @_;
 | |
| 
 | |
|   $category= prepare_text($category);
 | |
| 
 | |
|   print "INSERT INTO function_category_name (name) VALUES (\'$category\');\n";
 | |
|   print "SELECT \@cur_category:=LAST_INSERT_ID();\n";
 | |
| }
 | |
| 
 | |
| print "INSERT INTO db (Host,DB,User,Select_priv) VALUES ('%','mysql_help','','Y');\n";
 | |
| print "CREATE DATABASE mysql_help;\n";
 | |
| 
 | |
| print "USE mysql_help;\n";
 | |
| 
 | |
| print "DROP TABLE IF EXISTS function;\n";
 | |
| print "CREATE TABLE function (";
 | |
| print "  func_id       int unsigned not null auto_increment,";
 | |
| print "  name          varchar(64) not null,";
 | |
| print "  url           varchar(128) not null,";
 | |
| print "  description   text not null,";
 | |
| print "  example       text not null,";
 | |
| print "  min_args      tinyint not null,";
 | |
| print "  max_args      tinyint,";
 | |
| print "  date_created  datetime not null,";
 | |
| print "  last_modified timestamp not null,";
 | |
| print "  primary key   (func_id)";
 | |
| print ") type=myisam;\n\n";
 | |
| 
 | |
| print "DROP TABLE IF EXISTS function_category_name;\n";
 | |
| print "CREATE TABLE function_category_name (";
 | |
| print "  cat_id        smallint unsigned not null auto_increment,";
 | |
| print "  name          varchar(64) not null,";
 | |
| print "  url           varchar(128) not null,";
 | |
| print "  date_created  datetime not null,";
 | |
| print "  last_modified timestamp not null,";
 | |
| print "  primary key   (cat_id)";
 | |
| print ") type=myisam;\n\n";
 | |
| 
 | |
| print "DROP TABLE IF EXISTS function_category;\n";
 | |
| print "CREATE TABLE function_category (";
 | |
| print "  cat_id        smallint unsigned not null references function_category_name,";
 | |
| print "  func_id       int unsigned not null references function,";
 | |
| print "  primary key   (cat_id, func_id)";
 | |
| print ") type=myisam;\n\n";
 | |
| 
 | |
| print "DELETE FROM function_category_name;\n";
 | |
| print "DELETE FROM function_category;\n";
 | |
| print "DELETE FROM function;\n";
 | |
| print "SELECT \@cur_category:=null;\n\n";
 | |
| 
 | |
| my $in_section_6_3= 0;
 | |
| 
 | |
| for(<>)
 | |
| {
 | |
|   if ($_=~/\@section Functions for Use in \@code{SELECT} and \@code{WHERE} Clauses/ &&
 | |
|       !$in_section_6_3){
 | |
|     $in_section_6_3= 1;
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   if ($_=~/\@section/ && $in_section_6_3){
 | |
|     $in_section_6_3= 0;
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   if (!$in_section_6_3) { next; }
 | |
| 
 | |
|   my $c_name= "";
 | |
| 
 | |
|   ($c_name)=m|\@c for_mysql_help,(.+?)$|;
 | |
|   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
 | |
|     ($cat_name)= $c_name;
 | |
|     new_category($cat_name);
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   ($c_name)=m|\@subsubsection (.+?)$|;
 | |
|   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
 | |
|     ($cat_name)= $c_name;
 | |
|     new_category($cat_name);
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   ($c_name)=m|\@subsection (.+?)$|;
 | |
|   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
 | |
|     ($cat_name)= $c_name;
 | |
|     new_category($cat_name);
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   ($f_name)=m|\@findex (.+?)$|;
 | |
|   if (!($f_name eq "")){
 | |
|     flush_all($mode);
 | |
|     ($func_name)= ($f_name);
 | |
|     $mode= "text";
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   if ($_=~/\@example/ && ($mode eq "text")){
 | |
|     $mode= "example";
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   if ($_=~/\@end example/ && ($mode eq "example")){
 | |
|     flush_all($mode);
 | |
|     next;
 | |
|   }
 | |
| 
 | |
|   if ($mode eq "text")    { $text    .= $_; }
 | |
|   if ($mode eq "example") { $example .= $_; }
 | |
| }
 | |
| 
 | |
| 
 | |
| print "DELETE function_category_name ";
 | |
| print "FROM function_category_name ";
 | |
| print "LEFT JOIN function_category ON function_category.cat_id=function_category_name.cat_id ";
 | |
| print "WHERE function_category.cat_id is null;"
 | |
| 
 | 
