These are some scripts and tips I used in my daily developement with Pharo Smalltalk in the last years. Hope you find them useful:
Parsing XML with DOM
You can instantiate and parse a XML DOM parser with one line of code:(XMLDOMParser parseFileNamed: 'fao_country_names.xml') firstNode allElementsSelect: [ : each | each localName = 'geographical_region' ].
NeoCSV
You can quickly parse a CSV file using NeoCSV with just a snippet for most tasks:(NeoCSVReader on: 'myfile.csv' asFileReference readStream) separator: Character tab; do: [ : row | " do something with row " row first; second; third ]or using a one-liner
'myfile.csv' asFileReference readStreamDo: [ : stream | (NeoCSVReader on: stream) upToEnd ]
Lorem Ipsum
You already have the first paragraph of "Lorem ipsum" available in Pharo.String loremIpsum
Profiling
If you are developing UI you can have the Time Profiler (Pharo) opened in any method by enclosing your code between:TimeProfiler new openOnBlock: [ " Your code ... " ]
Open File Dialog
Opening a File Dialog for specific file type is a one-liner:UIManager default chooseFileMatching: #('*.xml').
Spec
Spec is a relatively young UI Specification library. You can prototype UI's easily by using Dynamic Composable Models, for example:| view layout | " Configure the Spec models " view := DynamicComposableModel new instantiateModels: #(labelA LabelModel textA TextInputFieldModel labelB LabelModel textB TextInputFieldModel); extent: 500@200; title: 'Title' yourself. " Configure the Spec layout " layout := SpecLayout composed newColumn: [ : r | r add: #labelA; add: #textA; add: #labelB; add: #textB ]; yourself. " Set up the widgets " view labelA text: 'A'. view labelB text: 'B'. " Open the Window " (view openDialogWithSpecLayout: layout) centered; modalRelativeTo: World.
Morphic Window and Controls
If you need a basic container Morph window, just evaluate:| s | (s := SystemWindow labelled: 'Window') openInHand. s addMorph: (StringMorph new contents: 'Comments:'; color: Color black) frame: (0@0.0 corner: 1@0.2).But you can have a control like a TextArea without container
| o ptm | o := Object new. ptm := PluggableTextMorph on: o text: #printString accept: nil. ptm height: TextStyle defaultFont height + 6. ptm acceptOnCR: true; openInHand.And instantiated differently
(PluggableTextMorph on: Workspace new text: #contents accept: #acceptContents: readSelection: nil menu: #codePaneMenu:shifted:) openInHand.
FTP
Udo Schneider recently wrote an FTP/WebDAV Plugin for the Pharo FileSystem, and you get almost for free a FTP client using the File Browserfs := FileSystem ftp: 'ftp://ftp.mozilla.org'. FileList openOn: fs workingDirectory. fs close.
0 comentarios:
Publicar un comentario