{"id":20806167,"url":"https://github.com/meffie/libyaml-examples","last_synced_at":"2025-10-03T23:59:33.990Z","repository":{"id":48278265,"uuid":"180621317","full_name":"meffie/libyaml-examples","owner":"meffie","description":"C language examples demonstrating how to use libyaml to emit and parse yaml formatted data","archived":false,"fork":false,"pushed_at":"2022-12-01T20:14:36.000Z","size":24,"stargazers_count":35,"open_issues_count":0,"forks_count":10,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-05T04:55:58.735Z","etag":null,"topics":["libyaml","yaml"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meffie.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}},"created_at":"2019-04-10T16:28:39.000Z","updated_at":"2025-02-10T18:15:57.000Z","dependencies_parsed_at":"2022-09-16T02:12:21.244Z","dependency_job_id":null,"html_url":"https://github.com/meffie/libyaml-examples","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meffie%2Flibyaml-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meffie%2Flibyaml-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meffie%2Flibyaml-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meffie%2Flibyaml-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meffie","download_url":"https://codeload.github.com/meffie/libyaml-examples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252811396,"owners_count":21807932,"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":["libyaml","yaml"],"created_at":"2024-11-17T19:18:24.895Z","updated_at":"2025-10-03T23:59:28.960Z","avatar_url":"https://github.com/meffie.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libyaml examples\n\nThis is a small set of c language example programs to demonstrate how to use\nthe [libyaml library](http://pyyaml.org/wiki/LibYAML).\n\n## How to build\n\nOn Debian/Ubuntu, install the following packages.\n\n    $ sudo apt install gcc make libyaml-dev\n\nBuild the binaries with `make`.\n\n    $ make\n\n## Emitter example\n\n`emit.c` is a basic example to demonstrate how to convert raw c structs to a\nyaml stream using the libyaml emitter API.  The example data to be converted is\na list of lists.\n\n    struct fruit {\n        struct fruit *next;\n        char *name;\n        char *color;\n        int count;\n        struct variety *varieties;\n    };\n    struct variety {\n        struct variety *next;\n        char *name;\n        char *color;\n        bool seedless;\n    };\n\nThese structs are populated with some example data and emitted as yaml:\n\n    $ ./emit\n    ---\n    fruit:\n    - name: apple\n      color: red\n      count: 12\n      varieties:\n      - name: macintosh\n        color: red\n        seedless: false\n      - name: granny smith\n        color: green\n        seedless: false\n      - name: red delicious\n        color: red\n        seedless: false\n    - name: orange\n      color: orange\n      count: 3\n      varieties:\n      - name: naval\n        color: orange\n        seedless: false\n      - name: clementine\n        color: orange\n        seedless: true\n      - name: valencia\n        color: orange\n        seedless: false\n    - name: bannana\n      color: yellow\n      count: 4\n      varieties:\n      - name: cavendish\n        color: yellow\n        seedless: true\n      - name: plantain\n        color: green\n        seedless: true\n    - name: mango\n      color: green\n      count: 1\n      varieties:\n      - name: honey\n        color: yellow\n        seedless: false\n    ...\n\n\n## Parser example\n\n`parser.c` is a basic example to demonstrate how to convert a specified yaml\ngrammar to c data structures using the libyaml emitter API.  The `parser`\nprogram can read yaml generated by the `emit` program.\n\n    $ cat fruit.yaml\n    ---\n    fruit:\n    - name: apple\n      color: red\n      count: 12\n      varieties:\n      - name: macintosh\n        color: red\n        seedless: false\n      - name: granny smith\n        color: green\n        seedless: false\n    - name: orange\n      color: orange\n      count: 3\n      varieties:\n      - name: naval\n        color: orange\n        seedless: false\n      - name: clementine\n        color: orange\n        seedless: true\n    ...\n\n    $ ./parse \u003c fruit.yaml\n    fruit: name=apple, color=red, count=12\n      variety: name=macintosh, color=red, seedless=false\n      variety: name=granny smith, color=green, seedless=false\n    fruit: name=orange, color=orange, count=3\n      variety: name=naval, color=orange, seedless=false\n      variety: name=clementine, color=orange, seedless=true\n\n## Scanner example\n\n`scan.c` is a general purpose libyaml parser example which scans and prints the\nlibyaml parser events. This can be useful for debugging yaml parsers.\n\n    $ ./scan \u003c fruit.yaml\n    stream-start-event (1)\n      document-start-event (3)\n        mapping-start-event (9)\n          scalar-event (6) = {value=\"fruit\", length=5}\n          sequence-start-event (7)\n            mapping-start-event (9)\n              scalar-event (6) = {value=\"name\", length=4}\n              scalar-event (6) = {value=\"apple\", length=5}\n              scalar-event (6) = {value=\"color\", length=5}\n              scalar-event (6) = {value=\"red\", length=3}\n              scalar-event (6) = {value=\"count\", length=5}\n              scalar-event (6) = {value=\"12\", length=2}\n              scalar-event (6) = {value=\"varieties\", length=9}\n              sequence-start-event (7)\n                mapping-start-event (9)\n                  scalar-event (6) = {value=\"name\", length=4}\n                  scalar-event (6) = {value=\"macintosh\", length=9}\n                  scalar-event (6) = {value=\"color\", length=5}\n                  scalar-event (6) = {value=\"red\", length=3}\n                  scalar-event (6) = {value=\"seedless\", length=8}\n                  scalar-event (6) = {value=\"false\", length=5}\n                mapping-end-event (10)\n                mapping-start-event (9)\n                  scalar-event (6) = {value=\"name\", length=4}\n                  scalar-event (6) = {value=\"granny smith\", length=12}\n                  scalar-event (6) = {value=\"color\", length=5}\n                  scalar-event (6) = {value=\"green\", length=5}\n                  scalar-event (6) = {value=\"seedless\", length=8}\n                  scalar-event (6) = {value=\"false\", length=5}\n                mapping-end-event (10)\n              sequence-end-event (8)\n            mapping-end-event (10)\n            mapping-start-event (9)\n              scalar-event (6) = {value=\"name\", length=4}\n              scalar-event (6) = {value=\"orange\", length=6}\n              scalar-event (6) = {value=\"color\", length=5}\n              scalar-event (6) = {value=\"orange\", length=6}\n              scalar-event (6) = {value=\"count\", length=5}\n              scalar-event (6) = {value=\"3\", length=1}\n              scalar-event (6) = {value=\"varieties\", length=9}\n              sequence-start-event (7)\n                mapping-start-event (9)\n                  scalar-event (6) = {value=\"name\", length=4}\n                  scalar-event (6) = {value=\"naval\", length=5}\n                  scalar-event (6) = {value=\"color\", length=5}\n                  scalar-event (6) = {value=\"orange\", length=6}\n                  scalar-event (6) = {value=\"seedless\", length=8}\n                  scalar-event (6) = {value=\"false\", length=5}\n                mapping-end-event (10)\n                mapping-start-event (9)\n                  scalar-event (6) = {value=\"name\", length=4}\n                  scalar-event (6) = {value=\"clementine\", length=10}\n                  scalar-event (6) = {value=\"color\", length=5}\n                  scalar-event (6) = {value=\"orange\", length=6}\n                  scalar-event (6) = {value=\"seedless\", length=8}\n                  scalar-event (6) = {value=\"true\", length=4}\n                mapping-end-event (10)\n              sequence-end-event (8)\n            mapping-end-event (10)\n            mapping-start-event (9)\n              scalar-event (6) = {value=\"name\", length=4}\n              scalar-event (6) = {value=\"bannana\", length=7}\n              scalar-event (6) = {value=\"color\", length=5}\n              scalar-event (6) = {value=\"yellow\", length=6}\n              scalar-event (6) = {value=\"count\", length=5}\n              scalar-event (6) = {value=\"4\", length=1}\n            mapping-end-event (10)\n            mapping-start-event (9)\n              scalar-event (6) = {value=\"name\", length=4}\n              scalar-event (6) = {value=\"mango\", length=5}\n              scalar-event (6) = {value=\"color\", length=5}\n              scalar-event (6) = {value=\"green\", length=5}\n              scalar-event (6) = {value=\"count\", length=5}\n              scalar-event (6) = {value=\"1\", length=1}\n            mapping-end-event (10)\n          sequence-end-event (8)\n        mapping-end-event (10)\n      document-end-event (4)\n    stream-end-event (2)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeffie%2Flibyaml-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeffie%2Flibyaml-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeffie%2Flibyaml-examples/lists"}