December 04, 2020, 11:44:06 AM

Author Topic: [bmx] Get online doc examples by markcw [ 1+ years ago ]  (Read 542 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Get online doc examples by markcw [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : Get online doc examples
Author : markcw
Posted : 1+ years ago

Description : This adds code from the Blitzmax online manual to the Brl and Pub module docs.

The code takes a few minutes to run through getting the examples from the website. It creates a local copy of the Modules folder where you run the file from.
If you want to update it you need to delete or rename the Modules folder. There is also a log file to remind you what was added.

Rebuild docs will remove the code examples but you can just run this again and if it has the local copy it won't download anything, it will just use the local copy.
You can run this file anywhere in your Blitzmax directory.

The way it works is, if there is an example in the docs already it won't add another one. If the online manual has an official entry it will be chosen,
and if there is an example from the comments section it chooses the first one in the most recent post, this way improvements can be made on existing code.

Oct 2014: updated to treat any text above selected code as about/comment. A char limit of 500 is there to prevent entries that are very long.


Code :
Code: BlitzMax
  1. ' Get online doc examples.bmx
  2.  
  3. SuperStrict
  4.  
  5. TGetHttpCode.FindAll()
  6.  
  7. End
  8.  
  9. ' Gets code examples from the online manual and adds them to the docs
  10. Type TGetHttpCode
  11.  
  12.         Global filei%,files$[1000],mdir$,aboutlimit%=500
  13.        
  14.         Function FindAll()
  15.        
  16.                 mdir=FindDocs()
  17.                
  18.                 If FileType("Modules")=0 ' no modules folder
  19.                         Print "Creating Modules folder"
  20.                         HttpFindFiles(mdir) ' get online examples
  21.                 Else
  22.                         Print "Modules folder already exists"
  23.                 EndIf
  24.                
  25.                 CodeFindFiles("Modules") ' copy files
  26.                
  27.                 CodeSaveFuncs()
  28.                
  29.                 HtmlFindFiles(mdir) ' add to html files
  30.                
  31.         End Function
  32.        
  33.         Function FindDocs$()
  34.        
  35.                 Local wdir$=CurrentDir()+"/" ' find the docs
  36.                 Local ldir$=wdir.Tolower() ' lowercase
  37.                 Local bms%=ldir.Find("blitzmax",0) ' bmax start
  38.                 If bms=-1 RuntimeError "Failed to find blitzmax directory e1"
  39.                
  40.                 Local bme%=ldir.Find("/",bms) ' bmax end
  41.                 Return wdir[..bme]+"/docs/html/Modules" ' modules dir
  42.                
  43.         End Function
  44.        
  45.         ' part 1: get code from http files
  46.        
  47.         Function HttpFindFiles(dir$)
  48.        
  49.                 Local dh%=ReadDir(dir)
  50.                 If Not dh RuntimeError "failed to read current directory e2"
  51.        
  52.                 Repeat
  53.                         Local temp$=NextFile(dh)
  54.                         If temp="" Then Exit ' done
  55.                         If temp="." Or temp=".." Continue ' skip
  56.                         Local cfile$=dir+"/"+temp ' current file
  57.                         If FileType(cfile)=2 Then HttpFindFiles2(cfile) ' directory
  58.                 Forever
  59.        
  60.                 CloseDir dh
  61.                
  62.         End Function
  63.  
  64.         Function HttpFindFiles2(dir$)
  65.        
  66.                 Local dh%=ReadDir(dir)
  67.                 If Not dh RuntimeError "failed to read current directory e3"
  68.        
  69.                 Repeat
  70.                         Local temp$=NextFile(dh)
  71.                         If temp="" Then Exit ' done
  72.                         If temp="." Or temp=".." Continue ' skip
  73.                         Local cfile$=dir+"/"+temp ' current file
  74.                         If FileType(cfile)=2 Then HttpFindFiles3(cfile) ' directory
  75.                 Forever
  76.                
  77.                 CloseDir dh
  78.                
  79.         End Function
  80.  
  81.         Function HttpFindFiles3(dir$)
  82.        
  83.                 Local dh%=ReadDir(dir)
  84.                 If Not dh RuntimeError "failed to read current directory e4"
  85.        
  86.                 Repeat
  87.                         Local temp$=NextFile(dh)
  88.                         If temp="" Then Exit ' done
  89.                         If temp="." Or temp=".." Continue ' skip
  90.                         Local cfile$=dir+"/"+temp ' current file
  91.                         If FileType(cfile)=1 ' file, html
  92.                                 If ExtractExt(cfile)="html" Then HttpOpenHtml(cfile)
  93.                         EndIf
  94.                 Forever
  95.                
  96.                 CloseDir dh
  97.                
  98.         End Function
  99.  
  100.         Function HttpOpenHtml(path$)
  101.        
  102.                 Local file:TStream=OpenFile(path)
  103.                 If Not file RuntimeError "could not open html file e5"
  104.  
  105.                 While Not Eof(file)
  106.                
  107.                         Local html$=ReadString(file,FileSize(path))
  108.                         Local html2$,link$,code$
  109.                         Local fr%=html.Find("Function reference",0)
  110.                         Local fts%=fr,fbs%,fen%,fte%,fbe%
  111.                        
  112.                         If fr>0 ' file has functions
  113.                         Print "Reading: "+path[mdir.length+1..path.Find("index.html",mdir.length)-1]
  114.                        
  115.                                 While fts>-1 ' while functions in file
  116.                                         fts=html.Find("colspan=2>Function ",fts+1)
  117.                                        
  118.                                         If fts>0
  119.                                        
  120.                                                 fts:+19 ' to function name
  121.                                                 fbs=html.Find("(",fts) ' bracket start
  122.                                                 fte=html.Find("</td>",fts) ' table end
  123.                                                 fen=html[fts..fbs].Find(":",0) ' type (end of func name)
  124.                                                 If fen>0 Then fbs=fts+fen
  125.                                                 fen=html[fts..fbs].Find("[",0) ' array
  126.                                                 If fen>0 Then fbs=fts+fen
  127.                                                 fen=html[fts..fbs].Find("$",0) ' string
  128.                                                 If fen>0 Then fbs=fts+fen
  129.                                                 fen=html[fts..fbs].Find("#",0) ' float
  130.                                                 If fen>0 Then fbs=fts+fen
  131.                                                 fen=html[fts..fbs].Find("!",0) ' double
  132.                                                 If fen>0 Then fbs=fts+fen
  133.                                                 fen=html[fts..fbs].Find("_",0)
  134.                                                
  135.                                                 If fen=-1 ' not a lua_func
  136.                                                         fen=html[fts..fbs].Find(" ",0) ' trim spaces
  137.                                                         If fen>0 Then fbs=fts+fen
  138.                                                         Local func$=html[fts..fbs] ' get func name
  139.                                                         fbe=html[fts..fte].Find("NoDebug",0) ' bracket end or nodebug
  140.                                                         If fbe=-1 Then fbe=html[fts..fte].FindLast(")",0) Else fbe:+6
  141.                                                         fbe:+fts+1
  142.                                                         link="http::www.blitzmax.com/bmdocs/command.php?name="+func+"&ref=goto"
  143.                                                         code=HttpOpen(link,func)
  144.                                                         If code.length>0 Then HttpSaveCode(path,func,code)
  145.                                                 EndIf
  146.                                                
  147.                                         EndIf
  148.                                        
  149.                                 Wend
  150.                                
  151.                         EndIf
  152.                        
  153.                 Wend
  154.                
  155.                 CloseStream file
  156.                
  157.         End Function
  158.  
  159.         Function HttpOpen$(url$,func$)
  160.        
  161.                 Local in:TStream=ReadStream(url)
  162.                 If Not in RuntimeError "Failed to open a ReadStream to http file e6"
  163.                
  164.                 Local http$
  165.                 While Not Eof(in)
  166.                         http:+ReadLine(in)+"~n"
  167.                 Wend
  168.                
  169.                 Local user$,code$,about$
  170.                 Local tmp%,cs%,ps%,ai%,opf%,pe%,ui%,tmp2%,gt%,cu%,cc%,nc%
  171.                 Local paf%[1000],ua%[1000],pa%[1000]
  172.                
  173.                 Print func
  174.                 ps=0
  175.                 While ps>-1
  176.                         ps=http.Find("<pre class=code>",ps+1)
  177.                         If ps>0 Then  pa[ai]=ps ; ai:+1 ' pre array
  178.                 Wend
  179.                
  180.                 ps=0
  181.                 While ps>-1
  182.                         ps=http.Find("<textarea class=codebox ",ps+1)
  183.                         If ps>0 Then pa[ai]=ps ; ai:+1
  184.                 Wend
  185.                
  186.                 ps=0
  187.                 While ps>-1
  188.                         ps=http.Find("<td class="+Chr(34)+"posthead"+Chr(34)+">",ps+1)
  189.                         If ps>0 Then  ua[ui]=ps ; ui:+1 ' username array
  190.                 Wend
  191.                
  192.                 For tmp=0 To ai-1
  193.                         If pa[tmp]<cs Then opf=pa[tmp] ; Exit ' official pre found
  194.                 Next
  195.                
  196.                 If opf ' official pre
  197.                         pe=http.Find("</pre>",opf)
  198.                         code=http[opf+16..pe].Trim() ' get the code
  199.                        
  200.                         CloseStream in
  201.                         Return code
  202.                 EndIf
  203.                
  204.                 ua[ui]=-1 ' last user
  205.                 For tmp=0 To ai-1
  206.                         For tmp2=0 To ui-1
  207.                                 If tmp2=ui-1 Then gt=pa[tmp]+1 Else gt=ua[tmp2+1] ' greater
  208.                                 If pa[tmp]>ua[tmp2] And pa[tmp]<gt ' pre between these values
  209.                                         cu=ua[tmp2] ' user
  210.                                         If paf[tmp2]=0 Then cc=pa[tmp] ; paf[tmp2]=cc ' last user with first code example
  211.                                 EndIf
  212.                         Next
  213.                 Next
  214.                
  215.                 If cu=0 And cc=0 ' no code examples
  216.                         ps=0
  217.                         While ps>-1
  218.                                 ps=http.Find("<td class="+Chr(34)+"posttext"+Chr(34)+">",ps+1) ' last comment
  219.                                 If ps>0 Then nc=ps
  220.                         Wend
  221.                        
  222.                         tmp=http.Find("</td></tr>",nc+21)
  223.                         If tmp>0 And nc>0 ' found comment
  224.                                 code="Rem~n"+http[nc+21..tmp]+"~nEndRem~n"
  225.                                 code:+"' "+func.Tolower()+".bmx ()"
  226.                                 If code.length<20 Or code.length>aboutlimit Then code="" ' ignore
  227.                         EndIf
  228.                        
  229.                         CloseStream in
  230.                         Return code
  231.                 EndIf
  232.                
  233.                 ps=http.Find("<td >",cu) ' get username
  234.                 tmp=http[ps..ps+9].Find("<a href=",0) ' check for link
  235.                 If tmp>-1 Then ps=http.Find("</a>",tmp)
  236.                 tmp2=http.Find("</td>",ps)
  237.                 user=http[ps+5..tmp2]
  238.                
  239.                 tmp=http.Find("<td class="+Chr(34)+"posttext"+Chr(34)+">",cu) ' get about text
  240.                 tmp2=http.Find(">",tmp)+1
  241.                 about="Rem~n"+http[tmp2..cc]+"~nEndRem~n"
  242.                 If about.length<20 Or about.length>aboutlimit Then about="" ' ignore
  243.                
  244.                 tmp=http[cc..cc+9].Find("<pre ",0) ' get example
  245.                 If tmp=-1 Then pe=http.Find("</textarea>",cc) Else pe=http.Find("</pre>",cc)
  246.                 tmp2=http.Find(">",cc)+1
  247.                 code=http[cc..pe].Trim()
  248.                 tmp=code.Find("~n",0)
  249.                 If tmp2>-1 Then code=code[tmp..].Trim()
  250.                 tmp2=code.Find(".bmx",0)
  251.                 code=about+"' "+func.Tolower()+".bmx ("+user+")~n~n"+code
  252.                
  253.                 CloseStream in
  254.                 Return code
  255.                
  256.         End Function
  257.  
  258.         Function HttpSaveCode(path$,func$,code$)
  259.        
  260.                 Local success%,fs%,fs2%,file:TStream
  261.                 Local lpath$,ldir2$,ldir3$,ldir$
  262.                
  263.                 ldir="Modules"
  264.                 If FileType(ldir)=0
  265.                         success=CreateDir(ldir)
  266.                         If Not success RuntimeError "error creating directory e7"
  267.                 EndIf
  268.                
  269.                 fs=path.Find("/",mdir.length+1) ' directory level 2
  270.                 ldir2=ldir+path[mdir.length..fs]
  271.                 If FileType(ldir2)=0
  272.                         success=CreateDir(ldir2)
  273.                         If Not success RuntimeError "error creating directory e8"
  274.                 EndIf
  275.                
  276.                 fs2=path.Find("/",fs+1) ' directory level 3
  277.                 ldir3=ldir+path[mdir.length..fs]+path[fs..fs2]
  278.                 If FileType(ldir3)=0
  279.                         success=CreateDir(ldir3)
  280.                         If Not success RuntimeError "error creating directory e9"
  281.                 EndIf
  282.                
  283.                 lpath=ldir+path[mdir.length..fs]+path[fs..fs2]+"/"+func.Tolower()+".bmx" ' local file path
  284.                 file=WriteFile(lpath)
  285.                 If Not file RuntimeError "failed to open file e10"
  286.                 WriteLine file,code
  287.                 CloseStream file
  288.                
  289.         End Function
  290.  
  291.         ' part 2: copy local files to docs/html
  292.        
  293.         Function CodeFindFiles(dir$)
  294.        
  295.                 Local dh%=ReadDir(dir)
  296.                 If Not dh RuntimeError "failed to read current directory e11"
  297.        
  298.                 Repeat
  299.                         Local temp$=NextFile(dh)
  300.                         If temp="" Then Exit ' done
  301.                         If temp="." Or temp=".." Continue ' skip
  302.                         Local cfile$=dir+"/"+temp ' current file
  303.                         If FileType(cfile)=2 Then CodeFindFiles2(cfile) ' directory
  304.                 Forever
  305.        
  306.                 CloseDir dh
  307.                
  308.         End Function
  309.  
  310.         Function CodeFindFiles2(dir$)
  311.        
  312.                 Local dh%=ReadDir(dir)
  313.                 If Not dh RuntimeError "failed to read current directory e12"
  314.        
  315.                 Repeat
  316.                         Local temp$=NextFile(dh)
  317.                         If temp="" Then Exit ' done
  318.                         If temp="." Or temp=".." Continue ' skip
  319.                         Local cfile$=dir+"/"+temp ' current file
  320.                         If FileType(cfile)=2 Then CodeFindFiles3(cfile) ' directory
  321.                 Forever
  322.                
  323.                 CloseDir dh
  324.                
  325.         End Function
  326.  
  327.         Function CodeFindFiles3(dir$)
  328.        
  329.                 Local ddir$,temp$,code$,file:TStream
  330.                 Local dh%,fp%,cf%,re%
  331.                
  332.                 dh=ReadDir(dir)
  333.                 If Not dh RuntimeError "failed to read current directory e13"
  334.                
  335.                 Repeat
  336.                         temp=NextFile(dh)
  337.                         If temp="" Then Exit ' done
  338.                         If temp="." Or temp=".." Continue ' skip
  339.                         Local cfile$=dir+"/"+temp ' current file
  340.                         fp=cfile.Find("/",0)
  341.                         ddir=mdir+cfile[fp..]
  342.                        
  343.                         If FileSize(ddir)=-1 ' file, bmx
  344.                                 files[filei]=cfile ' store local file path
  345.                                 filei:+1
  346.                                
  347.                                 code=HtmlReadCode(cfile)
  348.                                 cf=code.Find(".bmx (",0) ' if comment file
  349.                                 If cf>0 ' strip rem
  350.                                         re=code.Find("EndRem",0)
  351.                                         If re>0 And re<cf
  352.                                                 code=code[re+8..]
  353.                                         EndIf
  354.                                 EndIf
  355.                                
  356.                                 cf=code.Find(".bmx ()",0) ' blank user=comment but no code
  357.                                 If cf=-1
  358.                                         file=WriteFile(ddir) ' copy from local to docs/html
  359.                                         If Not file RuntimeError "failed to open file e14"
  360.                                         WriteLine file,code
  361.                                         CloseStream file
  362.                                 EndIf
  363.                         EndIf
  364.                        
  365.                 Forever
  366.                
  367.                 CloseDir dh
  368.                
  369.         End Function
  370.  
  371.         Function CodeSaveFuncs()
  372.        
  373.                 Local fi%,file:TStream
  374.                
  375.                 If FileSize("Modules/log.txt")=-1 ' file doesn't exist
  376.                         file=WriteFile("Modules/log.txt")
  377.                         If Not file RuntimeError "failed to open file e15"
  378.                        
  379.                         For fi=0 To filei-1 ' file index
  380.                                 WriteLine file,files[fi]
  381.                         Next
  382.                         CloseStream file
  383.                 EndIf
  384.                
  385.         End Function
  386.        
  387.         ' part 3: add code examples to docs/html
  388.        
  389.         Function HtmlFindFiles(dir$)
  390.        
  391.                 Local dh%=ReadDir(dir)
  392.                 If Not dh RuntimeError "failed to read current directory e16"
  393.        
  394.                 Repeat
  395.                         Local temp$=NextFile(dh)
  396.                         If temp="" Then Exit ' done
  397.                         If temp="." Or temp=".." Continue ' skip
  398.                         Local cfile$=dir+"/"+temp ' current file
  399.                         If FileType(cfile)=2 Then HtmlFindFiles2(cfile) ' directory
  400.                 Forever
  401.        
  402.                 CloseDir dh
  403.                
  404.         End Function
  405.  
  406.         Function HtmlFindFiles2(dir$)
  407.        
  408.                 Local dh%=ReadDir(dir)
  409.                 If Not dh RuntimeError "failed to read current directory e17"
  410.        
  411.                 Repeat
  412.                         Local temp$=NextFile(dh)
  413.                         If temp="" Then Exit ' done
  414.                         If temp="." Or temp=".." Continue ' skip
  415.                         Local cfile$=dir+"/"+temp ' current file
  416.                         If FileType(cfile)=2 Then HtmlFindFiles3(cfile) ' directory
  417.                 Forever
  418.                
  419.                 CloseDir dh
  420.                
  421.         End Function
  422.  
  423.         Function HtmlFindFiles3(dir$)
  424.        
  425.                 Local dh%=ReadDir(dir)
  426.                 If Not dh RuntimeError "failed to read current directory e18"
  427.        
  428.                 Repeat
  429.                         Local temp$=NextFile(dh)
  430.                         If temp="" Then Exit ' done
  431.                         If temp="." Or temp=".." Continue ' skip
  432.                         Local cfile$=dir+"/"+temp ' current file
  433.                         If FileType(cfile)=1 ' file, html
  434.                                 If ExtractExt(cfile)="html" Then HtmlOpenHtml(cfile)
  435.                         EndIf
  436.                 Forever
  437.                
  438.                 CloseDir dh
  439.                
  440.         End Function
  441.  
  442.         Function HtmlOpenHtml(path$)
  443.        
  444.                 Local html$,html2$,code$,row$,about$,info$
  445.                 Local file:TStream=OpenFile(path)
  446.                 If Not file RuntimeError "could not open html file e19"
  447.                
  448.                 While Not Eof(file)
  449.                
  450.                         html=ReadString(file,FileSize(path))
  451.                         Local fr%=html.Find("Function reference",0)
  452.                         Local fts%=fr
  453.                         Local fbs%,fen%,fte%,fls%,fep%,fer%,fet%,fri%,flr%,fhe%,fni%,fne%,fnt%,lnt%,fnf%,tmp%,tmp2%
  454.                        
  455.                         If fr>0 ' file has functions
  456.                         html2=html
  457.                        
  458.                                 While fts>-1 ' while functions in file
  459.                                         fts=html.Find("colspan=2>Function ",fts+1) ' table start
  460.                                        
  461.                                         If fts>0
  462.                                        
  463.                                                 fts:+19 ' to function name
  464.                                                 fbs=html.Find("(",fts) ' bracket start
  465.                                                 fte=html.Find("</td>",fts) ' table end
  466.                                                 fen=html[fts..fbs].Find(":",0) ' type (end name)
  467.                                                 If fen>0 Then fbs=fts+fen
  468.                                                 fen=html[fts..fbs].Find("[",0) ' array
  469.                                                 If fen>0 Then fbs=fts+fen
  470.                                                 fen=html[fts..fbs].Find("$",0) ' string
  471.                                                 If fen>0 Then fbs=fts+fen
  472.                                                 fen=html[fts..fbs].Find("#",0) ' float
  473.                                                 If fen>0 Then fbs=fts+fen
  474.                                                 fen=html[fts..fbs].Find("!",0) ' double
  475.                                                 If fen>0 Then fbs=fts+fen
  476.                                                 fen=html[fts..fbs].Find("_",0)
  477.                                                
  478.                                                 If fen=-1 ' not a lua_func
  479.                                                
  480.                                                         fen=html[fts..fbs].Find(" ",0) ' trim spaces
  481.                                                         If fen>0 Then fbs=fts+fen
  482.                                                         Local func$=html[fts..fbs] ' get func name
  483.                                                        
  484.                                                         For fni=0 To filei-1 ' new index
  485.                                                        
  486.                                                                 fls=files[fni].FindLast("/",0)+1 ' last slash
  487.                                                                 fep=files[fni].Find(".bmx",fls) ' extension pos
  488.                                                                
  489.                                                                 If files[fni][fls..fep]=func.Tolower()
  490.                                                                
  491.                                                                         fne=html.Find("<table class=doc ",fbs) ' next entry
  492.                                                                         If fne=-1 Then fne=html.Find("</body>",fbs)
  493.                                                                         fet=html.Find("</table>",fbs) ' end table
  494.                                                                        
  495.                                                                         fnt=fbs
  496.                                                                         For fri=0 To 3 ' last nested table
  497.                                                                                 lnt=fnt
  498.                                                                                 fnt=html.Find("<table>",fnt+1) ' nested table
  499.                                                                                 If fnt<fne And fnt>0 Then fnt=lnt ; Exit ' is nested
  500.                                                                         Next
  501.                                                                        
  502.                                                                         fnf=0
  503.                                                                         If fnt<fne And fnt>0 ' found nested table
  504.                                                                                 fet=html.Find("</table>",fnt)
  505.                                                                                 fnf=html.Find("</tr>",fet)
  506.                                                                                 fet=html.Find("</table>",fet)
  507.                                                                         EndIf
  508.                                                                        
  509.                                                                         fer=fbs ' end row
  510.                                                                         For fri=0 To 19 ' row index
  511.                                                                                 flr=fer ' last row
  512.                                                                                 fer=html.Find("</tr>",fer+1)
  513.                                                                                
  514.                                                                                 If fer>fet Or fer=-1
  515.                                                                                         flr:+5
  516.                                                                                         If fnf Then flr=fnf+5
  517.                                                                                         Exit
  518.                                                                                 EndIf
  519.                                                                         Next
  520.                                                                        
  521.                                                                         fhe=html.Find("Example</a>",fbs) ' has example 
  522.                                                                         If fhe=-1 Or fhe>fet ' no example found
  523.                                                                                 code=HtmlReadCode(files[fni])
  524.                                                                                 Print "Adding Examples: "+files[fni]
  525.                                                                                
  526.                                                                                 tmp=code.Find("EndRem",0) ' about text
  527.                                                                                 info="" ; about=""
  528.                                                                                 If tmp>-1
  529.                                                                                         about=code[4..tmp]
  530.                                                                                         tmp2=about.Find("<br>",about.length-6)
  531.                                                                                         If tmp2>-1 Then about=about[..tmp2] ' rm last br
  532.                                                                                        
  533.                                                                                         tmp2=0
  534.                                                                                         While tmp2>-1 ' rm blank link targets
  535.                                                                                                 tmp2=about.Find(" target="+Chr(34)+"_blank"+Chr(34),tmp2+1)
  536.                                                                                                 If tmp2>0 Then about=about[..tmp2]+about[tmp2+15..]
  537.                                                                                         Wend
  538.                                                                                        
  539.                                                                                         code=code[tmp+8..]
  540.                                                                                         If about.length>10
  541.                                                                                                 info="<tr><td class=docleft width=1%>Comment</td>"
  542.                                                                                                 info:+"<td class=docright>"+about+"</td></tr>"
  543.                                                                                         EndIf
  544.                                                                                 EndIf
  545.                                                                                
  546.                                                                                 row=info
  547.                                                                                 tmp=code.Find(".bmx ()",0) ' blank user=comment but no code
  548.                                                                                 If tmp=-1
  549.                                                                                         row:+"~n<tr><td class=docleft width=1%><a href="
  550.                                                                                         row:+Chr(34)+func.Tolower()+".bmx"+Chr(34)
  551.                                                                                         row:+">Example</a></td><td class=docright><pre>"
  552.                                                                                         row:+code+"</pre>~n</td></tr>"
  553.                                                                                 EndIf
  554.                                                                                 html2=html[..flr]+row+html[flr..]
  555.                                                                         EndIf
  556.                                                                        
  557.                                                                 EndIf
  558.                                                                
  559.                                                         Next
  560.                                                        
  561.                                                 EndIf
  562.                                                
  563.                                         EndIf
  564.                                         html=html2 ' update html
  565.                                 Wend
  566.                                
  567.                         EndIf
  568.                 Wend
  569.                
  570.                 SeekStream file,0 ' overwrite file
  571.                 WriteString file,html
  572.                 CloseStream file
  573.                
  574.         End Function
  575.  
  576.         Function HtmlReadCode$(path$)
  577.        
  578.                 Local file:TStream=ReadFile(path)
  579.                 If Not file RuntimeError "could not open bmx file e20"
  580.                
  581.                 Local code$=ReadString(file,FileSize(path))
  582.                
  583.                 CloseStream file
  584.                 Return code
  585.                
  586.         End Function
  587.  
  588. End Type


Comments :


markcw(Posted 1+ years ago)

 Just fixed a few bugs, nested tables and last entries on a page were not handled.


zoqfotpik(Posted 1+ years ago)

 Very nice.


markcw(Posted 1+ years ago)

 Thanks. I just updated this to add any text above a selected code as an about.


markcw(Posted 1+ years ago)

 Just updated again. Now it adds an about/comment even if there is no code, which is quite handy. It will select the last non-code comment on a page (so poor comments can be overwritten).


 

SimplePortal 2.3.6 © 2008-2014, SimplePortal