2011-10-06 77 views
1

我和一位編輯有一個小小的項目,我有一些特殊的需求,而且我在一個下午一起攻擊了它。一位同事看着我的肩膀(你不討厭那個?),並說:「哦,整齊,但它可以做X?」Scala編寫的腳本

因此,爲了結合我不斷學習新事物的需求,並在該小編輯器上啓用一些擴展功能,我想在其中添加一些簡單的操作功能。因此,我想啓用一些腳本。

我發現了一些關於ScriptEngine的教程,那不是問題所在。問題是,它似乎只支持通過Rhino的JavaScript。我已經通過apt-get安裝了它們:JRuby,Jython,Groovy,但ScriptEngine不知道它們。

我更願意在我的build.sbt中刪除依賴項。也許有人知道一個方法來做到這一點?

如果我恢復到JavaScript,我可以安全地假定每臺機器上都安裝有Rhino的Rhino?

+1

您可以放心地假設犀牛安裝每臺機器上使用JDK 6或更高版本(第5版也可以工作) –

回答

0

Stir some Groovy into your Java apps是一個developerWorks教程,它不依賴於ScriptEngine,而是使用groovy.lang.GroovyClassLoader - 我一直試圖將它適應於Scala,但還沒有完成它(讓我知道它是怎麼回事)。

當適應斯卡拉,記住:

ClassLoader parent = CLEmbedGroovy.class.getClassLoader(); 

寫的是:

val parent: ClassLoader = classOf[CLEmbedGroovy].getClassLoader() 

再往下這篇文章還有其他有趣的選項,如GroovyScriptEngine。 SBT-明智的,我認爲(source),你只需要在下降:

val groovyAll1.0Jsr = "groovy" % "groovy-all-1.0-jsr" % "05" 

祝你好運!

1

這是一篇關於嵌入Scala解釋器的文章。然而,這可能會對你正在做的事情有所矯枉過正。

http://suereth.blogspot.com/2009/04/embedding-scala-interpreter.html

你也可以看看scaladocs直接的解釋。

http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/compiler/scala/tools/nsc/interpreter/package.html

如果他們是非常簡單的操作功能,您可以編寫使用解析器組合自己的語言。

http://www.codecommit.com/blog/scala/the-magic-behind-parser-combinators