From ee57036c9cfdff27a81a38a9c5abc3b631f3a83c Mon Sep 17 00:00:00 2001 From: pommicket Date: Tue, 23 Sep 2025 14:26:18 -0400 Subject: POM website --- site/index.html | 72 ++++++++++++++++++++++++++++++++++++++++-- site/spec.html | 2 +- site/tests/errors.html | 28 ++++++++++++++++ site/tests/index.html | 28 ++++++++++++++++ site/tests/interpretation.html | 35 ++++++++++++++++++++ site/tests/location.html | 27 ++++++++++++++++ site/tests/parsing.html | 27 ++++++++++++++++ 7 files changed, 216 insertions(+), 3 deletions(-) create mode 100644 site/tests/errors.html create mode 100644 site/tests/index.html create mode 100644 site/tests/interpretation.html create mode 100644 site/tests/location.html create mode 100644 site/tests/parsing.html (limited to 'site') diff --git a/site/index.html b/site/index.html index e1d086a..b3b96de 100644 --- a/site/index.html +++ b/site/index.html @@ -1,12 +1,80 @@ + POM Configuration Language - + -

Coming soon

+

POM Configuration Language

+ +

+ 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. +

+

Libraries

+

+ Currently the following official POM parsing libraries exist: +

+ +

Contributing

+

+ Contributions are welcome! Some particular areas where you might want to help out: +

+ diff --git a/site/spec.html b/site/spec.html index 704395b..64b3802 100644 --- a/site/spec.html +++ b/site/spec.html @@ -13,7 +13,7 @@ } POM Language Specification - + diff --git a/site/tests/errors.html b/site/tests/errors.html new file mode 100644 index 0000000..eeaacfa --- /dev/null +++ b/site/tests/errors.html @@ -0,0 +1,28 @@ + + + + + + POM error tests + + + +

+ POM homepage · POM tests +

+

Error tests for POM

+ +

+ These tests are found in the tests/errors directory of the main POM repository. +

+

+ These tests are for checking that error conditions are + detected and gracefully handled. +

+

+ Each test in this directory has an error, + and should be rejected by a compliant parser. +

+ + + diff --git a/site/tests/index.html b/site/tests/index.html new file mode 100644 index 0000000..40642b0 --- /dev/null +++ b/site/tests/index.html @@ -0,0 +1,28 @@ + + + + + + POM tests + + + +

+ POM homepage +

+

Tests for POM

+

+ The tests listed below are freely available for checking that POM configuration parsers are implemented correctly. +

+

+ There are currently four test suites for POM parsing: +

+ + + + diff --git a/site/tests/interpretation.html b/site/tests/interpretation.html new file mode 100644 index 0000000..0bc4a5c --- /dev/null +++ b/site/tests/interpretation.html @@ -0,0 +1,35 @@ + + + + + + POM interpretation tests + + + +

+ POM homepage · POM tests +

+

Interpretation tests for POM

+

+ These tests are found in the tests/location directory of the main POM repository. +

+

+ These tests check that booleans, numbers, floats, and lists are interpreted correctly. +

+ diff --git a/site/tests/location.html b/site/tests/location.html new file mode 100644 index 0000000..3a1ec39 --- /dev/null +++ b/site/tests/location.html @@ -0,0 +1,27 @@ + + + + + + POM location tests + + + +

+ POM homepage · POM tests +

+

Location tests for POM

+

+ These tests are found in the tests/location directory of the main POM repository. +

+

+ These tests are for checking that definition location information + is correctly recorded. +

+

+ Each test consists of a file x.pom and a file x.locations.pom. + For every key in x.pom, there’s a corresponding key in x.locations.pom + which is set to the line number where the key was defined in x.pom. +

+ + diff --git a/site/tests/parsing.html b/site/tests/parsing.html new file mode 100644 index 0000000..00058ed --- /dev/null +++ b/site/tests/parsing.html @@ -0,0 +1,27 @@ + + + + + + POM parsing tests + + + +

+ POM homepage · POM tests +

+

Parsing tests for POM

+

+ These tests are found in the tests/parsing directory of the main POM repository. +

+

+ These tests are for checking that key-value pairs are parsed correctly. +

+

+ Each test x consists of two files, x.pom and x.flat.pom. These + files should produce the exact same schema, but x.flat.pom is formatted + in a simple way without any section headers, and only using doubly-quoted single-line strings. +

+ + + -- cgit v1.2.3