ESONはEMF Simple Object Notationの略です。
ここで登場しているEMFはEclipse Modeling Frameworkのことで、EMFでモデルを作成するとそれに応じたコードが自動生成されるものです。
ESONはこのEMFモデルをテキストで表現する構文です。
EMFモデルのテキスト表現にはXMI(XML Metadata Interchange)もありますが、ESONはJSONのように人間が読みやすいようです。
例えば、以下のようなxcoreファイルによるモデルがあるときに、
package example
class Library {
String name
contains Book[] books
contains Writer writers
}
class Book {
String name
int pages
BookCategory category
refers Writer author
}
class Writer {
String name
}
enum BookCategory {
None, Mystery, SciFi, Biography
}
それに対応するESONは以下のようになります。
import example.*
Library {
books: [
Book {
name: "Perry Phodan"
pages: 123
author: Scheer
category: :SciFi
}
]
writers: [
Writer Scheer {
}
Writer ClarkDarlton {
}
]
}
構文
ESONファイルは使用するEPackageを指定するuse文で始まります。
その後はEClassの名前と中括弧が続き、その中に属性が列挙されています。
JSONを読み慣れている人ならば雰囲気である程度読むこともできる程度にJSONに似た構文です。
文字列型はダブルクォートで囲まれており、他のEClassを参照する時にはEClass名のみを記述します。
また列挙型(enum)をの要素を表すためには要素名の前に :
が必要がです。