diff --git a/dev/src/ExercismTools/ClyExercismFetchCommand.class.st b/dev/src/ExercismTools/ClyExercismFetchCommand.class.st index ceec8a68..6e4a1485 100644 --- a/dev/src/ExercismTools/ClyExercismFetchCommand.class.st +++ b/dev/src/ExercismTools/ClyExercismFetchCommand.class.st @@ -7,27 +7,9 @@ Class { #category : #'ExercismTools-Menus' } -{ #category : #activation } -ClyExercismFetchCommand class >> classListMenuActivation [ - - - ^CmdContextMenuActivation byRootGroupItemOrder: 3 for: ClyClassContextOfFullBrowser -] - { #category : #activation } ClyExercismFetchCommand class >> contextMenuOrder [ - ^10 -] - -{ #category : #activation } -ClyExercismFetchCommand class >> isExercismTagIn: aToolContext [ - - (aToolContext isKindOf: ClyClassContextOfFullBrowser) ifFalse: [ ^super isExercismTagIn: aToolContext ]. - - aToolContext selectedItems isEmpty and: [ aToolContext selectedPackageItems do: [:any | - ^ any browserItem name = ExercismManager exercismPackageName ]]. - - ^false + ^5 ] { #category : #activation } diff --git a/dev/src/ExercismTools/ClyExercismSubmitCommand.class.st b/dev/src/ExercismTools/ClyExercismSubmitCommand.class.st index 04815a2a..8dfb3c6c 100644 --- a/dev/src/ExercismTools/ClyExercismSubmitCommand.class.st +++ b/dev/src/ExercismTools/ClyExercismSubmitCommand.class.st @@ -9,7 +9,7 @@ Class { { #category : #activation } ClyExercismSubmitCommand class >> contextMenuOrder [ - ^1 + ^10 ] { #category : #accessing } diff --git a/docs/ABOUT.md b/docs/ABOUT.md index 8c0f7107..9ab1d274 100644 --- a/docs/ABOUT.md +++ b/docs/ABOUT.md @@ -3,9 +3,13 @@ Welcome to [Pharo](http://www.pharo.org), an environment and language that embra It features a world that is: - **Simple and Powerful:** No constructors, type declarations, interfaces and primitive types. Yet it's a powerful and elegant language with a full syntax that fits on a [postcard](https://en.wikipedia.org/wiki/File:Pharo_syntax_postcard.svg)! The magic is objects and messages all the way down. + - **Live and Immersive:** Immediate feedback at any moment of your development: Developing, testing, exploring, debugging. Even in live environments, you don't have to wait to compile and deploy! + - **Amazing for Debugging:** The [debugger](https://medium.com/@richardeng/how-to-use-the-pharo-debugger-eb554a2950b6) is unlike anything you've seen before. While it lets you step through code, you can also restart execution at any point, create methods and classes on the fly, extend its abilities, and much more! + - **Rich in History but Forward Looking:** Many concepts originated from Smalltalk: [MVC](http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html), [JIT](https://www.wikiwand.com/en/Just-in-time_compilation) compilation, Live coding, [TDD](https://en.wikipedia.org/wiki/SUnit), [Refactoring](http://www.academia.edu/10644191/A_Refactoring_Tool_for_Smalltalk) and many more. However we are still looking ahead with [moldable tools](https://gtoolkit.com/), [GtSpotter](http://www.humane-assessment.com/blog/introducing-gtspotter), [Agile Visualisation](http://agilevisualization.com/), and [MetaLinks](https://www.slideshare.net/MarcusDenker/lecture-metalinks) to name a few... + - **Active, Friendly, Helpful Community:** Pharo is yours, made by an incredible [community](http://pharo.org/community), with more than 100 contributors on the last revision and many more constantly [contributing](http://pharo.org/contribute) with frameworks, libraries and advice. Still not convinced? Smalltalk has a rich and fascinating [history](http://worrydream.com/EarlyHistoryOfSmalltalk/), that has influenced most of today's languages and techniques in one form or another. [Learning the source](https://twitter.com/dhh/status/950145591379742727) of these ideas is the road to being a good programmer in any language. But most of all, its just incredibly fun! Why not join in? \ No newline at end of file diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index e3c12d6b..2ec615d4 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -16,7 +16,7 @@ and then initally launch Pharo and the exercism tools by typing: ./pharo-ui Pharo.image eval " Metacello new baseline: 'Exercism'; - repository: 'github://exercism/pharo-smalltalk:v0.2.2'; + repository: 'github://exercism/pharo-smalltalk:v0.2.3'; load. #ExercismManager asClass welcome. " @@ -66,7 +66,7 @@ Finally, copy and paste the following snippet into the playground: ```smalltalk Metacello new baseline: 'Exercism'; - repository: 'github://exercism/pharo-smalltalk:v0.2.2'; + repository: 'github://exercism/pharo-smalltalk:v0.2.3'; load. #ExercismManager asClass welcome. diff --git a/exercises/grade-school/.meta/hints.md b/exercises/grade-school/.meta/hints.md index b415420f..3d66b95c 100644 --- a/exercises/grade-school/.meta/hints.md +++ b/exercises/grade-school/.meta/hints.md @@ -1 +1 @@ -It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as long as it doesn't leak out into the results. Note: this exercise has been slightly modified from problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). \ No newline at end of file +It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as the requirements are quite simple (and as long as it doesn't leak out into the results). Note: this exercise has been slightly modified from the problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). \ No newline at end of file diff --git a/exercises/grade-school/.meta/solution/GradeSchool.class.st b/exercises/grade-school/.meta/solution/GradeSchool.class.st index 249ffdb8..5b5ba93f 100644 --- a/exercises/grade-school/.meta/solution/GradeSchool.class.st +++ b/exercises/grade-school/.meta/solution/GradeSchool.class.st @@ -38,7 +38,7 @@ GradeSchool >> addStudents: aCollection [ { #category : #exercism } GradeSchool >> desiredGrade: gradeInteger [ - "Anser the Collection of students filtered by grade, alphabetically" + "Answer the Collection of students filtered by grade, alphabetically" ^ self formatResult: diff --git a/exercises/grade-school/GradeSchoolTest.class.st b/exercises/grade-school/GradeSchoolTest.class.st index 1b12fa43..3bc600d4 100644 --- a/exercises/grade-school/GradeSchoolTest.class.st +++ b/exercises/grade-school/GradeSchoolTest.class.st @@ -37,9 +37,9 @@ experiment make the code better? Worse? Did you learn anything from it? ## Hint -It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as long as it doesn't leak out into the results. +It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as the requirements are quite simple (and as long as it doesn't leak out into the results). -Note: this exercise has been slightly modified from problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). +Note: this exercise has been slightly modified from the problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). " Class { @@ -64,6 +64,14 @@ GradeSchoolTest class >> exercise [ ] +{ #category : #generator } +GradeSchoolTest class >> generator [ + "Potential generator hints" + + ^ {('rosterStudents:' -> #('addStudents:' 'roster')). + ('gradeStudents:desiredGrade:' -> #('addStudents:' 'desiredGrade:'))} +] + { #category : #config } GradeSchoolTest class >> uuid [ "Answer a unique id for this exercise" diff --git a/exercises/grade-school/README.md b/exercises/grade-school/README.md index e7c415f8..f3d9ac0d 100644 --- a/exercises/grade-school/README.md +++ b/exercises/grade-school/README.md @@ -36,7 +36,7 @@ experiment make the code better? Worse? Did you learn anything from it? ## Hint -It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as long as it doesn't leak out into the results. Note: this exercise has been slightly modified from problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). +It isn't strictly necessary to model students as a seperate object, you can use a convenient internal data strcture as the requirements are quite simple (and as long as it doesn't leak out into the results). Note: this exercise has been slightly modified from the problem-specification, as it makes more sense to seperate adding students and querying them in seperate methods (vs. having one method doing both, which feels less Pharo/Smalltalk like). ## Downloading