Browse Source

Pragmas in .js files.

Herby Vojčík 5 years ago
parent
commit
08d14b8de8
1 changed files with 74 additions and 0 deletions
  1. 74 0
      src/ProfStef.js

+ 74 - 0
src/ProfStef.js

@@ -27,6 +27,7 @@ args: ["aSelector"],
 source: "indexOfLesson: aSelector\x0a\x09^self tableOfContents indexOf: aSelector.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["indexOf:", "tableOfContents"]
 }),
 $globals.AbstractTutorial);
@@ -52,6 +53,7 @@ args: ["anInteger"],
 source: "lessonAt: anInteger\x0a\x09| lessonSelector |\x0a\x09lessonSelector := self tableOfContents at: anInteger.\x0a\x09^ self perform: lessonSelector.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["at:", "tableOfContents", "perform:"]
 }),
 $globals.AbstractTutorial);
@@ -75,6 +77,7 @@ args: [],
 source: "size\x0a\x09^ self tableOfContents size",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["size", "tableOfContents"]
 }),
 $globals.AbstractTutorial);
@@ -93,6 +96,7 @@ args: [],
 source: "tableOfContents\x0a^ #(\x0a  'welcome'\x0a  'testLesson'\x0a  'theEnd'\x0a)",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.AbstractTutorial);
@@ -116,6 +120,7 @@ args: [],
 source: "testLesson\x0a\x09^ Lesson\x0a\x09\x09title: 'Test Lesson' \x0a\x09\x09contents: '\x22This lesson is a test\x22'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.AbstractTutorial);
@@ -139,6 +144,7 @@ args: [],
 source: "theEnd\x0a\x09^ Lesson\x0a\x09\x09title: 'The End' \x0a\x09\x09contents: '\x22And that''d be pretty much it :)\x22'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.AbstractTutorial);
@@ -162,6 +168,7 @@ args: [],
 source: "welcome\x0a\x09^ Lesson\x0a\x09\x09title: 'Welcome' \x0a\x09\x09contents: '\x22Hi, this is a test tutorial.\x22'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.AbstractTutorial);
@@ -191,6 +198,7 @@ args: [],
 source: "basicTypesArray\x0a\x09^ Lesson\x0atitle: 'Basic types: Array' \x0acontents: \x0a'\x22Literal arrays are created at parse time:\x22\x0a\x0a#(1 2 3).\x0a\x0a#( 1 2 3 #(4 5 6)) size.\x0a\x0a#(1 2 4) isEmpty.\x0a\x0a#(1 2 3) first.\x0a\x0a#(''hello'' ''Javascript'') at: 2 put: ''Smalltalk''; yourself.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -214,6 +222,7 @@ args: [],
 source: "basicTypesCharacters\x0a\x09^ Lesson\x0atitle: 'Basic types: Characters' \x0acontents: \x0a'\x22A Character can be instantiated using $ operator:\x22\x0a\x0a$A.\x0a\x0a$A class.\x0a\x0a$B charCode.\x0a\x0aCharacter cr.\x0a\x0aCharacter space.\x0a\x0a\x22You can print all 256 characters of the ASCII extended set:\x22\x0a\x0aCharacter allByteCharacters.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -237,6 +246,7 @@ args: [],
 source: "basicTypesDynamicArray\x0a\x09^ Lesson\x0atitle: 'Basic types: Dynamic Array' \x0acontents: \x0a'\x22Dynamic Arrays are created at execution time:\x22\x0a\x0a{ (2+3) . (6*6) }.\x0a\x0a{ (2+3) . (6*6) . ''hello'', '' Stef''} size.\x0a\x0a\x0a{ ProfStef } first next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -260,6 +270,7 @@ args: [],
 source: "basicTypesNumbers\x0a\x09^ Lesson\x0atitle: 'Basic types: Numbers' \x0acontents: \x0a'\x22You now know how to execute Smalltalk code. \x0a\x0aNow let''s talk about basic objects.\x0a\x0a1, 2, 100, 2/3 ... are Numbers, and respond to many messages evaluating mathematical expressions.\x0aEvaluate these ones:\x22\x0a\x0a2.\x0a\x0a(1/3).\x0a\x0a(1/3) + (4/5).\x0a\x0a(18/5) rounded.\x0a\x0a1 class.\x0a\x0a1 negated.\x0a\x0a1 negated negated.\x0a\x0a(1 + 3) odd.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -283,6 +294,7 @@ args: [],
 source: "basicTypesString\x0a\x09^ Lesson\x0atitle: 'Basic types: Strings' \x0acontents: \x0a'\x22A String is a collection of characters. Use single quotes to create a String object. Print these expressions:\x22\x0a\x0a''ProfStef''.\x0a\x0a''ProfStef'' size.\x0a\x0a''abc'' asUppercase.\x0a\x0a''Hello World'' reversed. \x0a\x0a\x22You can access each character using at: message\x22\x0a\x0a''ProfStef'' at: 1.\x0a\x0a\x22String concatenation uses the comma operator:\x22\x0a\x0a''ProfStef'', '' is cool''.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -306,6 +318,7 @@ args: [],
 source: "basicTypesSymbol\x0a\x09^ Lesson\x0atitle: 'Basic types: Symbols' \x0acontents: \x0a'\x22A Symbol is a String which is guaranteed to be globally unique. \x0a\x0aThere is one and only one Symbol #ProfStef. There may be several ''ProfStef'' String objects.\x0a\x0a(Message == returns true if the two objects are the SAME)\x22\x0a\x0a''ProfStef'' asSymbol.\x0a\x0a#ProfStef asString.\x0a\x0a(2 asString) == (2 asString).\x0a\x0a(2 asString) asSymbol == (2 asString) asSymbol.\x0a\x0a\x0a(Smalltalk at: #ProfStef) next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -329,6 +342,7 @@ args: [],
 source: "blocks\x0a\x09^ Lesson\x0atitle: 'Blocks' \x0acontents: \x0a'\x22Cascade is cool ! Let''s talk about blocks.\x0a\x0aBlocks are anonymous methods that can be stored into variables and executed on demand.\x0a\x0aBlocks are delimited by square brackets: []\x22\x0a\x0a[Transcript open].\x0a\x0a\x22does not open a Transcript because the block is not executed.\x0a\x0aHere is a block that adds 2 to its argument (its argument is named x):\x22\x0a\x0a[:x | x+2].\x0a\x0a\x22We can execute a block by sending it value messages.\x22\x0a\x0a[:x | x+2] value: 5.\x0a\x0a[Transcript open] value.\x0a\x0a[:x | x+2] value: 10.\x0a\x0a[:x :y| x + y] value:3 value:5.\x0a\x0a[ProfStef next] value.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -352,6 +366,7 @@ args: [],
 source: "blocksAssignation\x0a\x09^ Lesson\x0atitle: 'Block assignation' \x0acontents: \x0a'\x22Blocks can be assigned to a variable then executed later.\x0a\x0aNote that |b| is the declaration of a variable named ''b'' and that '':='' assigns a value to a variable.\x0a\x0aSelect the three lines then Print It:\x22\x0a\x0a|b|\x0ab := [:x | x+2].\x0ab value: 12.\x0a\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -375,6 +390,7 @@ args: [],
 source: "conditionals\x0a\x09^ Lesson\x0atitle: 'Conditionals' \x0acontents: \x0a'\x22Conditionals are just messages sent to Boolean objects\x22\x0a\x0a1 < 2\x0a  ifTrue: [100]\x0a  ifFalse: [42].\x0a\x0a\x22Here the message is ifTrue:ifFalse\x0a\x0aTry this:\x22\x0a\x0aTranscript open.\x0a\x0a3 > 10 \x0a\x09ifTrue: [Transcript show: ''maybe there''''s a bug ....'']\x0a\x09ifFalse: [Transcript show: ''No : 3 is less than 10''].\x0a\x0a3 = 3 ifTrue: [ProfStef next].'.",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -398,6 +414,7 @@ args: [],
 source: "debugger\x0a\x09^ Lesson\x0atitle: 'Debugger' \x0acontents: '\x22The Debugger may be the most famous tool of Smalltalk environments. It will open as soon as an unmanaged Exception occurs. \x0a\x0aThe following code will open the debugger.\x0a\x0a***This should be rethought completely***\x22\x0a\x0a\x0a '",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -421,6 +438,7 @@ args: [],
 source: "doingVSPrinting \x0a\x09^ Lesson\x0atitle: 'Doing VS Printing: Doing' \x0acontents: \x0a'\x22Cool ! (I like to say Cooool :) ).\x0aYou''ve just executed a Smalltalk expression.\x0aMore precisely, you sent the message ''next'' to ProfStef class (it''s me !).\x0a\x0aNote you can run this tutorial again by evaluating: ''ProfStef go''. \x0a''ProfStef previous'' returns to the previous lesson.\x0a\x0aYou can also Do It using the keyboard shortcut ''CTRL d''\x0a\x0aTry to evaluate this expression:\x22\x0a\x0awindow alert: ''hello world!''.\x0a\x0a\x22Then go to the next lesson:\x22\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -444,6 +462,7 @@ args: [],
 source: "instantiation\x0a\x09^ Lesson\x0atitle: 'Instantiation' \x0acontents: \x0a'\x22Objects are instances of their class. Usually, we send the message #new to a class for creating an instance of this class.\x0a\x0aFor example, let''s create an instance of the class Array:\x22\x0a\x0aArray new\x0a\x09add: ''Some text'';\x0a\x09add: 3;\x0a\x09yourself.\x0a\x0a\x22See the array we''ve created? Actually, #(''Some text'' 3) is just a shorthand for instantiating arrays.\x22\x0a\x0a\x22If we use a variable to keep track of this object, we''ll be able to do stuff with it.\x22\x0a\x0a\x22The following code must be ran all at one, as the ''anArray'' variable will cease to exist once the execution finishes:\x22\x0a\x0a|anArray|\x0a\x0aanArray := Array new\x0a\x09add: ''Some text'';\x0a\x09add: 3;\x0a\x09yourself.\x0a\x0aTranscript show: anArray; cr.\x0a\x0aanArray remove: 3.\x0a\x0aTranscript show: anArray; cr.\x0a\x0aanArray add: ''Some more text!''.\x0a\x0aTranscript show: anArray; cr.\x0a\x09\x0a\x22I''ll put myself in an instance of a class named Dictionary and go to the next lesson:\x22\x0a\x0a((Dictionary new add: (''move on!'' -> ProfStef)) at: ''move on!'') next'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -467,6 +486,7 @@ args: [],
 source: "iterators\x0a\x09^ Lesson\x0atitle: 'Iterators' \x0acontents: \x0a'\x22The message do: is sent to a collection of objects (Array, Dictionary, String, etc), evaluating the block for each element.\x0a\x0aHere we want to print all the numbers on the Transcript (a console)\x22\x0a\x0a#(11 38 3 -2 10) do: [:each |\x0a     Transcript show: each printString; cr].\x0a\x0a\x22Some other really nice iterators\x22\x0a\x0a#(11 38 3 -2 10) collect: [:each | each negated].\x0a\x0a#(11 38 3 -2 10) collect: [:each | each odd].\x0a\x0a#(11 38 3 -2 10) select: [:each | each odd].\x0a\x0a#(11 38 3 -2 10) select: [:each | each > 10].\x0a\x0a#(11 38 3 -2 10) reject: [:each | each > 10].\x0a\x0a#(11 38 3 -2 10) \x0a     do: [:each | Transcript show: each printString]\x0a     separatedBy: [Transcript show: ''.''].\x0a\x0a\x0a(Smalltalk classes select: [:eachClass | eachClass name = ''ProfStef'']) do: [:eachProfstef | eachProfstef next].'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -490,6 +510,7 @@ args: [],
 source: "loops\x0a\x09^ Lesson\x0atitle: 'Loops' \x0acontents: \x0a'\x22Loops are high-level collection iterators, implemented as regular methods.\x22\x0a\x0a\x22Basic loops:\x0a  to:do:\x0a  to:by:do\x22\x0a\x0a1 to: 100 do:\x0a  [:i | Transcript show: i asString; cr ].\x0a\x0a1 to: 100 by: 3 do: [:i | Transcript show: i asString; cr].\x0a\x0a100 to: 0 by: -2 do: \x0a    [:i | Transcript show: i asString; cr].\x0a\x0a1 to: 1 do: [:i | ProfStef next].'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -513,6 +534,7 @@ args: [],
 source: "mathematicalPrecedence\x0a\x09^ Lesson\x0atitle: 'Mathematical precedence'\x0acontents: \x0a'\x22Traditional precedence rules from mathematics do not follow in Smalltalk.\x22\x0a\x0a2 * 10 + 2.\x0a\x0a\x22Here the message * is sent to 2, which answers 20, then 20 receive the message +\x0a\x0aRemember that all messages always follow a simple left-to-right precedence rule, * without exceptions *.\x22\x0a\x0a2 + 2 * 10.\x0a\x0a2 + (2 * 10).\x0a\x0a8 - 5 / 2.\x0a\x0a(8 - 5) / 2.\x0a\x0a8 - (5 / 2).\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -536,6 +558,7 @@ args: [],
 source: "messageSyntaxBinary\x0a\x09^ Lesson\x0atitle: 'Message syntax: Binary messages' \x0acontents: \x0a'\x22Binary messages have the following form:\x0a    anObject + anotherObject\x22\x0a\x0a3 * 2.\x0a\x0aDate today year = 2011.\x0a\x0afalse | false.\x0a\x0atrue & true.\x0a\x0atrue & false.\x0a\x0a10 @ 100.\x0a\x0a10 <= 12.\x0a\x0a''ab'', ''cd''.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -559,6 +582,7 @@ args: [],
 source: "messageSyntaxCascade\x0a\x09^ Lesson\x0atitle: 'Message syntax: Cascade' \x0acontents: \x0a'\x22; is the cascade operator. It''s useful to send message to the SAME receiver\x0aOpen a Transcript (console):\x22\x0a\x0aTranscript open.\x0a\x0a\x22Then:\x22\x0a\x0aTranscript show: ''hello''.\x0aTranscript show: ''Smalltalk''.\x0aTranscript cr.\x0a\x0a\x22is equivalent to:\x22\x0a\x0aTranscript \x0a\x09   show: ''hello'';\x0a\x09   show: ''Smalltalk'' ;\x0a\x09   cr.\x0a\x0a\x22You can close the development tools by clicking on the red circle with a cross at the bottom left of the website.\x0aTry to go to the next lesson with a cascade of two ''next'' messages:\x22\x0a\x0aProfStef'.",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -582,6 +606,7 @@ args: [],
 source: "messageSyntaxCascadeShouldNotBeHere\x0a\x09^ Lesson\x0atitle: 'Lost ?' \x0acontents: \x0a'\x22Hey, you should not be here !! \x0a\x0aGo back and use a cascade !\x22\x0a\x0aProfStef previous.'.",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -605,6 +630,7 @@ args: [],
 source: "messageSyntaxExecutionOrder\x0a\x09^ Lesson\x0atitle: 'Message syntax: Execution order' \x0acontents: \x0a'\x22Unary messages are executed first, then binary messages and finally keyword messages:\x0a    Unary > Binary > Keywords\x22\x0a\x0a2.5 + 3.8 rounded.\x0a\x0a3 max: 2 + 2.\x0a  \x0a(0@0) class.\x0a\x0a0@0 x: 100.\x0a\x0a(0@0 x: 100) class.\x0a\x0a\x22Between messages of similar precedence, expressions are executed from left to right\x22\x0a\x0a-12345 negated asString reversed.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -628,6 +654,7 @@ args: [],
 source: "messageSyntaxExecutionOrderParentheses\x0a\x09^ Lesson\x0atitle: 'Message syntax: Parentheses'\x0acontents: \x0a'\x22Use parentheses to change order of evaluation\x22\x0a\x0a(2.5 + 3.8) rounded.\x0a\x0a(3 max: 2) + 2.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -651,6 +678,7 @@ args: [],
 source: "messageSyntaxKeyword\x0a\x09^ Lesson\x0atitle: 'Message syntax: Keyword messages' \x0acontents: \x0a'\x22Keyword Messages are messages with arguments. They have the following form:\x0a    anObject akey: anotherObject akey2: anotherObject2\x22\x0a\x0a''Web development is a good deal of pain'' copyFrom: 1 to: 30\x0a\x0a\x22The message is copyFrom:to: sent to the String ''Web development is a good deal of pain''\x22\x0a\x0a1 max: 3.\x0a\x0aArray with: ''hello'' with: 2 with: Smalltalk.\x0a\x0a\x22The message is with:with:with: implemented on class Array. Note you can also write\x22\x0a\x0aArray\x0a\x09with: ''Hi there!''\x0a\x09with: 2\x0a\x09with: Smalltalk.\x0a\x09\x0aProfStef perform: ''next''.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -674,6 +702,7 @@ args: [],
 source: "messageSyntaxUnary\x0a\x09^ Lesson\x0atitle: 'Message syntax: Unary messages' \x0acontents: \x0a'\x22Messages are sent to objects. There are three types of message: Unary, Binary and Keyword.\x0a\x0aUnary messages have the following form:\x0a    anObject aMessage \x0a\x0aYou''ve already sent unary messages. For example:\x22\x0a\x0a1 class.\x0a\x0afalse not.\x0a\x0aDate today.\x0a\x0aNumber pi.\x0a\x0a\x22And of course: \x22\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -697,6 +726,7 @@ args: [],
 source: "pharoEnvironment\x0a\x09^ Lesson\x0atitle: 'Pharo environment' \x0acontents: \x0a'\x22Every Smalltalk system is full of objects.\x0aThere are windows, text, numbers, dates, colors, points and much more.\x0aYou can interact with objects in a much more direct way than is possible with other programming languages.\x0a\x0aEvery object understands the message ''explore''. As a result, you get an Explorer window that shows details about the object.\x22\x0a\x0aDate today explore.\x0a\x0a\x22This shows that the date object consists of a point in time (start) and a duration (one day long).\x22\x0a\x0aProfStef explore.\x0a\x0a\x22You see, ProfStef class has a lot of objects. Let''s take a look at my code:\x22\x0a\x0aProfStef browse.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -720,6 +750,7 @@ args: [],
 source: "printing \x0a\x09^ Lesson\x0atitle: 'Doing VS Printing: Printing' \x0acontents: \x0a'\x22Now you''re a Do It master ! Let''s talk about printing.\x0aIt''s a Do It which prints the result next to the expression you''ve selected.\x0aFor example, select the text below, and click on ''PrintIt'':\x22\x0a\x0a1 + 2.\x0a\x0a\x22As with ''DoIt'', there is also a shortcut to execute this command.\x0a\x0aTry CTRL-p on the following expressions:\x22\x0a\x0aDate today.\x0a\x0a\x22The result is selected, so you can erase it using the backspace key. Try it !\x22\x0a\x0aDate today asDateString.\x0a\x0aDate today asTimeString.\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -743,6 +774,7 @@ args: [],
 source: "reflection\x0a\x09^ Lesson\x0atitle: 'Reflection' \x0acontents: \x0a'\x22You can inspect and change the system at runtime.\x0a\x0aTake a look at the source code of the method #and: of the class Boolean:\x22\x0a\x0a(Boolean methodDictionary at: ''and:'') source.\x0a\x0a\x22Or all the methods it sends:\x22\x0a\x0a(Boolean methodDictionary at: ''and:'') messageSends.\x0a\x0a\x22Here''s all the methods I implement:\x22\x0a\x0aProfStef class methodDictionary.\x0a\x0a\x22Let''s create a new method to go to the next lesson:\x22\x0a\x0a|newMethod|\x0anewMethod := Compiler new\x0a\x09install: ''goToNextLesson ProfStef next.''\x0a\x09forClass: ProfStef class\x0a\x09protocol: ''navigation''.\x0a\x0a\x22Wow! I can''t wait to use my new method!\x22\x0a\x0aProfStef goToNextLesson.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -766,6 +798,7 @@ args: [],
 source: "reflectionContinued\x0a\x09^ Lesson\x0atitle: 'Reflection continued' \x0acontents: \x0a'\x22So cool, isn''t it ?  Before going further, let''s remove this method:\x22\x0a\x0aProfStef class methodAt: #goToNextLesson.\x0a\x0aProfStef class removeCompiledMethod: (ProfStef class methodAt: #goToNextLesson).\x0a\x0aProfStef class methodAt: #goToNextLesson.\x0a\x0a\x0a\x22Then move forward:\x22\x0a\x0aProfStef perform: #next'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -784,6 +817,7 @@ args: [],
 source: "tableOfContents\x0a^ #(\x09'welcome'\x0a\x09'doingVSPrinting'\x0a\x09'printing'\x0a\x0a\x09'basicTypesNumbers'\x0a\x09\x22'basicTypesCharacters'\x22\x0a\x09'basicTypesString'\x0a\x09\x22'basicTypesSymbol'\x22\x0a\x09'basicTypesArray'\x0a\x09'basicTypesDynamicArray'\x0a\x0a\x09'messageSyntaxUnary'\x0a\x09'messageSyntaxBinary'\x0a\x09'messageSyntaxKeyword'\x0a\x09'messageSyntaxExecutionOrder'\x0a\x09'messageSyntaxExecutionOrderParentheses'\x0a\x09'mathematicalPrecedence'\x0a\x09'messageSyntaxCascade'\x0a\x09'messageSyntaxCascadeShouldNotBeHere'\x0a\x0a\x09'blocks'\x0a\x09'blocksAssignation'\x0a\x09'conditionals'\x0a\x09'loops'\x0a\x09'iterators'\x0a\x0a\x09'instantiation'\x0a\x0a\x09'reflection'\x0a\x09'reflectionContinued'\x0a\x09\x22'pharoEnvironment'\x22\x0a\x0a\x09\x22'debugger'\x22\x0a\x09'theEnd' )",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -807,6 +841,7 @@ args: [],
 source: "theEnd\x0a\x09^ Lesson\x0atitle: 'Tutorial done !' \x0acontents: \x0a'\x22This tutorial is done. Enjoy programming Smalltalk with Amber. \x0a\x0aYou can run this tutorial again by evaluating: ProfStef go.\x0a\x0aSee you soon !\x22\x0a'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -830,6 +865,7 @@ args: [],
 source: "welcome\x0a\x09^ Lesson\x0atitle: 'Welcome' \x0acontents: \x0a' \x22Hello! I''m Professor Stef. \x0a\x0aYou must want me to help you learn Smalltalk.\x0a\x0aSo let''s go to the first lesson.  Select the text below and click on the ''DoIt'' button\x22\x0a\x0aProfStef next.'",
 referencedClasses: ["Lesson"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:contents:"]
 }),
 $globals.SmalltalkSyntaxTutorial);
@@ -863,6 +899,7 @@ args: [],
 source: "contents\x0a\x09^ contents ifNil: [contents := '']",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.Lesson);
@@ -882,6 +919,7 @@ args: ["aString"],
 source: "contents: aString\x0a\x09contents := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Lesson);
@@ -912,6 +950,7 @@ args: [],
 source: "title\x0a\x09^ title ifNil: [title := '']",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:"]
 }),
 $globals.Lesson);
@@ -931,6 +970,7 @@ args: ["aString"],
 source: "title: aString\x0a\x09title := aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.Lesson);
@@ -958,6 +998,7 @@ args: ["aTitle", "someContents"],
 source: "title: aTitle contents: someContents\x0a\x09^ (self new)\x0a\x09\x09title: aTitle;\x0a\x09\x09contents: someContents",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["title:", "new", "contents:"]
 }),
 $globals.Lesson.a$cls);
@@ -987,6 +1028,7 @@ args: [],
 source: "first\x0a\x09self tutorialPlayer first.\x0a\x09^ self showCurrentLesson.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["first", "tutorialPlayer", "showCurrentLesson"]
 }),
 $globals.ProfStef);
@@ -1011,6 +1053,7 @@ args: [],
 source: "next\x0a\x09self tutorialPlayer next.\x0a\x09^ self showCurrentLesson.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["next", "tutorialPlayer", "showCurrentLesson"]
 }),
 $globals.ProfStef);
@@ -1035,6 +1078,7 @@ args: [],
 source: "previous\x0a\x09self tutorialPlayer previous.\x0a\x09^ self showCurrentLesson.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["previous", "tutorialPlayer", "showCurrentLesson"]
 }),
 $globals.ProfStef);
@@ -1071,6 +1115,7 @@ args: [],
 source: "progress\x0a\x09^ '(', self tutorialPositionString, '/', self tutorialSizeString, ')'.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: [",", "tutorialPositionString", "tutorialSizeString"]
 }),
 $globals.ProfStef);
@@ -1104,6 +1149,7 @@ args: [],
 source: "showCurrentLesson\x0a\x09| lesson |\x0a\x09lesson := self tutorialPlayer currentLesson.\x0a\x09widget contents: lesson contents.\x0a\x09widget setTitle: lesson title , ' ' , self progress.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["currentLesson", "tutorialPlayer", "contents:", "contents", "setTitle:", ",", "title", "progress"]
 }),
 $globals.ProfStef);
@@ -1134,6 +1180,7 @@ args: [],
 source: "tutorialPlayer\x0a\x09^ tutorialPlayer ifNil: [tutorialPlayer := TutorialPlayer new]",
 referencedClasses: ["TutorialPlayer"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.ProfStef);
@@ -1157,6 +1204,7 @@ args: [],
 source: "tutorialPositionString\x0a\x09^ self tutorialPlayer tutorialPosition asString.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["asString", "tutorialPosition", "tutorialPlayer"]
 }),
 $globals.ProfStef);
@@ -1180,6 +1228,7 @@ args: [],
 source: "tutorialSizeString\x0a\x09^ self tutorialPlayer size asString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["asString", "size", "tutorialPlayer"]
 }),
 $globals.ProfStef);
@@ -1199,6 +1248,7 @@ args: ["aWidget"],
 source: "widget: aWidget\x0a\x09widget := aWidget",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.ProfStef);
@@ -1231,6 +1281,7 @@ args: [],
 source: "default \x0a\x09^ instance ifNil: [instance := self new]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.ProfStef.a$cls);
@@ -1254,6 +1305,7 @@ args: [],
 source: "first\x0a\x09^ self default first.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["first", "default"]
 }),
 $globals.ProfStef.a$cls);
@@ -1278,6 +1330,7 @@ args: [],
 source: "go\x0a\x09self first.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["first"]
 }),
 $globals.ProfStef.a$cls);
@@ -1301,6 +1354,7 @@ args: [],
 source: "next\x0a\x09^ self default next.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["next", "default"]
 }),
 $globals.ProfStef.a$cls);
@@ -1324,6 +1378,7 @@ args: [],
 source: "previous\x0a\x09^ self default previous.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["previous", "default"]
 }),
 $globals.ProfStef.a$cls);
@@ -1347,6 +1402,7 @@ args: [],
 source: "start\x0a\x09^ TrySmalltalkWidget open",
 referencedClasses: ["TrySmalltalkWidget"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["open"]
 }),
 $globals.ProfStef.a$cls);
@@ -1372,6 +1428,7 @@ args: [],
 source: "contents\x0a\x09^self workspace val",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["val", "workspace"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1396,6 +1453,7 @@ args: ["aString"],
 source: "contents: aString\x0a\x09self workspace val: aString",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["val:", "workspace"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1488,6 +1546,7 @@ args: ["html"],
 source: "renderButtonsOn: html\x0a    html button\x0a\x09with: 'DoIt';\x0a\x09title: 'ctrl+d';\x0a\x09onClick: [self workspace doIt].\x0a    html button\x0a\x09with: 'PrintIt';\x0a\x09title: 'ctrl+p';\x0a\x09onClick: [self workspace printIt].\x0a    html button\x0a\x09with: 'InspectIt';\x0a\x09title: 'ctrl+i';\x0a\x09onClick: [self workspace inspectIt]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["with:", "button", "title:", "onClick:", "doIt", "workspace", "printIt", "inspectIt"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1551,6 +1610,7 @@ args: ["html"],
 source: "renderOn: html\x0a\x09html div \x0a\x09\x09class: 'profStef'; \x0a\x09\x09with: [header := html h2];\x0a\x09\x09with: [self workspace renderOn: html];\x0a\x09\x09with: [self renderButtonsOn: html].\x0a          ProfStef default \x0a\x09\x09widget: self;\x0a\x09\x09showCurrentLesson",
 referencedClasses: ["ProfStef"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["class:", "div", "with:", "h2", "renderOn:", "workspace", "renderButtonsOn:", "widget:", "default", "showCurrentLesson"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1583,6 +1643,7 @@ args: ["aString"],
 source: "setTitle: aString\x0a\x09header contents: [:html | html with: aString]",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["contents:", "with:"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1613,6 +1674,7 @@ args: [],
 source: "workspace\x0a\x09^ workspace ifNil: [\x0a          \x09workspace := SourceArea new]",
 referencedClasses: ["SourceArea"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.TrySmalltalkWidget);
@@ -1638,6 +1700,7 @@ args: [],
 source: "open\x0a\x09self new appendToJQuery: 'body' asJQuery.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["appendToJQuery:", "new", "asJQuery"]
 }),
 $globals.TrySmalltalkWidget.a$cls);
@@ -1666,6 +1729,7 @@ args: [],
 source: "currentLesson\x0a\x09^ self tutorial lessonAt: self tutorialPosition.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["lessonAt:", "tutorial", "tutorialPosition"]
 }),
 $globals.TutorialPlayer);
@@ -1690,6 +1754,7 @@ args: [],
 source: "first\x0a\x09self rewind.\x0a\x09^ self currentLesson",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["rewind", "currentLesson"]
 }),
 $globals.TutorialPlayer);
@@ -1714,6 +1779,7 @@ args: [],
 source: "last\x0a\x09tutorialPosition := self size.\x0a\x09^ self currentLesson",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["size", "currentLesson"]
 }),
 $globals.TutorialPlayer);
@@ -1743,6 +1809,7 @@ args: [],
 source: "next\x0a\x09self tutorialPosition < self size\x0a\x09\x09ifTrue: [tutorialPosition := tutorialPosition + 1].\x0a\x09^ self currentLesson",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", "<", "tutorialPosition", "size", "+", "currentLesson"]
 }),
 $globals.TutorialPlayer);
@@ -1772,6 +1839,7 @@ args: [],
 source: "previous\x0a\x09tutorialPosition >  1 ifTrue: [tutorialPosition := tutorialPosition  - 1].\x0a\x09^ self currentLesson",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifTrue:", ">", "-", "currentLesson"]
 }),
 $globals.TutorialPlayer);
@@ -1791,6 +1859,7 @@ args: [],
 source: "rewind\x0a\x09tutorialPosition := 1.",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TutorialPlayer);
@@ -1814,6 +1883,7 @@ args: [],
 source: "size\x0a\x09^ self tutorial size",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["size", "tutorial"]
 }),
 $globals.TutorialPlayer);
@@ -1844,6 +1914,7 @@ args: [],
 source: "tutorial\x0a\x09^ tutorial  ifNil: [tutorial := SmalltalkSyntaxTutorial new]",
 referencedClasses: ["SmalltalkSyntaxTutorial"],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "new"]
 }),
 $globals.TutorialPlayer);
@@ -1863,6 +1934,7 @@ args: ["aTutorial"],
 source: "tutorial: aTutorial\x0a\x09tutorial := aTutorial",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TutorialPlayer);
@@ -1893,6 +1965,7 @@ args: [],
 source: "tutorialPosition \x0a\x09^ tutorialPosition  ifNil: [\x0a\x09\x09self rewind.\x0a\x09\x09tutorialPosition.\x0a\x09].",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: ["ifNil:", "rewind"]
 }),
 $globals.TutorialPlayer);
@@ -1912,6 +1985,7 @@ args: ["aTutorialPosition"],
 source: "tutorialPosition: aTutorialPosition \x0a\x09tutorialPosition := aTutorialPosition",
 referencedClasses: [],
 //>>excludeEnd("ide");
+pragmas: [],
 messageSends: []
 }),
 $globals.TutorialPlayer);