On Mon, Jun 12, 2017 at 7:22 AM, Glenn Hoetker <ghoetker@me.com> wrote:
Hi all.�� I���m new to Pharo and loving it.�� As I transition from a text-file based mindset, I���m a little stuck and would appreciate help in how to think about a situation in a Pharonic (Pharo-ish, Pharoc?) way.

I���m crafting a short program to help me process a large text file (specifically: extract, sorting, and regularizing the ���keyword��� fields of a large BibTex file). Especially since I don���t really know what I���m doing, working in a Playground has been a great development environment.�� Now that the program is complete (under 30 lines, wonderful), I want to be able to save it for future reference (and perhaps for future use).�� If I���d written a shell script, I���d just save ���fixBibDeskKeyWords.sh��� to a directory. I���m not sure what to do in the Pharo environment, thought.

At the moment, it just lives in the Playground I���ve developed it on.�� I could save the image and leave that Playground open, but I���m just positive that���s not a best practice. I also worry about what happens if I closed/cleared that Playground by accident.

I think I understand that, if I created a new package, I could use Monticello to save it to a local cache and load it into a new image whenever I needed it.�� But, given that it���s short, highly specialized and fairly linear, the idea of creating a ���GHBibDeskStuff��� package with one class (���GBibDeskKeywordFixer��� containing a single ���FixFile��� method seems really heavy and awkward.

Can one save the contents of a Playground in a Pharonic way?�� Is there a better approach?

Thank you to all involved in this wonderful programming ecosystem. I appreciate any advice.

Great to hear you are enjoying Pharo.

The heavy part of saving to disk as a Monticello package is an optional secondary step, but to make you code "permanent" in the image you do need a class to hang it on, and a package to hold that.�� Doing this only in-Image is quite light and quick to do, and makes it easy to find later.�� In a System Browser create package "GHBibDeskStuff", class GBibDeskKeywordFixer.�� Create your method so you can use it from playground like this...

�� �� ��GBibDeskKeywordFixer new fixFile.

Then to the class side of GBibDeskKeywordFixer also add a method #fixFile like this...
�� �� GBibDeskKeywordFixer class >> fixFile
�� �� �� �� �� self new fixFile.

so that from playground you can drop the "new" and use it like this...

�� �� GBibDeskKeywordFixer fixFile

����
Feels like you've added a new command to Pharo?

Note that "GBibDeskKeywordFixer class >>" is just a documentation convention indicating you should click the <Class> button to add a method to the class-side.

cheers -ben