Script to Convert ConfigurationOf to BaselineOf

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
Report Content as Inappropriate

Script to Convert ConfigurationOf to BaselineOf

Sean P. DeNigris
This post has NOT been accepted by the mailing list yet.
I got tired of manually converting Configs into Baselines, so I wrote a little script. You pass it the selector of a #baselineXyz: method, and it converts it (i.e. changes the pragma, removes the blessing and repo, etc) Hopefully you will find it useful. Cross posting to Pharo Users list...

ConfigurationOf>>#createBaselineFrom: selector

        | projectName baselineName baseline methodTree commonBlockBody repoSetter |
        "Create new class"
        projectName := self name allButFirst: self superclass name size.
        baselineName := 'BaselineOf', projectName.
        baseline := BaselineOf subclass: baselineName asSymbol
        instanceVariableNames: ''
        classVariableNames: ''
        category: baselineName.
        "Convert baseline##: method"
        methodTree := (self methodNamed: selector) parseTree.
        methodTree selector: #baseline:.
        methodTree pragmas at: 1 put: (RBPragmaNode selector: #baseline arguments: #()).
        commonBlockBody := methodTree statements first arguments last body.
        repoSetter := commonBlockBody statements detect: [ :e | e selector = #repository: ].
        commonBlockBody removeNode: repoSetter.
        "Compile baseline method"
        baseline compile: methodTree newSource classified: 'baseline'