Skip to content

Commit 732670e

Browse files
committed
Add sponsor badge
1 parent db9db3a commit 732670e

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

README.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?logo=github)](https://github.com/sponsors/hyperpolymath)
2+
3+
// SPDX-License-Identifier: MPL-2.0
4+
= a2ml-haskell
5+
Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
6+
:toc:
7+
:toc-placement: preamble
8+
9+
Haskell library for parsing and rendering A2ML (Attested Markup Language)
10+
— attestation-native markup carrying trust metadata, cryptographic
11+
attestation fields, and provenance information.
12+
13+
== Overview
14+
15+
`a2ml-haskell` provides a purely functional parser and renderer over `Text`:
16+
17+
* `Data.A2ML.Parser``parseA2ML :: Text -> Either ParseError Document`.
18+
Line-oriented, no regex, no mutable state. Recognises headings, multi-line
19+
directive blocks (`@name: ... @end`), bullet lists, and inline formatting.
20+
21+
* `Data.A2ML.Renderer` — serialises a `Document` back to canonical A2ML.
22+
23+
* `Data.A2ML.Types``Document`, `Block`, `Inline`, `DirectiveName`
24+
(typed sum: `DirAbstract`, `DirRefs`, `DirAttestation`, `DirMeta`,
25+
`DirCustom Text`), `Attestation`, `TrustLevel`, `Manifest`, `Reference`.
26+
27+
The Haskell variant uses richer directive syntax than `a2ml-rs`: directives
28+
are multi-line `@name: ... @end` blocks (not single-line `@name value` pairs).
29+
30+
== Attestation Model
31+
32+
The `Attestation` type carries:
33+
34+
* `attestationSigner` — identity of the signing agent or person
35+
* `attestationAlgorithm` — e.g. `"ed25519"` or `"sha256"`
36+
* `attestationSignature` — hex or base64 signature (opaque, not verified here)
37+
* `attestationTimestamp` — optional ISO-8601 timestamp
38+
39+
`TrustLevel` encodes attestor count and independence: `Unsigned`
40+
`SelfAttested``ThirdPartyAttested``MultiAttested`.
41+
42+
`Manifest` aggregates title, author, version, SPDX license, overall trust
43+
level, and the full attestation list — the entry point for provenance
44+
inspection.
45+
46+
== Building
47+
48+
[source,sh]
49+
----
50+
cabal build
51+
cabal test
52+
----
53+
54+
== Related
55+
56+
* link:https://github.com/hyperpolymath/a2ml-rs[a2ml-rs] — Rust implementation
57+
* link:https://github.com/hyperpolymath/pandoc-a2ml[pandoc-a2ml] — Pandoc Lua reader/writer
58+
59+
== License
60+
61+
MPL-2.0. See link:LICENSE[LICENSE].

0 commit comments

Comments
 (0)