Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tinchodias/ficus
Library to define tree-like immutable objects in Pharo
https://github.com/tinchodias/ficus
pharo
Last synced: about 1 month ago
JSON representation
Library to define tree-like immutable objects in Pharo
- Host: GitHub
- URL: https://github.com/tinchodias/ficus
- Owner: tinchodias
- License: mit
- Created: 2024-08-02T14:39:57.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2024-08-03T19:14:20.000Z (3 months ago)
- Last Synced: 2024-09-25T21:24:06.840Z (about 2 months ago)
- Topics: pharo
- Language: Smalltalk
- Homepage:
- Size: 3.96 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Ficus
This (outdated) codebase contains prototypes developed during my Ph.D (~2015):
Ficus provides a framework for defining tree-like immutable objects in Pharo. It support first-class edits, which represent operations that can be applied to Ficus objects. It also supports first-class changes, which represent the change after applying an edit to a Ficus object.
FicusMetamodel defines a Ficus model (i.e. tree-like immutable objects) to represent Pharo metalevel objects.
RingFicus defines wrappers for FicusMetamodel which are polymorphic to real Pharo metalevel objects. In a nutshell, it's like the original Ring but with more isolation and more lightweight.
Also check [Yrupe project](https://github.com/tinchodias/Yrupe), a serializer for Ficus objects.
## Loading in Pharo 6
```smalltalk
Metacello new
smalltalkhubUser: 'MartinDias' project: 'Ficus';
configuration: #Ficus;
version: #development;
load.
```## Example of RingFicus
```smalltalk
environment := RFiFragileBaseClassProblemResources5A new ringEnvironment.
environment allClasses.
environment browse.
```## History
This repository was migrated from [this SmalltalkHub repo](http://smalltalkhub.com/MartinDias/Ficus/) with an [semi-automatic tool](https://github.com/pharo-contributions/git-migration) in a Pharo 9 with:
```smalltalk
migration := GitMigration on: 'MartinDias/Ficus'.
migration onEmptyMessage: [ :info | 'empty commit message' ].
migration downloadAllVersions.
migration populateCaches.
migration allAuthors. "#('Anonymous' 'CamilleTeruel' 'ChristopheDemarey' 'GuillermoPolito' 'MartinDIas' 'MartinDias' 'PabloTesone' 'SkipLentz' 'YuriyTymchuk' 'md')"
migration authors: {
'MartinDias' -> #('Martín Dias' '').
'MartinDIas' -> #('Martín Dias' '').
'md' -> #('Martín Dias' '').
'Anonymous' -> #('Martín Dias' '').
'CamilleTeruel' -> #('Camille Teruel' '').
'SkipLentz' -> #('Balletie' '').
'GuillermoPolito' -> #('Guille Polito' '').
'PabloTesone' -> #('Pablo Tesone' '').
'ChristopheDemarey' -> #('Christophe Demarey' '').
'YuriyTymchuk' -> #('Yuriy Tymchuk' '')
}.
migration
fastImportCodeToDirectory: 'src'
initialCommit: '93e8f1e1983ab81d8fe3440daca9b64bfee340b5'
to: 'ficusImport.txt'
```