On Mon, Jun 12, 2017 at 7:22 AM, Glenn Hoetker <ghoet...@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