[squeak-dev] Squeak 6.0 alpha-20601 browsing revisions fails        because of wrong class of requestor

gettimothy gettimothy at zoho.com
Tue Sep 14 12:25:32 UTC 2021

I have created a stub PragmasHelp up at 'https://www.squeaksource.com/Doc'

I created it using Emacs Org mode and the super-beta DocOrgToCustomHelp  tool  which I will be figuring out how to include the dependencies for it later today.

DocOrgToCustomHelp viewFromFileChooser.

DocOrgToCustomHelp createFromFileChooser.

Creating content is a breeze..no need to program.

Below is the Markup for the PragmasHelp copied-n-pasted from Emacs. (Pillar style Markdown etc, will be in the pipeline...I gotta learn  (and Docuument with this handy-dandy tool !) the big XML package first.

If you want to edit in-line via email, I will be happy to update the PragmasHelp and upload it to Doc.



*  Pragmas [PragmasHelp]

** Overview

Many see pragmas as labels.  But they are executable.  With pragmas, to label is human, to execute is divine.

This is Eliot Miranda's comments on Pragmas from an email exchange on Squeak-Dev 


  put code  or text that might be missed by the parser in between these example blocks.

  It is perfectly fine to put an entire page between them if you want


** Pragma Basics


** Pragma Uses


** A Pattern that Works [patternthatworks]

1. Create a builder object that understnds the pragma(s) in question

2. Visit the method(s) implementing the pragma

3. Send the pragma to the builder

** How Pragmas for Menus Should Be Done [pragmaformenus]

1. Give the base menu to a menudecorator builder which is parameterized with the name of the menu and class(es) involved in the menu.

2. Have the menu decorator builder visit the relevant pragma methods in the class(es)

3. Use the resulting decorated menu.

** Pragmas in Senders Of  [senders]

discusson of the code behind the 'Senders' button on the Browser

** Pragmas in Xtreams-Parsing  [PragmasXtreamsParsingHelp]

*** Associate a PEG Grammar Rule with a callback [xtreamscallbacks]

In the XTreams-parsing application that processes this document, we use a Pragma to associate a callback with one or more grammar rules.


The rules that handle '** Stuff Like This [optionalselector]...' handle 1 to eight '*' and are defined below.

HeadlineItem1 	<- ^STAR{1} s HeadLineText  Paragraph*

HeadlineItem2 	<- ^STAR{2} s HeadLineText  Paragraph*

HeadlineItem3	<- ^STAR{3} s HeadLineText  Paragraph*

HeadlineItem4	<- ^STAR{4} s HeadLineText  Paragraph*

HeadlineItem5	<- ^STAR{5} s HeadLineText  Paragraph*

HeadlineItem6	<- ^STAR{6} s HeadLineText  Paragraph*

HeadlineItem7	<- ^STAR{7} s HeadLineText  Paragraph*

HeadlineItem8	<- ^STAR{8} s HeadLineText  Paragraph*


When the parser matches a pattern, we can associate a callback that will be executed when the match occurs.

Below is the callback for the HeadlineItem rules above.


HeadlineItem:  starOrderedCollection topic: aHelpTopic content: anOrderedCollection

<action: 'HeadlineItem1' arguments: #(2 4 5)>

<action: 'HeadlineItem2' arguments: #(2 4 5)>

<action: 'HeadlineItem3' arguments: #(2 4 5)>

<action: 'HeadlineItem4' arguments: #(2 4 5)>

<action: 'HeadlineItem5' arguments: #(2 4 5)>

<action: 'HeadlineItem6' arguments: #(2 4 5)>

<action: 'HeadlineItem7' arguments: #(2 4 5)>

<action: 'HeadlineItem8' arguments: #(2 4 5)>

|ht  index ios |

index := starOrderedCollection size.

ht := aHelpTopic.

ios := (String streamContents:

[ : stream |

paragraphcache do:[:each |

stream nextPutAll: each.


ht contents: (ios contents).

ht priority: index.

(helptopiccache at: index) addLast: ht.

paragraphcache := OrderedCollection new.

transcripton ifTrue:[Transcript show:'HeadlineItem', (index asString) , '->' , (ht key);cr.	].



Note that more than one Pragma can be placed in a callback. And that this one method handles all the rules.

In Xtreams-Parsing, look at any of the subclasses of PEGActor for the callbacks.

To see the Grammars for those callbacks, look at the class side of PEGParser.

** Common Methods  [commonmethods]


perform: withArguments:







-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210914/7b4305b7/attachment.html>

More information about the Squeak-dev mailing list