The POM configuration language (short for property object model, or perhaps, pommicket’s obvious-er markup) is a “markup” language designed for writing software configurations. Unlike other markup languages, which have overwrought syntax and strange corner cases, POM’s syntax is designed to be as simple as possible, to minimize confusion and to make it easier to write a parser for it. For example, the official Python library is under 600 lines of code, including documentation.
At its core, a POM configuration is an association between keys and values.
Keys are string identifiers chosen by the application to refer to settings in the configuration;
these can use a-zA-Z0-9_./*-
and non-ASCII characters.
Values can be any Unicode strings not containing a null character.
# A POM configuration for a text editor
indentation-type = tabs
show-line-numbers = yes
tab-size = 4
font-size = 18
file-extensions.python = .py
[file-extensions]
C = .c, .h
Cpp = .cpp, .hpp, .cc, .hh
[plug-in.edit-over-ssh]
path = "~/misc/edit-over-ssh.so"
enabled = yes
[plug-in.wrap-text]
path = "~/misc/wrap_text_v3.5.7.so"
enabled = no
The POM syntax has no distinction between different types of data (numbers, strings, booleans). Instead, this is handled in the code which reads the configuration, using different functions/methods to parse values as various data types. The mapping from string values to signed and unsigned integers, floating-point numbers, booleans, and lists is defined in the specification.
Currently the following official POM parsing libraries exist:
Contributions are welcome! Some particular areas where you might want to help out: