Skip to content

laamella-gad/s-expressions

Repository files navigation

s-expressions library for Java

S-Expressions are a very simple, very flexible data format. It describes tree structures, or in this case: lists of lists or strings.

Goals

Have a simple, efficient format for...

  • data transfer
  • configuration files
  • object serialization

Additionally, make the API flexible enough to support other use cases, like implementing a Lisp.

Examples

Sample for serialization

TODO

Sample for configuration files

A simple configuration file reader is supplied. It can read the following kind of property files:

; Sample config file
; At the lowest level, we have a key->value mapping
(key value)
(keys-dont-have-spaces but the values can have spaces. All    whitespace    is turned into a single space.)
(but! "when you quote a value, spaces    are     retained")
(my-value-is-an-empty-string)

; Here we have a hierarchy.
(application
  (window
     (width 320)
     (height 200)
     (x 100)
     (y 100))
  (name Hello World!))

It can be read as if it were a .properties file:

SProperties properties = new SProperties();
properties.load("/config.s");

properties.get("application.window.height").ifPresent(System.out::println);

for (Map.Entry<String, String> e : properties) {
    System.out.println(e.getKey() + "->" + e.getValue());
}

Sample for data storage

TODO