Skip to content

Commit

Permalink
Adds basic objects which are used as default args when adding examples
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeAtHPI committed Jan 10, 2024
1 parent bf1337d commit 4be7836
Show file tree
Hide file tree
Showing 21 changed files with 312 additions and 8 deletions.
21 changes: 21 additions & 0 deletions packages/Sandblocks-Babylonian/Collection.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
Extension { #name : #Collection }

{ #category : #'*Sandblocks-Babylonian' }
Collection class >> exampleBlockContainingClass: aClass [

| class |
self flag: #todo.
"Lazy way to avoid adding overrides with concrete classes in the huge amount of subclasses"
class := (self = Collection) ifTrue: [OrderedCollection] ifFalse: self.
^ SBStMessageSend new
receiver: (SBStName contents: class name)
selector: #withAll:
arguments: {SBStArray withContents: (class withAll: ((1 to: 5) collect: [:i | aClass exampleBlock]))}


]

{ #category : #'*Sandblocks-Babylonian' }
Collection class >> exampleObjectContainingClass: aClass [

^ self withAll: ((1 to: 5) collect: [:i | aClass exampleObject])
]

{ #category : #'*Sandblocks-Babylonian' }
Collection >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
12 changes: 12 additions & 0 deletions packages/Sandblocks-Babylonian/Color.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
Extension { #name : #Color }

{ #category : #'*Sandblocks-Babylonian' }
Color class >> exampleBlock [

^ self exampleObject asSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Color class >> exampleObject [

^ self random
]

{ #category : #'*Sandblocks-Babylonian' }
Color >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
7 changes: 7 additions & 0 deletions packages/Sandblocks-Babylonian/Float.extension.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Extension { #name : #Float }

{ #category : #'*Sandblocks-Babylonian' }
Float class >> exampleObject [

^ Random new next
]
12 changes: 12 additions & 0 deletions packages/Sandblocks-Babylonian/Form.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
Extension { #name : #Form }

{ #category : #'*Sandblocks-Babylonian' }
Form class >> exampleBlock [

^ 'Form squeakLogo' parseAsSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Form class >> exampleObject [

^ self squeakLogo
]

{ #category : #'*Sandblocks-Babylonian' }
Form >> sbSnapshot [

Expand Down
7 changes: 7 additions & 0 deletions packages/Sandblocks-Babylonian/Fraction.extension.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Extension { #name : #Fraction }

{ #category : #'*Sandblocks-Babylonian' }
Fraction class >> exampleObject [

^ (Integer exampleObject / Integer exampleObject )
]
27 changes: 27 additions & 0 deletions packages/Sandblocks-Babylonian/Interval.extension.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Extension { #name : #Interval }

{ #category : #'*Sandblocks-Babylonian' }
Interval class >> exampleBlock [

^ '1 to: 10' parseAsSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Interval class >> exampleBlockContainingClass: aClass [

^ self exampleBlock


]

{ #category : #'*Sandblocks-Babylonian' }
Interval class >> exampleObject [

^ 1 to: 10
]

{ #category : #'*Sandblocks-Babylonian' }
Interval class >> exampleObjectContainingClass: aClass [

^ self exampleObject
]
6 changes: 6 additions & 0 deletions packages/Sandblocks-Babylonian/Morph.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
Extension { #name : #Morph }

{ #category : #'*Sandblocks-Babylonian' }
Morph class >> exampleObject [

^ self new
]

{ #category : #'*Sandblocks-Babylonian' }
Morph >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
12 changes: 12 additions & 0 deletions packages/Sandblocks-Babylonian/Number.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
Extension { #name : #Number }

{ #category : #'*Sandblocks-Babylonian' }
Number class >> exampleBlock [

^ self exampleObject asSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Number class >> exampleObject [

^ Random new nextInt: 100
]

{ #category : #'*Sandblocks-Babylonian' }
Number >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
27 changes: 27 additions & 0 deletions packages/Sandblocks-Babylonian/Object.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
Extension { #name : #Object }

{ #category : #'*Sandblocks-Babylonian' }
Object class >> exampleBlock [

^ (self name, ' new') parseAsSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Object class >> exampleBlockContainingClass: aClass [

^ self exampleBlock


]

{ #category : #'*Sandblocks-Babylonian' }
Object class >> exampleObject [

^ self new
]

{ #category : #'*Sandblocks-Babylonian' }
Object class >> exampleObjectContainingClass: aClass [

"For generic classes to overwrite"
^ self exampleObject
]

{ #category : #'*Sandblocks-Babylonian' }
Object >> sbSnapshot [

Expand Down
12 changes: 12 additions & 0 deletions packages/Sandblocks-Babylonian/Point.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
Extension { #name : #Point }

{ #category : #'*Sandblocks-Babylonian' }
Point class >> exampleBlock [

^ self exampleObject asSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Point class >> exampleObject [

^ self x: Integer exampleObject y: Integer exampleObject
]

{ #category : #'*Sandblocks-Babylonian' }
Point >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
6 changes: 6 additions & 0 deletions packages/Sandblocks-Babylonian/SBExample.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,12 @@ SBExample >> layoutCommands [
SBAlgebraCommand group data: {a layoutCommands. SBAlgebraCommand gap. b layoutCommands. SBAlgebraCommand softLineOrGap}]), {self lastSubmorph layoutCommands}
]

{ #category : #'as yet unclassified' }
SBExample >> nameBlock [

^ self submorphs second
]

{ #category : #'as yet unclassified' }
SBExample >> outOfWorld: aWorld [

Expand Down
62 changes: 54 additions & 8 deletions packages/Sandblocks-Babylonian/SBStGrammarHandler.extension.st
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,68 @@ Extension { #name : #SBStGrammarHandler }
SBStGrammarHandler >> addExample [
<action>

| method class |
| method class example |
self block isExample ifTrue: [^ self block toggleRunning].

method := self block containingArtefact.
class := method methodClass.
example := self createExampleIn: method of: class.

self block sandblockEditor do: (SBInsertCommand new
container: method body;
index: 2;
morph: (SBExample new
self: (method isClassSide ifTrue: [SBStName contents: class theNonMetaClassName] ifFalse: [
SBStMessageSend new
receiver: (SBStName contents: class name)
selector: (method selector = #initialize ifTrue: [#basicNew] ifFalse: [#new])])
morph: example).

example startRunning.
self block sandblockEditor select: example nameBlock.
]

{ #category : #'*Sandblocks-Babylonian' }
SBStGrammarHandler >> createExampleIn: aMethod of: aClass [

^ SBExample new
self: (aMethod isClassSide
ifTrue: [SBStName contents: aClass theNonMetaClassName]
ifFalse: [
SBStMessageSend new
receiver: (SBStName contents: aClass name)
selector: (aMethod selector = #initialize ifTrue: [#basicNew] ifFalse: [#new])])
args: (SBStArray new
type: #dynamic
contents: (Array streamContents: [:str | method arguments size timesRepeat: [str nextPut: self block newNullBlock]]))
label: 'example'))
contents: (aMethod arguments collect: [:anArgument |
self extractBlockFromArgumentName: anArgument contents]))
label: 'example'.
]

{ #category : #'*Sandblocks-Babylonian' }
SBStGrammarHandler >> extractBlockFromArgumentName: aString [

| classes |
classes := self extractClassesFromName: aString.
^ (classes second = UndefinedObject)
ifTrue: [classes first exampleBlock]
ifFalse: [classes first exampleBlockContainingClass: classes second]
]

{ #category : #'*Sandblocks-Babylonian' }
SBStGrammarHandler >> extractClassesFromName: aParameterName [

"Working with groups isn't supported, so we do a nested request"
"When it does work, use : '((?<=[\w*])[A-Z]\w*)[Oo]f([A-Z]\w*)s'"
(aParameterName allRegexMatches: '(?<=[\w*])[A-Z]\w*')
ifNotEmpty: [:theCollection | | argWOPrefix |
argWOPrefix := theCollection first.
(argWOPrefix matchesRegex: '[A-Z]\w*Of[A-Z]\w*s')
ifFalse: [^ {self searchClassNamed: argWOPrefix. UndefinedObject}]
ifTrue: [^ {
self searchClassNamed: ((argWOPrefix allRegexMatches: '[A-Z]\w*(?=Of[A-Z]\w*s)') first).
self searchClassNamed: ((argWOPrefix allRegexMatches: '(?<=[A-Z]\w*Of)[A-Z]\w*(?=s)') first).}]].

^ {UndefinedObject. UndefinedObject}
]

{ #category : #'*Sandblocks-Babylonian' }
SBStGrammarHandler >> searchClassNamed: aString [

^ (self environment classNamed: aString) ifNil: [UndefinedObject]
]
26 changes: 26 additions & 0 deletions packages/Sandblocks-Babylonian/String.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
Extension { #name : #String }

{ #category : #'*Sandblocks-Babylonian' }
String class >> exampleBlock [

^ self exampleObject asSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
String class >> exampleBlockContainingClass: aClass [

^ self exampleBlock


]

{ #category : #'*Sandblocks-Babylonian' }
String class >> exampleObject [

^ 'Hello, World'
]

{ #category : #'*Sandblocks-Babylonian' }
String class >> exampleObjectContainingClass: aClass [

^ self exampleObject
]

{ #category : #'*Sandblocks-Babylonian' }
String >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
26 changes: 26 additions & 0 deletions packages/Sandblocks-Babylonian/Text.extension.st
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
Extension { #name : #Text }

{ #category : #'*Sandblocks-Babylonian' }
Text class >> exampleBlock [

^ ('Text fromString: ''', self exampleObject, '''') parseAsSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
Text class >> exampleBlockContainingClass: aClass [

^ self exampleBlock


]

{ #category : #'*Sandblocks-Babylonian' }
Text class >> exampleObject [

^ self fromString: 'Hello, World'
]

{ #category : #'*Sandblocks-Babylonian' }
Text class >> exampleObjectContainingClass: aClass [

^ self exampleObject
]

{ #category : #'*Sandblocks-Babylonian' }
Text >> sbWatchValueMorphFor: aSBWatchValue sized: aSBMorphResizer [

Expand Down
13 changes: 13 additions & 0 deletions packages/Sandblocks-Babylonian/UndefinedObject.extension.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Extension { #name : #UndefinedObject }

{ #category : #'*Sandblocks-Babylonian' }
UndefinedObject class >> exampleBlock [

^ self exampleObject asSandblock
]

{ #category : #'*Sandblocks-Babylonian' }
UndefinedObject class >> exampleObject [

^ self initializedInstance
]
6 changes: 6 additions & 0 deletions packages/Sandblocks-Core/Color.extension.st
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,9 @@ Color >> asMorph: convert [

^ convert do: [self asMorph]
]

{ #category : #'*Sandblocks-Core' }
Color >> asSandblock [

^ self shortPrintString parseAsSandblock
]
7 changes: 7 additions & 0 deletions packages/Sandblocks-Core/Fraction.extension.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Extension { #name : #Fraction }

{ #category : #'*Sandblocks-Core' }
Fraction >> asSandblock [

^ self asString parseAsSandblock
]
6 changes: 6 additions & 0 deletions packages/Sandblocks-Core/Number.extension.st
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ Number >> asEdgeInsets [
bottom: self
]

{ #category : #'*Sandblocks-Core' }
Number >> asSandblock [

^ SBStNumber new value: self
]

{ #category : #'*Sandblocks-Core' }
Number >> sbScaled [

Expand Down
Loading

0 comments on commit 4be7836

Please sign in to comment.