我有大约1800行GNU Smalltalk代码我想进入Pharo。我已经开始按类选择,按选择器选择,但这非常耗时且乏味。
有没有办法批量导入项目?我可以使用vi
轻松调整GST源文件的格式,使其更像Pharo-like。
我考虑过的另一件事是复制一个"起动器" .mcz
文件,了解source.st
文件的格式,然后使用文件source.st
和cat
创建新的vi
。但是那里的snapshot.bin
文件似乎也有源代码,这使得它成为一条艰难的道路。似乎应该有一个更简单的方法。我已经谷歌用不同的短语来表达它,但却无法击中任何东西。
答案 0 :(得分:7)
将其置于蒙蒂塞洛(.mcz)格式对于迁移来说是过度的。只需将其转换为fileout格式(http://wiki.squeak.org/squeak/1105),一旦您通过filein将其加载到Pharo中,您就可以根据需要使用GUI创建Monticello软件包。
快速查看哪种文件格式涉及(主要是在正确的位置放置'!')
答案 1 :(得分:2)
假设您有两个类,LuckyClass1
是Object
的子类和LuckyClass2
的{{1}}子类。让我们说你的名字是LuckyClass1
。我们假设您要将代码放入包LuckyName
。
Lucky-Package1
使用实例方法Object subclass: #LuckyClass1
LuckyClass1 subclass: #LuckyClass2
的类LuckyClass1
,类方法luckyInstanceSideMethod1
和实例侧变量luckyClassSideMethod1
以及类侧变量luckyInstanceSideVariable1
。
类似于具有实例方法LuckyClassSideVariable1
的类LuckyClass2
,类方法luckyInstanceSideMethod1
和附加实例侧变量luckyClassSideMethod1
以及类侧变量luckyInstanceSideVariable2
方法引用看起来像这样
LuckyClassSideVariable2
在Linux / Mac OS X上,执行
LuckyClass1>>#luckyInstanceSideMethod1
LuckyClass1 class>>#luckyClassSideMethod1
LuckyClass2>>#luckyInstanceSideMethod1
LuckyClass2 class>>#luckyClassSideMethod1
放入名为vi Lucky-Package1-unix.st
的文件
Lucky-Package1-unix.st
事实上,你可以削减&粘贴上一个块。
然后将换行符转换为回车符,否则Pharo会抱怨。这个很重要。如果您使用的是Linux / Mac OS X,则可以使用以下
Object subclass: #LuckyClass1
instanceVariableNames: 'luckyInstanceSideVariable1'
classVariableNames: 'LuckyClassSideVariable1'
poolDictionaries: ''
category: 'Lucky-Package1'!
!LuckyClass1 methodsFor: 'lucky instance side protocol 1' stamp: 'LuckyName 6/8/2016 17:05'!
luckyInstanceSideMethod1
^ luckyInstanceSideVariable1 := 'lucky instance side'
! !
!LuckyClass1 class methodsFor: 'lucky class side protocol 1' stamp: 'LuckyName 6/8/2016 17:06'!
luckyClassSideMethod1
^ LuckyClassSideVariable1 := 'lucky class side'
! !
LuckyClass1 subclass: #LuckyClass2
instanceVariableNames: 'luckyInstanceSideVariable2'
classVariableNames: 'LuckyClassSideVariable2'
poolDictionaries: ''
category: 'Lucky-Package1'!
!LuckyClass2 methodsFor: 'lucky instance side protocol 1' stamp: 'LuckyName 6/8/2016 17:15'!
luckyInstanceSideMethod1
^ super luckyInstanceSideMethod1, ' subclass'
! !
!LuckyClass2 class methodsFor: 'lucky class side protocol 1' stamp: 'LuckyName 6/8/2016 17:17'!
luckyClassSideMethod1
^ super luckyClassSideMethod1, ' subclass'
! !
在Windows上,我仍然会使用来自git-scm {b-3}的bash,vi,cat,tr
然后在cat Lucky-Package1-unix.st | tr \\n \\r > Lucky-Package1-pharo.st
中归档。它应该出现在系统浏览器的Lucky-Package1-pharo.st
包中。