fill_func_tables.sh
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!/usr/bin/perl
  2. # fill_func_tables - parse ../Docs/manual.texi 
  3. # Original version by vva 
  4. my $cat_name= "";
  5. my $func_name= "";
  6. my $text= "";
  7. my $example= "";
  8. local $mode= "";
  9. sub prepare_name
  10. {
  11.   my ($a)= @_;
  12.   $a =~ s/(@itemize @bullet)/  /g;
  13.   $a =~ s/(@end itemize)/  /g;
  14.   $a =~ s/(@end multitable)/  /g;
  15.   $a =~ s/(@end table)/  /g;
  16.   $a =~ s/(@cindex(.*?)n)/  /g;
  17.   $a =~ s/(@multitable @columnfractions(.*?)n)/  /g;
  18.   $a =~ s/(@node(.*?)n)/  /g;
  19.   $a =~ s/(@tab)/t/g;
  20.   $a =~ s/@item/  /g;
  21.   $a =~ s/@code{((.|n)+?)}/$1/go;
  22.   $a =~ s/@strong{(.+?)}/$1/go;
  23.   $a =~ s/@samp{(.+?)}/$1/go;
  24.   $a =~ s/@emph{((.|n)+?)}//$1//go;
  25.   $a =~ s/@xref{((.|n)+?)}/See also : [$1]/go;
  26.   $a =~ s/@ref{((.|n)+?)}/[$1]/go;
  27.   $a =~ s/'/''/g;
  28.   $a =~ s/\/\\/g;
  29.   $a =~ s/`/``/g;
  30.   $a =~ s/@table @code/  /g;
  31.   $a =~ s/()//g;
  32.   $a =~ s/((w|s)+)(([+-=></%*!<>s]+))/$3/gxs; #$a =~ s/((w|s)+)(([+-=></%*!<>s]+))/$3 $1/gxs;
  33.   $a =~ s/([+-=></%*!<>s]+)(((w|s)+))/$1/gxs;#$a =~ s/([+-=></%*!<>s]+)(((w|s)+))/$1 $2/gxs;
  34.   $a =~ s/((w|s)+)((.+))/$1/gxs;
  35.   return $a;
  36. }
  37. sub prepare_text
  38. {
  39.   my ($a)= @_;
  40.   $a =~ s/(@itemize @bullet)/  /g;
  41.   $a =~ s/(@end itemize)/  /g;
  42.   $a =~ s/(@end multitable)/  /g;
  43.   $a =~ s/(@end table)/  /g;
  44.   $a =~ s/(@cindex(.*?)n)/  /g;
  45.   $a =~ s/(@multitable @columnfractions(.*?)n)/  /g;
  46.   $a =~ s/(@node(.*?)n)/  /g;
  47.   $a =~ s/(@tab)/t/g;
  48.   $a =~ s/@itemx/  /g;
  49.   $a =~ s/@item/  /g;
  50.   $a =~ s/@code{((.|n)+?)}/$1/go;
  51.   $a =~ s/@strong{(.+?)}/$1/go;
  52.   $a =~ s/@samp{(.+?)}/$1/go;
  53.   $a =~ s/@emph{((.|n)+?)}//$1//go;
  54.   $a =~ s/@xref{((.|n)+?)}/See also : [$1]/go;
  55.   $a =~ s/@ref{((.|n)+?)}/[$1]/go;
  56.   $a =~ s/'/''/g;
  57.   $a =~ s/\/\\/g;
  58.   $a =~ s/`/``/g;
  59.   $a =~ s/(n*?)$//g;
  60.   $a =~ s/n/\n/g;
  61.   $a =~ s/@table @code/  /g;
  62.   return $a;
  63. }
  64. sub prepare_example
  65. {
  66.   my ($a)= @_;
  67.   $a =~ s/'/''/g;
  68.   $a =~ s/\/\\/g;
  69.   $a =~ s/`/``/g;
  70.   $a =~ s/(n*?)$//g;
  71.   $a =~ s/n/\n/g;
  72.   return $a;
  73. }
  74. sub flush_all
  75. {
  76.   my ($mode) = @_;
  77.   if ($mode eq ""){return;}
  78.   $func_name= prepare_name($func_name);
  79.   $text= prepare_text($text);
  80.   $example= prepare_example($example);
  81.   if ($func_name ne "" && $text ne "" && !($func_name =~ /[abcdefghikjlmnopqrstuvwxyz]/)){
  82.     print "INSERT INTO function (name,description,example) VALUES (";
  83.     print "'$func_name',";
  84.     print "'$text',";
  85.     print "'$example'";
  86.     print ");n";
  87.     print "INSERT INTO function_category (cat_id,func_id) VALUES (@cur_category,LAST_INSERT_ID());n";
  88.   }
  89.   $func_name= "";
  90.   $text= "";
  91.   $example= "";
  92.   $mode= "";
  93. }
  94. sub new_category
  95. {
  96.   my ($category)= @_;
  97.   $category= prepare_text($category);
  98.   print "INSERT INTO function_category_name (name) VALUES ('$category');n";
  99.   print "SELECT @cur_category:=LAST_INSERT_ID();n";
  100. }
  101. print "INSERT INTO db (Host,DB,User,Select_priv) VALUES ('%','mysql_help','','Y');n";
  102. print "CREATE DATABASE mysql_help;n";
  103. print "USE mysql_help;n";
  104. print "DROP TABLE IF EXISTS function;n";
  105. print "CREATE TABLE function (";
  106. print "  func_id       int unsigned not null auto_increment,";
  107. print "  name          varchar(64) not null,";
  108. print "  url           varchar(128) not null,";
  109. print "  description   text not null,";
  110. print "  example       text not null,";
  111. print "  min_args      tinyint not null,";
  112. print "  max_args      tinyint,";
  113. print "  date_created  datetime not null,";
  114. print "  last_modified timestamp not null,";
  115. print "  primary key   (func_id)";
  116. print ") type=myisam;nn";
  117. print "DROP TABLE IF EXISTS function_category_name;n";
  118. print "CREATE TABLE function_category_name (";
  119. print "  cat_id        smallint unsigned not null auto_increment,";
  120. print "  name          varchar(64) not null,";
  121. print "  url           varchar(128) not null,";
  122. print "  date_created  datetime not null,";
  123. print "  last_modified timestamp not null,";
  124. print "  primary key   (cat_id)";
  125. print ") type=myisam;nn";
  126. print "DROP TABLE IF EXISTS function_category;n";
  127. print "CREATE TABLE function_category (";
  128. print "  cat_id        smallint unsigned not null references function_category_name,";
  129. print "  func_id       int unsigned not null references function,";
  130. print "  primary key   (cat_id, func_id)";
  131. print ") type=myisam;nn";
  132. print "DELETE FROM function_category_name;n";
  133. print "DELETE FROM function_category;n";
  134. print "DELETE FROM function;n";
  135. print "SELECT @cur_category:=null;nn";
  136. my $in_section_6_3= 0;
  137. for(<>)
  138. {
  139.   if ($_=~/@section Functions for Use in @code{SELECT} and @code{WHERE} Clauses/ &&
  140.       !$in_section_6_3){
  141.     $in_section_6_3= 1;
  142.     next;
  143.   }
  144.   if ($_=~/@section/ && $in_section_6_3){
  145.     $in_section_6_3= 0;
  146.     next;
  147.   }
  148.   if (!$in_section_6_3) { next; }
  149.   my $c_name= "";
  150.   ($c_name)=m|@c for_mysql_help,(.+?)$|;
  151.   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
  152.     ($cat_name)= $c_name;
  153.     new_category($cat_name);
  154.     next;
  155.   }
  156.   ($c_name)=m|@subsubsection (.+?)$|;
  157.   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
  158.     ($cat_name)= $c_name;
  159.     new_category($cat_name);
  160.     next;
  161.   }
  162.   ($c_name)=m|@subsection (.+?)$|;
  163.   if (!($c_name eq "") && ! ($c_name =~ m/$cat_name/i)){
  164.     ($cat_name)= $c_name;
  165.     new_category($cat_name);
  166.     next;
  167.   }
  168.   ($f_name)=m|@findex (.+?)$|;
  169.   if (!($f_name eq "")){
  170.     flush_all($mode);
  171.     ($func_name)= ($f_name);
  172.     $mode= "text";
  173.     next;
  174.   }
  175.   if ($_=~/@example/ && ($mode eq "text")){
  176.     $mode= "example";
  177.     next;
  178.   }
  179.   if ($_=~/@end example/ && ($mode eq "example")){
  180.     flush_all($mode);
  181.     next;
  182.   }
  183.   if ($mode eq "text")    { $text    .= $_; }
  184.   if ($mode eq "example") { $example .= $_; }
  185. }
  186. print "DELETE function_category_name ";
  187. print "FROM function_category_name ";
  188. print "LEFT JOIN function_category ON function_category.cat_id=function_category_name.cat_id ";
  189. print "WHERE function_category.cat_id is null;"