A new version of Pharo by Example. The immediate goal is to port Pharo By Example to the most recent version of Pharo and update the content where is necessary.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
BasicClasses Changing .pier into .pillar Jun 21, 2018
Collections Changing .pier into .pillar Jun 21, 2018
Covers cleaning cover template Mar 12, 2017
Environment cleaning Jun 24, 2018
FirstApplication reintroducing mandatory error in newCellAt: i at: j Sep 11, 2018
Lulu cover and renaming of files Jan 14, 2017
Metaclasses Changing .pier into .pillar Jun 21, 2018
Morphic Changing .pier into .pillar Jun 21, 2018
PharoObjectModel Changing .pier into .pillar Jun 21, 2018
PharoTour Changing .pier into .pillar Jun 21, 2018
Preface Changing .pier into .pillar Jun 21, 2018
Reflection renaming file Jun 24, 2018
Regex Changing .pier into .pillar Jun 21, 2018
SUnit Changing .pier into .pillar Jun 21, 2018
Seaside Changing .pier into .pillar Jun 21, 2018
SharingCode Grammar Fix from John Pfersich Feb 26, 2018
Streams Changing .pier into .pillar Jun 21, 2018
SyntaxNutshell Changing .pier into .pillar Jun 21, 2018
UnderstandingMessage Changing .pier into .pillar Jun 21, 2018
_support adding suport Sep 8, 2018
figures Migrate to the sbabook class Jan 26, 2016
.bintray.json adding .bintray Sep 8, 2018
.dir-locals.el Add Emacs configuration file Feb 12, 2016
.gitignore Changing .pier into .pillar Jun 21, 2018
.gitmodules trying to migrate to pillar 7 Jun 24, 2018
.latexmkrc Migrate to the sbabook class Jan 26, 2016
.travis.yml adding .bintray Sep 8, 2018
CONTRIBUTING.md Update CONTRIBUTING.md Jun 6, 2017
LICENSE Fix license type (#21) Nov 3, 2015
README.md update progress Dec 31, 2016
SUMMARY.md status updates Jan 6, 2015
UpdatedPharoByExample.tex added with Feb 4, 2017
book.pillar trying to migrate to pillar 7 Jun 24, 2018
gitinfo2.sh Migrate to the sbabook class Jan 26, 2016
pillar.conf adding suport Sep 8, 2018

README.md

Build Status

Introduction

Pharo by Example (vol 1) is a practical introduction for Pharo, a Smalltalk-inspired programming language, IDE and live coding enviroment. This book is an updated version of Pharo By Example for Pharo 1.4.

This version focuses on the latest stable version of Pharo (Pharo 5.0, at the time of writing).

You can find more info and documentation about Pharo at Pharo.org.

Latest Builds

The latest versions of Updated Pharo by Example can be found at the following sites:

Chapter Progress

Chapter Status Latest Link reference
1 - Preface Revised, copyedited html pdf
2 - Pharo Tour Revised, copyedited html pdf Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*
3 - A First Application Revised, copyedited html pdf Chapter *: A First Application>../FirstApplication/FirstApplicatioin.pier@cha:firstApp*
4- Syntax in a Nutshell Revised, copyedited html pdf Chapter *: Syntax in a Nutshell>../SyntaxNutshell/SyntaxNutshell.pillar@cha:syntax*
5 - Understanding Messages Revised, copyedited html pdf Chapter *: Understanding Message Syntax>../UnderstandingMessage/UnderstandingMessage.pillar@cha:messages*
6 - The Pharo Object Model Revised, copyedited html pdf Chapter *: The Pharo Object Model>../PharoObjectModel/PharoObjectModel.pier@cha:model*
7 - Environment Revised, copyedited html pdf Chapter *: The Pharo Environment>../Environment/Environment.pillar@cha:env*
8 - Sharing Code and Source Control Revised, copyedited html pdf Chapter *: Sharing Code and Source Control>./SharingCode/SharingCode.pillar@cha:sharingCode*
9 - SUnit Revised, copyedited html pdf Chapter *: SUnit>../SUnit/SUnit.pillar@cha:sunit*
10 - Basic Classes Revised, copyedited html pdf Chapter *: Basic Classes>../BasicClasses/BasicClasses.pier@cha:basicClasses*
11 - Collections Revised, copyedited html pdf Chapter *: Collections>../Collections/Collections.pier@cha:collections*
12 - Streams Revised, copyedited html pdf Chapter *: Streams>../Streams/Streams.pillar@cha:streams*
13 - Morphic Revised, copyedited html pdf Chapter *: Morphic>../Morphic/Morphic.pier@cha:morphic*
14 - Seaside By Example Needs revision html pdf Chapter *: Seaside By Example>../Seaside/Seaside.pier@cha:seaside*
15 - Classes and Metaclasses Revised, copyedited html pdf Chapter *: Classes and Metaclasses>../Metaclasses/Metaclasses.pillar@cha:metaclasses*
16 - Reflection Needs revision html pdf Chapter *: Reflection>../Reflexion/Reflexion.pier@cha:reflection*
17 - Regular Expressions in Pharo Needs revision html pdf Chapter *: Regular Expressions in Pharo>../Regex/Regex.pier@cha:regex*

Contributing to Updated Pharo By Example (vol 1)

This book follows the fork-and-pull GitHub workflow for contributions:

  1. Fork the repository

  2. For each modification, create a quick topic branch named in the form of...

    • initials_ChapterName_my_topic_description

    example: git checkout -b dz_PharoTour_update_screen_snapshots

  3. Make commits to that branch. When you're ready, make a Pull Request

  4. The request will receive comments/corrections, and will be merged into the main repo.

More info about contributing to this book (including Pillar syntax, setting up LaTeX, etc) can be found in the CONTRIBUTING.md file.

Please send any comments, suggestions, or questions to the pharo-dev mailing list (see also the Get Help section of Pharo.org).

Style Guide

This book is written in Pillar markup. If you are not familiar with it please check the pillar-documentation. See also:

Images

Images (screenshots and diagrams) use Pillar image syntax:

+Image caption>file://figures/filename.png|width=80|label=fig:label+

For example:

+A stream positioned at its beginning.>file://figures/abcde.png|width=100|label=fig:abcde+
  • The width parameter is required (percentage of the screen).
  • Place the files in the figures directory of the chapter they are in.
  • The label should begin with fig:
  • When taking screenshots (PNG format), please compress them (you can use TinyPNG for easy and lossless compression)

To reference an image: Figure *@fig:abcde* (renders to Figure 3.8, for example).

Scripts and Code Blocks

For scripts, method definitions and other code blocks:

[[[language=smalltalk|caption=Hello World in a Transcript|label=src:helloWorld
	Transcript show: 'hello world'; cr.
]]]

Note that the label starts with src:.

To reference code blocks, use Script *@scr:helloWorld* (similar to Figures).

Chapter and Section Reference Links

Whenever you refer to other chapters of the book, please use the Pillar internal link syntax and the chapter name. (The cha: in the id is to denote that it's a chapter, to differentiate from a section id.) For example:

Chapter *: A Quick Tour of Pharo>../PharoTour/PharoTour.pillar@cha:tour*

A list of chapter ref link code is provided, to easily copy and paste, in the Chapter Progress / table of contents above.

General Style Guidelines

Please keep in mind the following:

  • When possible, hard-wrap lines at 80 characters (e.g. Meta-Q in Emacs, Cmd-Alt-Q in Atom). This is a common open-source documentation convention, and helps with viewing GitHub-generated diffs. However, due to Pillar limitations, ordered and unordered list elements must be on a single line to be correctly parsed. Those can be left un-wrapped.
  • Only one space between sentences.
  • Avoid periods in section titles. (For example, this section is titled "Style Guide" and not "Style Guide.")
  • All inline code mentions (objects, messages, variables, packages) should use the Pillar monospace notation: ==Object==.

License

This book is licensed under a Creative Commons Attribution-ShareAlike 3.0 license.

Other Books

Deep Into Pharo (Pharo By Example vol 2)

Deep into Pharo (source code) is the second volume of a series of books covering Pharo. Whereas the first volume is intended for newcomers, this second volume covers deeper topics.

Enterprise Pharo: A Web Perspective

Enterprise Pharo: A Web Perspective (latest PDF, source code) is the third volume of the series. It covers enterprise libraries and frameworks, and in particular those useful for doing web development.