将 GNU Smalltalk 项目导入 Pharo?
Importing a GNU Smalltalk project into Pharo?
我有大约 1800 行 GNU Smalltalk 代码要放入 Pharo。我已经开始 class by class,选择器一个选择器,但它非常耗时且乏味。
有没有办法批量导入项目?我可以轻松地使用 vi
预先调整 GST 源文件的格式,使其更像 Pharo。
我考虑过的另一件事是复制 "starter" .mcz
文件,了解 source.st
文件的格式,然后创建一个新的 source.st
文件 cat
s 和 vi
。但是还有 snapshot.bin
文件,其中似乎也有源代码,这使它成为一条艰难的道路。似乎应该有更简单的方法。我已经 Google 用不同的短语来寻找它,但没有找到任何东西。
将其放入 Monticello (.mcz) 格式对于迁移来说太过分了。只需将其转换为 fileout 格式 (http://wiki.squeak.org/squeak/1105),一旦您通过 filein 将其加载到 Pharo 中,您就可以根据需要使用 GUI 创建一个 Monticello 包。
查看文件输出格式涉及的快速方法(主要是将“!”放在正确的位置):
- 加载 Pharo
- 打开浏览器
- 右键单击菜单中的 class 和 select 'File Out'
- 您应该会在启动 Pharo 的目录中看到一个名为 [Classname].st 的文件
假设您有两个 classes,LuckyClass1
Object
的子class 和 [=14 的 LuckyClass2
子class =].假设您的名字是 LuckyName
。假设您想将代码放入包 Lucky-Package1
.
Object subclass: #LuckyClass1
LuckyClass1 subclass: #LuckyClass2
Class LuckyClass1
带有一个实例端方法 luckyInstanceSideMethod1
,一个 class 端方法 luckyClassSideMethod1
和实例端变量 luckyInstanceSideVariable1
和 class边变量LuckyClassSideVariable1
.
类似地 class LuckyClass2
有一个实例端方法 luckyInstanceSideMethod1
,一个 class 端方法 luckyClassSideMethod1
和一个额外的实例端变量 luckyInstanceSideVariable2
和 class 端变量 LuckyClassSideVariable2
.
方法参考如下所示
LuckyClass1>>#luckyInstanceSideMethod1
LuckyClass1 class>>#luckyClassSideMethod1
LuckyClass2>>#luckyInstanceSideMethod1
LuckyClass2 class>>#luckyClassSideMethod1
在 Linux/Mac OS X 上,执行
vi Lucky-Package1-unix.st
放入名为Lucky-Package1-unix.st
的文件
像
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'
! !
事实上,您可以剪切并粘贴前面的块。
然后将换行符转换为回车 returns 否则 Pharo 会报错。这个很重要。如果你在 Linux/Mac OS X 你可以使用下面的
cat Lucky-Package1-unix.st | tr \n \r > Lucky-Package1-pharo.st
在 Windows 我仍然会使用 bash, vi, cat, tr from git-scm https://git-scm.com/download/win
然后归档 Lucky-Package1-pharo.st
。它应该出现在系统浏览器的 Lucky-Package1
包中。
我有大约 1800 行 GNU Smalltalk 代码要放入 Pharo。我已经开始 class by class,选择器一个选择器,但它非常耗时且乏味。
有没有办法批量导入项目?我可以轻松地使用 vi
预先调整 GST 源文件的格式,使其更像 Pharo。
我考虑过的另一件事是复制 "starter" .mcz
文件,了解 source.st
文件的格式,然后创建一个新的 source.st
文件 cat
s 和 vi
。但是还有 snapshot.bin
文件,其中似乎也有源代码,这使它成为一条艰难的道路。似乎应该有更简单的方法。我已经 Google 用不同的短语来寻找它,但没有找到任何东西。
将其放入 Monticello (.mcz) 格式对于迁移来说太过分了。只需将其转换为 fileout 格式 (http://wiki.squeak.org/squeak/1105),一旦您通过 filein 将其加载到 Pharo 中,您就可以根据需要使用 GUI 创建一个 Monticello 包。
查看文件输出格式涉及的快速方法(主要是将“!”放在正确的位置):
- 加载 Pharo
- 打开浏览器
- 右键单击菜单中的 class 和 select 'File Out'
- 您应该会在启动 Pharo 的目录中看到一个名为 [Classname].st 的文件
假设您有两个 classes,LuckyClass1
Object
的子class 和 [=14 的 LuckyClass2
子class =].假设您的名字是 LuckyName
。假设您想将代码放入包 Lucky-Package1
.
Object subclass: #LuckyClass1
LuckyClass1 subclass: #LuckyClass2
Class LuckyClass1
带有一个实例端方法 luckyInstanceSideMethod1
,一个 class 端方法 luckyClassSideMethod1
和实例端变量 luckyInstanceSideVariable1
和 class边变量LuckyClassSideVariable1
.
类似地 class LuckyClass2
有一个实例端方法 luckyInstanceSideMethod1
,一个 class 端方法 luckyClassSideMethod1
和一个额外的实例端变量 luckyInstanceSideVariable2
和 class 端变量 LuckyClassSideVariable2
.
方法参考如下所示
LuckyClass1>>#luckyInstanceSideMethod1
LuckyClass1 class>>#luckyClassSideMethod1
LuckyClass2>>#luckyInstanceSideMethod1
LuckyClass2 class>>#luckyClassSideMethod1
在 Linux/Mac OS X 上,执行
vi Lucky-Package1-unix.st
放入名为Lucky-Package1-unix.st
的文件
像
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'
! !
事实上,您可以剪切并粘贴前面的块。
然后将换行符转换为回车 returns 否则 Pharo 会报错。这个很重要。如果你在 Linux/Mac OS X 你可以使用下面的
cat Lucky-Package1-unix.st | tr \n \r > Lucky-Package1-pharo.st
在 Windows 我仍然会使用 bash, vi, cat, tr from git-scm https://git-scm.com/download/win
然后归档 Lucky-Package1-pharo.st
。它应该出现在系统浏览器的 Lucky-Package1
包中。