[squeak-dev] CustomHelpToOrg dev question.
gettimothy
gettimothy at zoho.com
Sat Sep 4 09:58:31 UTC 2021
Hi Levente
>Using #, works, but it is quite suboptimal. It'll result in the creation
>of many intermediate objects and will result in quadratic runtime.
>An easy way to avoid that would be to write directly into the file stream,
>but Squeak's file streams are not write-buffered, so I advise against
>that.
>Instead, you should create an in-memory stream, and write data into that
>stream. Once done, write the contents of the stream into the file.
>For example:
>
>| contents |
>contents := String streamContents: [ :stream |
> <write stuff to the stream here with #nextPut:, #nextPutAll:, etc> ].
>FileStream newFileNamed: <file name here> do: [ :file |
> file nextPutAll: contents ]
>Levente
Thank you for the pointers.
Here is a stab at it with your recommendations:
toTestFile: aCustomHelp
|ios filename recurse break newline |
newline := (Character cr asString).
break:= newline, newline.
ios := String streamContents:[:stream|
stream nextPutAll: ( '* ', aCustomHelp name asString , newline).
recurse := [:help |
help pages do:[:each | | v |
each asString first isUppercase
ifTrue:[
stream nextPutAll: ( '* ' , each, break).
recurse value: (Smalltalk at: each)]
ifFalse:[
v := help perform: each.
stream nextPutAll: ( break, '** ' , (v title) , (Character cr asString), break , (v contents) ,break)]]].
recurse value: aCustomHelp
].
filename := ((aCustomHelp name asString), '.org').
StandardFileStream forceNewFileNamed: filename do: [ :file |
file nextPutAll: ios ].
then:
DocCustomHelpToOrg toTestFile: PostgresV3Help.
The output is beautiful org mode content, but only for that superclass.
The Help System treats subclasses of a CustomHelp class as 'books'.
I am going to try to figure out how to do that next.
maybe a new method that calls this method.
anyhoo, thank you to all who responded, Much appreciated!
P.S. I am thinking a HelpTerseGuideNot with all the subjects in the terse guide expanded with examples of really cool code that is all over the mailing lists will be a nice feature. These examples here will definitely be on that book.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20210904/532563c0/attachment.html>
More information about the Squeak-dev
mailing list
|