Skip to content

droidengineer/SDLang-D

 
 

Repository files navigation

SDLang-D

An SDL (Simple Declarative Language) library for D.

SDL is a data language like JSON, XML or YAML, except it's:

  • Less verbose than JSON and XML.
  • Type-aware.
  • Easier to learn and read than YAML.

This is what SDL looks like (some of these examples, and more, are from the SDL site):

first "Joe"
last "Coder"

numbers 12 53 2 635
names "Sally" "Frank N. Stein"
pets chihuahua="small" dalmation="hyper" mastiff="big"

mixed 34.7f "Tim" somedate=2010/08/14
folder "myFiles" color="yellow" protection=on {
    folder "my images" {
        file "myHouse.jpg" color=true date=2005/11/05
        file "myCar.jpg" color=false date=2002/01/05
    }
    folder "my documents" {
        document "resume.pdf"
    }
}

Tags are of this form:

[tag name] [values] [attributes] [children]

Tag and attribute names can optionally include a namespace prefix (ie, namespace:name). All parts are optional, the only exception being that an anonymous (ie, no name) tag must have at least one value.

Also:

  • Tags are separated by either newline or semicolon.
  • Whitespace and indentation is not significant (other than newlines).
  • The line-continuation operator is \ (backslash). This can be used to split a tag across multiple lines.
  • Line comments start with either #, // or --.
  • Block comments start with /* and end with */.
  • All the data types and syntax details are described here.

Differences from original Java implementation

  • API is completely redesigned for D.
  • License is zlib/libpng, not LGPL. (No source from the Java or Ruby implementations was used or looked at.)
  • Anonymous tags are named "" (empty string) not "content".
  • Dates with unknown or invalid time zones use a special type indicating "unknown time zone" (DateTimeFracUnknownZone) instead of assuming GMT.

Documentation

About

An SDL (Simple Declarative Language) library for D

Resources

License

Stars

Watchers

Forks

Packages

No packages published