| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | EnyoFriend subclass: #Eris        instanceVariableNames: ''        category: 'Eris'!!Eris methodsFor: 'actions'!doIt    | result |    [ result := self eval: self dollar richText getValue ]	on: Error	do: [:ex |		^self warn: ex messageText title: 'Error' button: 'Ooops...'].    ^result!clear	self dollar richText setValue: ''!eval: aString    | compiler node |    compiler := Compiler new.    node := compiler parseExpression: aString.    node isParseFailure ifTrue: [	^self warn: 'Ehrm, you are a Smalltalk n00b, right? That is not valid syntax.' title: 'Parsing Error' button: 'Okidoki...'].    ^compiler loadExpression: aString.!printString	^''!warn: aString title: aTitle button: caption	| block popup |	block := [popup close].	<props = {kind: 'ModalDialog', caption: aTitle, components: [			{kind: 'Control', content: aString, className: 'enyo-text-error warning-icon'},			{kind: 'Button', caption: caption, onclick: 'closePopup', style: 'margin-top:10px'}],		 closePopup: block}>.	popup := enyo create: props.	popup openAtCenter!print: aString    self dollar richText setValue: (self dollar richText getValue), ' ', aString!quack	"(self kind: 'Sound'; src: 'DuckQwaq.wav'; create) play"	(enyo create: (Dictionary new at: 'kind' put: 'Sound'; at: 'src' put: 'DuckQwaq.wav'; yourself)) play!printIt    self print: self doIt printString! !!Eris methodsFor: 'initialization'!initialize	| props doItBlock printItBlock quackBlock clearBlock |	super initialize.	doItBlock := [self doIt].	printItBlock := [self printIt].	quackBlock := [self quack].	clearBlock := [self clear].	<props = {kind: 'VFlexBox', components: [			{kind: 'PageHeader', content: 'Eris'}, 			{kind: 'RowGroup', caption: 'Workspace', components: [				{kind: 'RichText', richContent: false,					value: 'Put some funky Amber code here...',					autoWordComplete: false, spellcheck: false, autocorrect: false,					autoCapitalize: 'lowercase', alwaysLooksFocused: true				},				{kind: 'Toolbar', components: [					{caption: 'Do it', onclick: 'doit'},					{caption: 'Print it', onclick: 'printit'},					{caption: 'Clear', onclick: 'clear'},					{kind: 'Spacer'},					{caption: 'Quack!!', onclick: 'quack'}]}]}],		doit: doItBlock,		printit: printItBlock,		quack: quackBlock,		clear: clearBlock}>.	ui := enyo create: props.! !
 |