DOML, aka Data Oriented Markup Language, is a data notation created in 2017.
#2393on PLDB | 7Years Old |
git clone https://github.com/DOML-Lang/DOML
The specification document for DOML
# Version 0.3
// Construct a new Color
Test = Color() {
RGB = 255, 64, 128,
}
// Constructors do exist
// the parameter names are purely for your own merit, they will check if its possible however (will be possible on most systems)
TheSame = Color::Normalized(r: 1, g: 0.25, b: 0.5) {
Name = "Bob"
}
// You can also just declare an object without scoping it
Other = Color()
Other.Name = "X"
// You can declare random other values
MyValue = 2
// You can also edit the original Test at any point EITHER by doing
Test.R = 50
// Or by doing
Test.{
G = 128
}
// You can declare arrays like
ArrayObject = []Color {
::Normalized(0.95, 0.55, 0.22){
Name = "Other", // Trailing commas are always allowed
},
// You can still do an empty construction
::() {
RGB = 50, 25, 125,
},
// And thus you can leave out the ::()
{
RGB = 50, 25, 125,
},
}
// You can also copy objects by doing
NewObj = Other
// Or can do something like
NewObj.Name = ArrayObject[0].Name
// You can also declare arrays inside object definitions
MyTags = Tags() {
// Note: all have to be of the same type
SetTags = ["Hello", "Other", "bits", "bobs", "kick"]
Name = MyTags.GetTags[0] // And indexing them works like you would think
}
// You can declare dictionaries like
// Dictionaries within objects can also be created similarly
MyDictionary = [String : Color] {
{
"Bob" : Color::Normalized(0.5, 1.2, 3.5) {
Name = "Bob's Color"
}
},
}
// No need to keep classes around in this example
# Deinit all