Skip to content

Instantly share code, notes, and snippets.

@peteruhnak
peteruhnak / RPackage-pseudo-docs.md
Last active June 25, 2017 15:50
Pharo RPackage pseudo-docs

Packages RPackage

Retrieving existing package by name

  • 'MyPackage' asPackage
  • RPackage organizer packageNamed: 'MyPackage'

Create package

  • (RPackage named: 'MyPackage') register
1 to: 100 do: [ :o |
'log.txt' asFileReference
writeStreamDo: [ :stream |
stream
setToEnd;
nextPutAll: 'o(';
nextPutAll: o asString;
nextPutAll: ')';
crlf ].
xmi := OPUMLBootstrapGeneratorTest umlSpecs.
reader := OPUMLXMIReader new.
reader classPrefix: 'OPUML'.
model := (reader readXmi: xmi) first.
"select all classes in the entire metamodel"
cls := (model packagedElements flatCollect: #packagedElements) select: [ :each | each isKindOf: OPUMLClass ].
rootName := 'Behavior'.
BaselineOfXMLMAGenerator project latestVersion projects collect: [ :each | each name -> each versionString ] as: Array. "{'XMLParser'->#stable. 'XPath'->#stable. 'Magritte'->#stable. 'MagritteXMLBindings'->'baseline'. 'ChangesBuilder'->'baseline'}"
version := BaselineOfXMLMAGenerator project latestVersion.
nodes := version projects, version packages, version groups.
b := RTMondrian new.
b shape text text: #name.
b nodes: nodes.
@peteruhnak
peteruhnak / slot-vs-accessor.md
Last active September 20, 2017 17:28
Slot vs accessor methods for subscribing/unsubscribing

Subscription Slot vs Accessor

Base (subscription to the model in some manner)

BaseController>>subscribeTo: aModel
  aModel announcer when: ModelRenamed do: [ :ann | self logCr: self class name, ': ' , aModel name ]

BaseController>>unsubscribeFrom: aModel
  aModel announcer unsubscribe: self
OpalCompiler>>compile
| cm |
[ [ ast := self parse.
self doSemanticAnalysis.
self callPlugins ]
on: OCSourceCodeChanged
do: [ :notification |
self source: notification newSourceCode.
notification retry ].
cm := ast generate: self compilationContext compiledMethodTrailer ]

RBParser node rewrite

Question

something: aSomething
    something := aSomething

[OUT]

stereotypeText := BrRopedText string: '<<Metaclass>>'.
stereotypeText
attributes: { BrFontSizeAttribute size: 12 }
from: 1 to: stereotypeText size.
stereotype := BlTextElement new
constraintsDo: [ :c |
c linear horizontal alignCenter
];
text: stereotypeText.
MetacelloPharoPlatform select.
#(
'BaselineOfTonel'
'BaselineOfLibGit'
'BaselineOfIceberg'
'Iceberg-UI'
'Iceberg-Plugin-GitHub'
'Iceberg-Plugin'
'Iceberg-Metacello-Integration'
'Iceberg-Libgit-Tonel'