diff options
author | pommicket <pommicket@gmail.com> | 2025-09-23 14:26:18 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2025-09-23 14:26:18 -0400 |
commit | ee57036c9cfdff27a81a38a9c5abc3b631f3a83c (patch) | |
tree | 812ad4393c68b0575c4010d9b25d39e20ceefb1c /site/index.html | |
parent | 6ae91130c7c2ff1c11ecfe5798d8037954a4d570 (diff) |
POM website
Diffstat (limited to 'site/index.html')
-rw-r--r-- | site/index.html | 72 |
1 files changed, 70 insertions, 2 deletions
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 @@ <!DOCTYPE html> +<!--TODO: +- make icon +--> <html lang="en"> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1" name="viewport"> <title>POM Configuration Language</title> - <link rel="icon" href="data:,"><!--TODO--> + <link rel="icon" href="/icon.png"> </head> <body> - <h3>Coming soon</h3> + <h1>POM Configuration Language</h1> + <ul> + <li><a href="/spec.html">Specification (v. 0.1.0)</a></li> + <li><a href="/tests/index.html">Test suite</a></li> + </ul> + <p> + The POM configuration language (short for property object model, or perhaps, pommicket’s obvious-<i>er</i> 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. + </p> + <p> + 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 <code>a-zA-Z0-9_./*-</code> and non-ASCII characters. + Values can be any Unicode strings not containing a null character. + </p> + <pre><code># 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 + </code></pre> + <p> + 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. + </p> + <h2>Libraries</h2> + <p> + Currently the following official POM parsing libraries exist: + </p> + <ul> + <li>C/C++: <a href="https://github.com/pommicket/pom-c">libpom/libpom++</a></li> + <li>Python: <a href="https://pypi.org/project/pom-parser">pom_parser</a></li> + <li>Rust: <a href="https://crates.io/crates/pom-parser">pom-parser</a></li> + </ul> + <h2>Contributing</h2> + <p> + Contributions are welcome! Some particular areas where you might want to help out: + </p> + <ul> + <li>Clarifying any ambiguities you might find in the specification.</li> + <li>Writing more examples for POM parsing libraries.</li> + <li>Writing more <a href="/tests/index.html">tests</a> to handle cases that aren’t currently covered.</li> + <li>Fixing typos in documentation.</li> + <li>Fixing bugs in parsing libraries.</li> + <li>Writing parsing libraries (or bindings to existing ones) for more programming languages.</li> + </ul> </body> </html> |