<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt;"><div>I am looking at a CustomHelp topic with subtopics created on-the-fly against a emacs .org file using a PEGGramamr and the Xtreams-Parsing tools.</div><div><br></div><div>totally psyched!</div><div><br></div><pre style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><div>MCHttpRepository<br></div><div>    location: '<a target="_blank" href="http://www.squeaksource.com/Doc">http://www.squeaksource.com/Doc</a>'<br></div><div>    user: 'tty'<br></div><div>    password: ''<br></div></pre><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div><div>Stage commit.<br></div><div><br></div><div>I can select a (modifed) TerseGuide.org file  with the Filechooser and parse it and display it directly in the HelpBrowser.<br></div><div><br></div><div>The modification required is standard ORG mode markup.<br></div><div><br></div><div>of<br></div><div><br></div><div>#+BEGIN_EXAMPLE<br></div><div>foo bar biz<br></div><div>#+END_EXAMPLE<br></div><div><br></div><div>I think I will make this standard on output.<br></div></div></blockquote><div>There are some bugs (HelpOnHelp ouptut goes into an infinite loop, MetacelloConfigurationHelp bombs out) but a simple working example is:<br></div><div><br></div><div>DocCustomHelpToOrg toFile: SqueakCorePackagesHelp<br></div><div>That creates a SqueakCorePackages.org file which works in Emacs...<br></div><div><br></div><div>To view that file in the HelpBrowser...<br></div><div>DocOrgToCustomHelp fromFileChooser<br></div><div><br></div><div><br></div><div>Now...an immediate change I will be making is to wrap all content in <br></div><div><br></div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div><div>#+BEGIN_EXAMPLE<br></div><div><br></div><div>#+END_EXAMPLE<br></div><div><br></div></div></blockquote><div><br></div><div><br></div><div>The reason being is that the TerseGuide -> General  Allowable Characters blows up the parser...<br></div><div><br></div><div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div>Allowable characters:<br></div><div>    - a-z<br></div><div>    - A-Z<br></div><div>    - 0-9<br></div><div>    - .+/\*~<>@%|&?<br></div><div>    - blank, tab, cr, ff, lf<br></div></blockquote><div><br></div></div><div>But if I wrap all the content of the TerseGuide in that markup, it works.<br></div><div><br></div><div><br></div><div>So...<br></div><div><br></div><div>next stages are:<br></div><div><br></div><div>Wrap content as noted above.<br></div><div>Write a DocCustomHelp.org manual and import that into the HelpBrowser.<br></div><div>Then, dynamically create the CustomHelp classes ...<br></div><div><br></div><div>At that point, I will have a tool I can use as I study the XML package and write my notes in Org format for later documentation</div><div><br></div><div><br></div><div>The grammar looks like this:<br></div><div><br></div><div><blockquote style="border: 1px solid rgb(204, 204, 204); padding: 7px; background-color: rgb(245, 245, 245);"><div>grammarORG<br></div><div><br></div><div>"describe very basic Emacs Org-mode .org files<br></div><div><br></div><div>No advanced features or markup of ORg is supported.<br></div><div><a target="_blank" href="https://orgmode.org/manual">https://orgmode.org/manual</a><br></div><div><br></div><div>2021.09.06 The purpose of this grammar is to take a simple Org file and convert it to CustomHelp format<br></div><div><br></div><div>"<br></div><div><br></div><div><br></div><div>^'<br></div><div>Org                  <- (HeadlineGroup)+<br></div><div><br></div><div>HeadlineGroup <- HeadlineGroup8 / HeadlineGroup7 / HeadlineGroup6 / HeadlineGroup5 / HeadlineGroup4 / HeadlineGroup3 / HeadlineGroup2 / HeadlineGroup1<br></div><div><br></div><div>/* these map to CustomHelpTopic pages */<br></div><div><br></div><div>HeadlineGroup1 <- (HeadlineItem1 HeadlineGroup2* )+<br></div><div>HeadlineGroup2 <- (HeadlineItem2 HeadlineGroup3* )+<br></div><div>HeadlineGroup3 <- (HeadlineItem3 HeadlineGroup4* )+<br></div><div>HeadlineGroup4 <- (HeadlineItem4 HeadlineGroup5* )+<br></div><div>HeadlineGroup5 <- (HeadlineItem5 HeadlineGroup6* )+<br></div><div>HeadlineGroup6 <- (HeadlineItem6 HeadlineGroup7* )+<br></div><div>HeadlineGroup7 <- (HeadlineItem7 HeadlineGroup8* )+<br></div><div>HeadlineGroup8 <- HeadlineItem8+<br></div><div><br></div><div>HeadlineItem1   <- ^STAR{1} s HeadLineText  Paragraph*<br></div><div>HeadlineItem2    <- ^STAR{2} s HeadLineText  Paragraph*<br></div><div>HeadlineItem3    <- ^STAR{3} s HeadLineText  Paragraph*<br></div><div>HeadlineItem4    <- ^STAR{4} s HeadLineText  Paragraph*<br></div><div>HeadlineItem5    <- ^STAR{5} s HeadLineText  Paragraph*<br></div><div>HeadlineItem6    <- ^STAR{6} s HeadLineText  Paragraph*<br></div><div>HeadlineItem7    <- ^STAR{7} s HeadLineText  Paragraph*<br></div><div>HeadlineItem8    <- ^STAR{8} s HeadLineText  Paragraph*<br></div><div><br></div><div><br></div><div><br></div><div>/* Headlines */<br></div><div>HeadlineFlow          <- Pagename / Classname         / [\s]    /  DotNot<br></div><div>HeadLineText         <- HeadlineFlow{( Pagename / Classname  / !.  )}<br></div><div>Pagename        <- "[" [a-z][a-zA-Z0-9]* "]"<br></div><div>Classname        <- "[" [A-Z][a-zA-Z0-9]* "]"<br></div><div><br></div><div><br></div><div>/* Paragraph */<br></div><div><br></div><div>Paragraph                  <- EndOfLine+ ParagraphFlow{(Paragraph /   EndOfLine+ /    !. )}   /* this consumes extra EndOfLines after a paragraph. */<br></div><div>ParagraphFlow          <-   OrgLiteralExample / [^\*]<br></div><div><br></div><div>/* Org Literal Examples */<br></div><div><br></div><div>OrgLiteralExample        <-   "#+BEGIN_EXAMPLE"  .{"#+END_EXAMPLE"}<br></div><div><br></div><div><br></div><div><br></div><div>/* Primals  (cut-n-paste from elsewhere*/<br></div><div><br></div><div><br></div><div>s                                  <-   S*                     /* s is zero or more whitespace */<br></div><div>S                                 <-   whitespace+   /* S is one or more whitespace */<br></div><div>whitespace                    <-   [\s\t]<br></div><div>EndOfLine                        <- "\n\r\t" / "\n\t" / "\r\t"  / "\n\r" / "\n" / "\r"                    /* CRLF or CR or LF  (and some with an extra tab, as a hack*/<br></div><div>Identifier                       <-   [a-zA-Z0-9_]*<br></div><div>STAR                              <-   "*"<br></div><div><br></div><div><br></div><div><br></div><div>/*Unicode ranges allowed. Replaces the "." rule */<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>DotNot                               <-   [\x000020-\X00005A\x00005C\x00005E-\x00007F]<br></div><div><br></div><div><br></div><div>'<br></div><div><br></div><div>"\x000020-\x0000005C\x00005E-\x00007B\x00007D-\x00007F  all of Basic Latin except for<br></div><div>Character value: 16r00005B  [<br></div><div>Character value: 16r00005D  ] <br></div><div>Character value: 16r00007B  {<br></div><div>Character value: 16r00007C  |<br></div><div>Character value: 16r00007D  }<br></div><div>Character value: 16r00007F   Character delete<br></div><div><br></div><div><br></div><div>DotNot                         <-   [\x000000-\x000029\\x00002B-\x00005A\x00005C\x00005E-\x00007A\x00007E\x0000A0-\x0000FF\x000100-\x00017F\x000180-\x00024F\x000300-\x00036F\x000370-\x0003FF\x000400-\x0004FF\x000500-\x00052F\x001E00-\x001EFF\x002000-\x00206F\x002070-\x00209F\x0020A0-\x0020CF\x002150-\x00218F\x002190-\x0021FF\x002200-\x0022FF\x002300-\x0023FF\x002580-\x00259F\x0025A0-\x0025FF\x002600-\x0026FF\x002700-\x0027BF\x0027C0-\x0027EF\x0027F0-\x0027FF\x002900-\x00297F\x002980-\x0029FF\x002A00-\x002AFF\x002B00-\x002BFF ]<br></div><div><br></div><div><br></div><div>"<br></div></blockquote><div><br></div></div><div><br></div></div><br></body></html>