Skip to content

Commit 15e8587

Browse files
committed
Added a new chapter Validation Rules
- Introduces a standardized mini-language for declarative configuration validation. - Covers document structure, node rules, types, constraints, templates, dependencies, versioning, diagnostics, and security considerations. - Enables portable, implementation-independent validation of ELCL configuration documents.
1 parent 4a30640 commit 15e8587

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+6435
-332
lines changed

.github/FUNDING.yml

Lines changed: 0 additions & 1 deletion
This file was deleted.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/.venv/
22
/venv/
33
/.idea/
4+
/build
45
/build/**
56
__pycache__
67
.DS_Store

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ The Erbsland Configuration Language (*ELCL*) is a human-centric configuration fo
44

55
## Current Status
66

7-
**ELCL version 1.0 has been officially released.** The language specification is complete, and reference implementations are currently in development and will be available soon.
7+
**ELCL version 1.2 has been officially released.** The language specification is complete, and reference implementations for c++ and python are available:
8+
- [C++ Reference Implementation](https://github.com/erbsland-dev/erbsland-cpp-configuration)
9+
- [Python Reference Implementation](https://github.com/erbsland-dev/erbsland-py-conf).
810

911
What’s still pending:
10-
- There are currently no defined guidelines for verification rules or for implementing a parser API. These sections will be published once the reference implementations are finalized.
11-
- Also, there are currently no contribution guidelines for the language specification.
12+
- There are no contribution guidelines for the language specification.
1213

1314
## Where to Start?
1415

@@ -27,10 +28,11 @@ What’s still pending:
2728
* **Compliance Test Suite**: An extensive test suite ensures that parsers conform to the *ELCL* specification, fostering reliable and consistent implementations.
2829
* **Implementation Levels**: *ELCL* supports various implementation levels, from lightweight micro-parsers for resource-constrained environments to full-featured parsers that handle complex configurations seamlessly.
2930
* **Metadata Support**: Metadata statements allow you to specify language versions and required features, ensuring backward compatibility and future-proofing.
31+
* **Validation Rules**: A standardized mini-language for validating configuration documents, ensuring data integrity and adherence to application-specific constraints.
3032

3133
## License
3234

33-
Copyright (c) 2025 Tobias Erbsland - Erbsland DEV. https://erbsland.dev
35+
Copyright (c) 2025-2026 Tobias Erbsland - Erbsland DEV. https://erbsland.dev
3436

3537
Licensed under the Apache License, Version 2.0 (the "License");
3638
you may not use this file except in compliance with the License.

data/constraint-matrix.json

Lines changed: 414 additions & 0 deletions
Large diffs are not rendered by default.

doc/_static/custom.css

Lines changed: 1 addition & 204 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/changelog.rst

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,30 @@
1010
Changelog
1111
*********
1212

13-
Version 1.0.10 - 2025-09-01
13+
Version 1.2.0 — 2026-01-22
14+
==========================
15+
16+
* Added a new chapter :doc:`validation-rules/index` defining **ELCL Validation Rules (ELCL-VR)**:
17+
18+
* Introduces a standardized mini-language for declarative configuration validation.
19+
* Covers document structure, node rules, types, constraints, templates, dependencies,
20+
versioning, diagnostics, and security considerations.
21+
* Enables portable, implementation-independent validation of ELCL configuration documents.
22+
23+
Version 1.0.10 — 2025-09-01
1424
===========================
1525

1626
* Added a page with a list of all known parser implementations.
1727
* Explained how to add your own parser to the list.
1828
* Improved the contribution guide with buttons to create issues and start discussions.
1929

20-
Version 1.0.8 - 2025-08-22
30+
Version 1.0.8 2025-08-22
2131
==========================
2232

2333
* Added the colon to the list of escaped characters in the "Test Outcome Format" chapter. This character had been accidentally omitted.
2434
* Added a design rationale box to explain the reasoning behind the escaping rules.
2535

26-
Version 1.0.6 - 2025-08-14
36+
Version 1.0.6 2025-08-14
2737
==========================
2838

2939
* Added examples of invalid floating-point values for clarity.
@@ -32,15 +42,15 @@ Version 1.0.6 - 2025-08-14
3242
* Broadened the rule to better deny any non-decimal formats for floating-point values.
3343
* Refined explanation of behavior when limits are exceeded, removing potentially misleading rounding example in the context of floating-point numbers.
3444

35-
Version 1.0.4 - 2025-07-10
45+
Version 1.0.4 2025-07-10
3646
==========================
3747

3848
- Clarified the relationship between `Syntax` and its specialized subcategories (`Character`, `UnexpectedEnd`, `Indentation`, `LimitExceeded`, `Unsupported`).
3949
- Reworded and expanded descriptions to improve readability and precision for parser implementors.
4050
- Added design rationales to explain the purpose and intent behind each specialized category.
4151
- Explicitly stated that distinguishing specialized errors is optional for parser conformance.
4252

43-
Version 1.0.0 - 2025-07-09
53+
Version 1.0.0 2025-07-09
4454
==========================
4555

4656
- Initial release

doc/conf.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,27 @@
77

88
sys.path.insert(0, str(Path(__file__).parent))
99

10+
# -- Project information -----------------------------------------------------
1011
project = "Erbsland Configuration Language"
1112
copyright = "2025, Erbsland DEV"
1213
author = "Erbsland DEV"
1314
release = "1.0"
14-
extensions = ["sphinx_rtd_theme", "_ext.styles", "sphinx_design"]
15+
16+
# -- General configuration ---------------------------------------------------
17+
extensions = ["sphinx_rtd_theme", "sphinx_design", "sphinx_copybutton", "_ext.styles"]
1518
templates_path = ["_templates"]
1619
exclude_patterns = ["build", "_build", "Thumbs.db", ".DS_Store"]
20+
21+
# -- Options for HTML output -------------------------------------------------
1722
html_theme = "sphinx_rtd_theme"
1823
html_static_path = ["_static"]
19-
html_css_files = ["custom.css"]
20-
html_js_files = ["overlay.js"]
24+
html_css_files = [
25+
"custom.css",
26+
]
27+
html_js_files = [
28+
"overlay.js",
29+
"https://erbsland.dev/ext/fa7/js/all.min.js",
30+
]
2131

2232

2333
def setup(app):
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
2+
:root {
3+
--color-design-rationale-bg: rgb(243, 231, 250);
4+
--color-design-rationale-title-bg: rgb(152, 106, 222);
5+
--color-design-rationale-title-text: white;
6+
--color-micro-parser-specs-bg: #fff;
7+
--color-micro-parser-specs-title-bg: #e8e8e8;
8+
--color-micro-parser-specs-title-text: #444;
9+
}
10+
11+
.design-rationale.admonition {
12+
background-color: var(--color-design-rationale-bg);
13+
14+
.admonition-title {
15+
background-color: var(--color-design-rationale-title-bg);
16+
color: var(--color-design-rationale-title-text);
17+
}
18+
19+
.admonition-title::before {
20+
content: "\f040";
21+
}
22+
}
23+
24+
.micro-parser-specs.admonition {
25+
background-color: var(--color-micro-parser-specs-bg);
26+
border: 1px solid var(--color-micro-parser-specs-title-bg);
27+
28+
.admonition-title {
29+
color: var(--color-micro-parser-specs-title-text);
30+
background-color: var(--color-micro-parser-specs-title-bg);
31+
}
32+
33+
.admonition-title::before {
34+
content: "\f2db";
35+
}
36+
}
37+

doc/css_source/_banner.scss

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
.banner {
3+
width: 100%;
4+
background-color: #cd5a13;
5+
color: white;
6+
padding: 0.5em 3em;
7+
margin: 0 0 0 10em;
8+
font-size: 16px;
9+
font-weight: 400;
10+
text-align: center;
11+
border-bottom: 5px solid #e4d3aa;
12+
}
13+
14+
@media screen and (max-width: 768px) {
15+
.banner {
16+
margin: 0;
17+
}
18+
}
19+

doc/css_source/_bnf-syntax.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
:root {
3+
--color-bnf-border: #3488db;
4+
}
5+
6+
.rst-content div.highlight-bnf {
7+
border: 1px solid var(--color-bnf-border);
8+
}
9+

0 commit comments

Comments
 (0)