XMLからインスタンスscala.xml
を取得するために、ライブラリがどのように実装されているのか疑問に思っています。Elem
だから私は書くことができます:
val xml = {
<myxml>
Some wired text withoud "'s or code like
import x
x.func()
It's like a normal sting in triple-quotes.
</myxml>
}
xml.text
String =
"
Some text wired withoud "'s or code like
import x
x.func()
It's like a normal sting in triple-quotes.
"
ソースコードを見ても、これがどのように達成されているかについての洞察は得られませんでした。「XML 検出」は (ハード) スカラ言語機能ですか、それとも内部 DSL ですか? 私はこのように自分のものを作りたいので:
var x = LatexCode {
\sqrt{\frac{a}{b}}
}
x.toString
"\sqrt{\frac{a}{b}}"
また
var y = PythonCode {
>>> import something
>>> something.func()
}
y.toString
"""import something ..."""
y.execute // e.g. passed to python as python-script
また
object o extends PythonCode {
import x
x.y()
}
o.toString
"""import x...."""
PythonCode { """import ...""" }
「DSL」などの使用は避けたいと思います。そして scala では、XML は魔法のようにscala.xml
-Class に転送されます。Symbol
で取得できるものと同じval a = 'symoblname
ですが、ソースコードでは、これがどのように実装されているかわかりません。
できれば内部DSLとして、どうすれば自分でそのようなことを行うことができますか?