{"id":26845487,"url":"https://github.com/pietroppeter/yamly","last_synced_at":"2026-04-12T22:36:54.796Z","repository":{"id":266407459,"uuid":"584526804","full_name":"pietroppeter/yamly","owner":"pietroppeter","description":"a type-safe parser for a reasonable yaml dialect","archived":false,"fork":false,"pushed_at":"2023-03-31T12:37:27.000Z","size":28,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-15T04:46:41.673Z","etag":null,"topics":["nim","strictyaml","yaml"],"latest_commit_sha":null,"homepage":"","language":"Nim","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/pietroppeter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-02T20:27:27.000Z","updated_at":"2023-03-31T12:38:09.000Z","dependencies_parsed_at":"2024-12-04T05:35:05.453Z","dependency_job_id":"c800f262-11c1-42e6-82ac-915faaed55a5","html_url":"https://github.com/pietroppeter/yamly","commit_stats":null,"previous_names":["pietroppeter/yamly"],"tags_count":0,"template":false,"template_full_name":"treeform/nimtemplate","purl":"pkg:github/pietroppeter/yamly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pietroppeter%2Fyamly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pietroppeter%2Fyamly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pietroppeter%2Fyamly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pietroppeter%2Fyamly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pietroppeter","download_url":"https://codeload.github.com/pietroppeter/yamly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pietroppeter%2Fyamly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271306829,"owners_count":24736770,"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","status":"online","status_checked_at":"2025-08-20T02:00:09.606Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["nim","strictyaml","yaml"],"created_at":"2025-03-30T19:36:17.586Z","updated_at":"2025-10-04T23:28:37.740Z","avatar_url":"https://github.com/pietroppeter.png","language":"Nim","funding_links":[],"categories":[],"sub_categories":[],"readme":"# yamly\n\n⚠️ *work in progress*\n\nA type-safe and loose parser for a reasonable yaml dialect (i.e. not the full yaml specs, but what you usually find around).\nParses yaml code directly to Nim types as in [jsony](https://github.com/treeform/jsony).\nIndeed the implementation is a port of jsony to yaml.\n\nSomewhat inspired by (Python library) [strictyaml](https://github.com/crdoconnor/strictyaml) for the idea that you should better give up on full Yaml specs and\nand target a reasonable dialect (but I plan to support flow style)..\nFor a complete yaml 1.2 parser, use [NimYAML](https://github.com/flyx/NimYAML). \nFor another take of a restricted yaml parser, check out [nyml](https://github.com/openpeep/nyml).\nAh, there is also [yanyl](https://github.com/tanelso2/yanyl).\n\nFeatures of Yaml that are **not** in scope of implementation:\n- directives (stuff with %)\n- anchors (\u0026) and refs (*) and `\u003c\u003c`\n- tagging with ! or !!\n- complex mapping keys (which use ?)\n- yaml set type (e.g. a list that uses `?` instead of `-`, or other formats). Note that a list can be parsed as set if the type is specified to be a nim bit set or hash set.\n- cannot use tab for whitespace anywhere (in yaml you cannot use tab for indentation but you can use it for generic whitespace)\n\n## todo\n\n- [x] refactor to use YamlParseContext and YamlDumpContext?\n- [x] refactor split in parse and dump separate submodules\n- [ ] symbols\n  - [x] numbers\n    - [x] dump\n    - [x] parse\n    - [ ] octal and hex\n  - [ ] bool\n  - [ ] enum\n- [ ] containers\n  - [ ] object\n    - [x] dump\n      - [ ] dump key that needs to be quoted (e.g. starts with \", contains invalid characters, ...)\n    - [ ] parse\n    - [ ] flow-style\n  - [ ] sequence\n    - [x] dump\n    - [ ] parse\n    - [ ] flow-style\n  - [ ] tuple\n  - [ ] array\n    - [x] dump\n  - [ ] sets\n  - [ ] tables\n- [ ] string (non quoted, quoted and multiline)\n- [ ] null\n- [ ] \"json\"\n- [ ] distinct\n- [ ] document separator? which api?\n\n## dev notes\n\n- (!=yaml) disallowing tab in spaces\n- (!=jsony) parseHook requires an indentation field\n- (!=jsony) not implementing fast dumping and parsing of numbers\n- (!=jsony) using unittest (I like the check output in case of failing test)\n- (!=jsony) refactor api using YamlParseContext/YamlDumpcontext instead of exposing s, idx, ind in signatures\n- (!=jsony) refactor: parse and dump are two separate modules\n\ninteresting features not (yet) present in jsony:\n- strict mode\n- easy way to skip fields when dumping\n- automatic camel to snake when dumping?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpietroppeter%2Fyamly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpietroppeter%2Fyamly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpietroppeter%2Fyamly/lists"}