Sha256: 74d86a8d1259055efa21f86f69a2620669a4c2e3aea25a3ad04f8e317fb02dc3

Contents?: true

Size: 1.76 KB

Versions: 6

Compression:

Stored size: 1.76 KB

Contents

"This script prepares Smalltalk classes and adds additional methods.
Use object.rb for classes that may not be changed due to object
security policy."

|methods clsDbeHalt|

methods := Dictionary new.

clsDbeHalt := AbstractException subclass: 'DBEHalt'
  instVarNames: #(wrappedException)
  classVars: #()
  classInstVars: #()
  poolDictionaries: #()
  inDictionary: 'Globals'
  category: 'User Classes'
  options: #().

clsDbeHalt compile: 'wrappedException: anException
  wrappedException := anException.'.

clsDbeHalt compile: 'wrappedException
  ^ wrappedException'.

clsDbeHalt compile: 'initialize
  gsResumable := true.'.

clsDbeHalt class compile: 'signalFor: anException
  ^ self new
    wrappedException: anException;
    signal.'.

AbstractException compile: 'signalNotTrappable
  "Signal trappable exception for database explorer."
  gsTrappable := false.
  DBEHalt signalFor: self.'.

RubyProc compile: 'callAndRescue: rescueBlock
  "Evaluate block for database explorer. Catches all kinds
  of exceptions."
  ^ [rescueBlock value: {false. block value}]
    on: AbstractException
    do: [:exc | |cc|
      rescueBlock value: {true. exc}].'.

"This won't work for meta classes but it allows us to define
the primitive on Class (Ruby)."
Metaclass3 compile: 'subclasses
  ^ ClassOrganizer cachedOrganizer subclassesOf: self'.

"Dictionary (different from RubyHash)"
"methods at: Dictionary put: 'asDatabaseView: depth ranges: ranges params: params
  |view|
  view := super @ruby1:to_database_view: depth _: ranges _: params
  view at: #basetype put: #dictionary.'.

methods keysAndValuesDo: [:behavior :method |
  behavior compileMethod: method category: '*maglev-database-explorer' environmentId: 0.
  behavior @ruby1:primitive: 'to_database_view' _: 'asDatabaseView:ranges:params:']."


Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
mdbe-0.1.0 lib/mdbe/database_views/smalltalk_classes.st
maglev-database-explorer-0.0.5 lib/maglev-database-explorer/database_views/smalltalk_classes.st
maglev-database-explorer-0.0.4 lib/maglev-database-explorer/database_views/smalltalk_classes.st
maglev-database-explorer-0.0.3 lib/maglev-database-explorer/database_views/smalltalk_classes.st
maglev-database-explorer-0.0.2 lib/maglev-database-explorer/database_views/smalltalk_classes.st
maglev-database-explorer-0.0.1 lib/maglev-database-explorer/database_views/smalltalk_classes.st