*** empty log message ***
[m17n/m17n-docs.git] / utils / mkman.rb
index 43003af..a503b24 100644 (file)
@@ -3,19 +3,58 @@
 #¤â¤È¤Îdirectory¤Ë¤«¤­¤Ê¤ª¤¹¡£
 # see also ¤ÎÃæ¿È¤ò woman ¸þ¤±¤Ë½ñ¤­´¹¤¨¤ë¡£
 
-usr_dev_ja=$1
+usr_or_ja=$*[0]
+
+#
+# Setting up directory names.
+#
+
+$currentdir = Dir.pwd+"/"
+$doxywork = $currentdir+"doxywork/"
+$srcman3 = $currentdir+usr_or_ja+"/man/man3/"
+if usr_or_ja == "usr"
+  $dstman3m = $currentdir+"/man/man3m/"
+else
+  $dstman3m = $currentdir+"/man/ja/man3m/"
+end
+$sampledir="sample/man3/"
+
+#
+# Extra information about header strings Doxygen generates in a man file.
+#
+
+def nextheader(text,index)
+  header = text[index+1..text.size].find{|i| i =~ /\.S(S|H)/} 
+  return header
+  end
+
+grouptext = open($sampledir+"SampleGroup.3","r").readlines.reverse
+
+fd = grouptext.index(grouptext.find{|i| i =~ /SampleFunction/})
+$fdheader = nextheader(grouptext,fd)
+
+restofthetext =  grouptext[fd+1..grouptext.size]
+
+fl = restofthetext.index(restofthetext.find{|i| i =~ /SampleFunction/})
+$flheader = nextheader(restofthetext,fl)
+
+dd = grouptext.index(grouptext.find{|i| i =~ /long group document/})
+$ddheader = nextheader(grouptext,dd)
+
+####
+structext = open($sampledir+"SampleStructure.3","r").readlines.reverse
+
+fieldd = structext.index(structext.find{|i| i =~ /SampleField/})
+$fielddheader = nextheader(structext,fieldd)
 
-currentdir = Dir.pwd
-doxywork = currentdir+"doxywork"+usr_dev_ja+"man3"
-doxyman3 = currentdir+usr_dev_ja+"man/man3"
-doxyman3m = currentdir+usr_dev_ja+"man/man3m"
+restofstructext =  structext[fieldd+1..structext.size]
 
-headertexts = open("doxyhead.txt","r").readlines
- $fdheader = headertexts[0]
- $flheader = headertexts[1]
- $ddheader = headertexts[2]
- $fielddheader = headertexts[3]
- $fieldlheader = headertexts[4]
+fieldl = restofstructext.index(restofstructext.find{|i| i =~ /SampleField/})
+$fieldlheader = nextheader(restofstructext, fieldl)
+
+#
+# Main work
+#
 
 ####  to find data structure documentation files and rewriting them 
 
@@ -45,7 +84,7 @@ def  writedocumentation(buf, text, index)
 
 def datastructure(struct)
 
-   text = open(struct.concat(".3"),"r").readlines
+   text = open(struct.concat(".3m"),"r").readlines
 
    buf = []
 
@@ -90,12 +129,12 @@ def datastructure(struct)
    end
 
 # data fields
-    if dfline = text.index($fieldlheader)
-       buf.push("\\fBData Fields:\\fP\n")
-       nl = dfline + 1 
-       writeuntilsectionheader(buf, text, nl)
-       buf.push(".PP\n")
-   end
+#    if dfline = text.index($fieldlheader)
+#       buf.push("\\fBData Fields:\\fP\n")
+#       nl = dfline + 1 
+#       writeuntilsectionheader(buf, text, nl)
+#       buf.push(".PP\n")
+#   end
 
 # field documentation
    if fdline = text.index($fielddheader)
@@ -119,19 +158,22 @@ end
 
 def documentfunc2 (dstart, title, func_text, short_text)
  #func_text¤ÎºÇ½é¤Î¹ÔÃæ¤Î´Ø¿ô̾
+
    dstart =~ /\s([a-z_]+)\s\(/
    return if $1 == nil
    fname = $1
+
    ffname = "\\fB".concat($1.concat("\\fP"))
  #short_text¤Î´Ø¿ô̾¤Î£²¹Ô¸å¤¬brief¡£
    brief =  short_text[short_text.index(short_text.find{|i| i.index(ffname)}) + 2]
  #´Ø¿ô¤´¤È¤Î¥Õ¥¡¥¤¥ë¤òºî¤ë¡£
-   file = open(doxywork+fname+".3", "w")
+   file = open($doxywork+fname+".3m", "w")
    file.puts("@function")
  #¥Ø¥Ã¥À
    /^\.TH \"([^"]*)\"\s/ =~ title
    oname = $1
-   newtitle = title.gsub(oname, fname.chop.chop)
+##?????   newtitle = title.gsub(oname, fname.chop.chop)
+   newtitle = title.gsub(oname, fname)
    file.puts(newtitle)
  #@brief
    file.print("@brief ") 
@@ -334,11 +376,9 @@ end
 
 #############################dividing files
 
-Dir.mkdir "doxywork/man3" unless FileTest.directory? "doxywork/man3"
-Dir.mkdir "man" unless FileTest.directory? "man"
-Dir.mkdir "man/man3m" unless FileTest.directory? "man/man3m"
+Dir.mkdir $doxywork unless FileTest.directory? $doxywork
 
-Dir.chdir("usr/man/man3")
+Dir.chdir($srcman3)
 
 Dir.open(".").each{|filename|
      if FileTest.directory? filename 
@@ -382,16 +422,18 @@ Dir.open(".").each{|filename|
   
   end
    
-  filetowrite = open("../../../doxywork/man3/".concat(filename),"w")
-  print "filetowrite=", filetowrite
+  filetowrite = open($doxywork+filename,"w")
   filetowrite.puts(group_text)
   filetowrite.flush
 }
 
-Dir.chdir(currentdir)
 #############################rewriting files
 
-Dir.chdir("doxywork/man3")
+Dir.chdir($dstman3m)
+
+Dir.open(".").each{|f|  File.delete(f) if FileTest.file?(f)}
+
+Dir.chdir($doxywork)
 
 Dir.open(".").each{|filename|
 unless FileTest.directory? filename
@@ -406,14 +448,9 @@ unless FileTest.directory? filename
     else buf = orewrite(text)
  end
 
-  filetowrite = open("../../man/man3m/".concat(filename).concat("m"),"w")
+  filetowrite = open($dstman3m+filename,"w")
   filetowrite.puts(buf)
   filetowrite.flush
 
 end
 }
-
-
-# Dir.chdir("/tmp/doxyman")
-
-# Dir.open(".").each{|f|  File.delete(f) if FileTest.file?(f)}