{"id":13410475,"url":"https://github.com/yaml/AdaYaml","last_synced_at":"2025-03-14T16:32:23.692Z","repository":{"id":21717418,"uuid":"93854720","full_name":"yaml/AdaYaml","owner":"yaml","description":"experimental YAML 1.3 implementation in Ada","archived":false,"fork":false,"pushed_at":"2022-01-20T20:16:51.000Z","size":610,"stargazers_count":37,"open_issues_count":5,"forks_count":6,"subscribers_count":11,"default_branch":"develop","last_synced_at":"2024-10-29T15:31:38.406Z","etag":null,"topics":["ada","configuration","yaml"],"latest_commit_sha":null,"homepage":"https://ada.yaml.io/","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yaml.png","metadata":{"files":{"readme":"Readme.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"copying.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-09T12:02:49.000Z","updated_at":"2024-03-27T12:22:10.000Z","dependencies_parsed_at":"2022-07-25T08:47:00.059Z","dependency_job_id":null,"html_url":"https://github.com/yaml/AdaYaml","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2FAdaYaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2FAdaYaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2FAdaYaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2FAdaYaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yaml","download_url":"https://codeload.github.com/yaml/AdaYaml/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243610248,"owners_count":20318931,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ada","configuration","yaml"],"created_at":"2024-07-30T20:01:07.197Z","updated_at":"2025-03-14T16:32:21.611Z","avatar_url":"https://github.com/yaml.png","language":"Ada","funding_links":[],"categories":["Libraries"],"sub_categories":["Format Readers and Writers","Format Readers, Writers and Checkers"],"readme":"# AdaYaml - YAML 1.3 implementation in Ada\n\nThis is an implementation of the upcoming YAML 1.3 standard. Since the standard\nis not completed yet, some features are due to change.\n\nYou can use it as YAML 1.2 implementation, it will parse almost all valid\nYAML 1.2 documents since proposed changes to 1.3 are minimal and only cover edge\ncases.\n\n## Status\n\nCurrent YAML test suite status:\n\n```\nTotal Tests Run:   249\nSuccessful Tests:  244\nFailed Assertions: 2\nUnexpected Errors: 3\n```\n\nThe parser is thoroughly tested and only fails test cases that are expected not\nto pass in YAML 1.3. Lionel Matias has [fuzzy-tested AdaYaml][3], his findings\nhave been adressed. Benchmarks of AdaYaml show that it currently uses about\ntwice the time libyaml uses for parsing large YAML documents.\n\nThe parts of AdaYaml which have not undergone extensive testing are the DOM API\nand the Presenter.\n\n## Installation\n\nYou can install AdaYaml easily by executing\n\n    gprbuild -p -XMode=release yaml.gpr\n    gprinstall -XMode=release yaml.gpr\n\nAfterwards, you can `with \"yaml\";` in your projects.\n\n## YAML 1.3 Features\n\nStatus of YAML 1.3 features, taken from [this list][1]:\n\n| Number  | Desciption                                       | Status\n|---------|--------------------------------------------------|----------\n| RFC-001 | Remove the 1024 character limit                  | Implemented\n| RFC-002 | Limit content allowed after the '---' header     | Implemented\n| RFC-003 | Characters that can appear in anchor             | Implemented\n| RFC-004 | Block sequence entries must use space after dash | Implemented\n| RFC-005 | Restrict default implicit types to JSON semantics| Not applicable\n| RFC-006 | Disallow carriage return as a break              | Implemented\n| RFC-007 | Disallow flow collections as implicit keys       | Implemented\n| RFC-008 | Annotations                                      | Can be parsed\n| RFC-009 | Allow unresolvable aliases                       | Implemented\n| RFC-010 | Fixed position of properties and block scalars   | Implemented\n| RFC-011 | Indentation of block scalars                     | Implemented\n| RFC-012 | Remove wiki-like syntax from folded block scalars| Implemented\n| RFC-013 | *retracted*                                      | Not implemented\n| RFC-014 | Anchors always come before tags (when both)      | Not implemented\n\n## General Roadmap\n\n - [x] Have a basic working lexer\n - [x] Have a basic working parser\n - [x] Have a basic working representer\n - [x] Test against the YAML test suite\n - [ ] Implement fancy error reporting (starting line of error with marker)\n - [x] Do some benchmarks\n - [ ] Web demo\n - [ ] Implement UTF-16 and UTF-32 encodings\n - [ ] Make AdaYaml a drop-in replacement for libyaml (provide the C interface)\n - [ ] As proof-of-concept, implement the [Transformations extension][2]\n - [x] Maybe provide a DOM API\n\n## Hacking\n\nYou can build the tests with:\n\n    make test\n\nThis builds the unit tests. The executables will be located in the\n`test/bin` directory (be sure that the root folder is the working directory when\nexecuting).\n\nIf you have [GNAT GPL](http://libre.adacore.com/download/configurations) and\n[GNATcoverage](https://github.com/AdaCore/gnatcoverage), you can also compute\ncode coverage from the testsuite:\n\n    make test-coverage-run\n\nThe following command builds a small utility that reads a YAML files and outputs\na stream of events to the command line:\n\n    make utils\n\nIt is located in `util/bin` afterwards. The tool reads either the file\nspecified as first command line parameter, or, in absense of that parameter,\nfrom stdin.\n\nTo edit the code, you can use GNAT Programming Studio to open the `*.gpr` files.\n\n## License\n\n[MIT](copying.txt)\n\n [1]: https://github.com/yaml/summit.yaml.io/wiki/YAML-RFC-Index\n [2]: https://github.com/yaml/yaml-spec/wiki/The-Transformations-Extension\n [3]: https://blog.adacore.com/running-american-fuzzy-lop-on-your-ada-code\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2FAdaYaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaml%2FAdaYaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2FAdaYaml/lists"}