Scala.jsでAceを使うためのライブラリを作った

例によってscala-js-ts-importerで生成したScalaコードを修正してコンパイルを通しただけのものですw

https://github.com/takezoe/scalajs-ace

使うにはbuild.sbtに以下の依存関係を追加します。

resolvers += "amateras-repo" at "http://amateras.sourceforge.jp/mvn-snapshot/"

libraryDependencies += "com.scalawarrior" %%% "scalajs-ace" % "0.0.1-SNAPSHOT"

実際の使い方はこんな感じ。

import com.scalawarrior.scalajs.ace

val editor = ace.edit("editor")
editor.setTheme("ace/theme/monokai")
editor.getSession().setMode("ace/mode/scala")

val text = editor.getValue()

DefinitelyTypedから.d.tsファイルを取ってきてscala-js-ts-importerでScala.jsのstatic typesを量産するのは割とお手軽でいい感じです。

ただ、生成されるのはJavaScriptライブラリのインターフェースに型が付いただけのものなので、そのままScala.jsで使うと残念な感じのコードになってしまうことも多いです。本格的に使うのであれば自動生成したstatic typesをScalaらしいインターフェースでラップしたほうがよさそうです。