{"id":15394479,"url":"https://github.com/thechampagne/libmocha","last_synced_at":"2026-04-18T06:37:04.176Z","repository":{"id":196612250,"uuid":"696740323","full_name":"thechampagne/libmocha","owner":"thechampagne","description":"A C library to parse mocha an elegant configuration language for both humans and machines.","archived":false,"fork":false,"pushed_at":"2023-10-21T00:20:46.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T23:44:07.745Z","etag":null,"topics":["c","library","mocha","parser","zig","ziglang"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause-clear","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thechampagne.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-09-26T10:50:35.000Z","updated_at":"2024-02-18T04:54:13.000Z","dependencies_parsed_at":"2023-09-26T14:13:04.078Z","dependency_job_id":"23781897-3cfb-4c1b-8959-cb049f1e4c58","html_url":"https://github.com/thechampagne/libmocha","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"c5ba6cb42848c8d238e5645fafc8cc5183d5b226"},"previous_names":["thechampagne/libmocha"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/thechampagne/libmocha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thechampagne%2Flibmocha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thechampagne%2Flibmocha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thechampagne%2Flibmocha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thechampagne%2Flibmocha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thechampagne","download_url":"https://codeload.github.com/thechampagne/libmocha/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thechampagne%2Flibmocha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31959881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":["c","library","mocha","parser","zig","ziglang"],"created_at":"2024-10-01T15:23:43.106Z","updated_at":"2026-04-18T06:37:04.153Z","avatar_url":"https://github.com/thechampagne.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libmocha\n\n[![](https://img.shields.io/github/v/tag/thechampagne/libmocha?label=version)](https://github.com/thechampagne/libmocha/releases/latest) [![](https://img.shields.io/github/license/thechampagne/libmocha)](https://github.com/thechampagne/libmocha/blob/main/LICENSE)\n\nA C library to parse **mocha** an elegant configuration language for both humans and machines.\n\n### Example\nThis program output all tokens in text.\n```c\n#include \u003cmocha.h\u003e\n#include \u003cstdio.h\u003e\n\nint main(void) {\n  const char* text =\n      \"defaults: { \\\n         user_id: 0 \\\n         start_id: user_id \\\n        } \\\n        hanna: { \\\n        name: 'hanna rose' \\\n        id: @:defaults:user_id \\\n        inventory: ['banana' 12.32] \\\n        }\";\n\n  mocha_object_t obj;\n  if (mocha_parse(\u0026obj, text) != MOCHA_ERROR_NONE) {\n    return 1;\n  }\n\n  for (size_t i = 0; i \u003c obj.fields_len; i++) {\n    mocha_field_t field = mocha_field(\u0026obj, i);\n    printf(\"%s: {\\n\", field.name);\n\n    for (size_t j = 0; j \u003c field.value.object.fields_len; j++) {\n      mocha_field_t field0 = mocha_field(\u0026field.value.object, j);\n      printf(\"%s: \", field0.name);\n      switch (field0.type) {\n        case MOCHA_VALUE_TYPE_INTEGER64:\n          printf(\"%ld\\n\", field0.value.integer64);\n          break;\n        case MOCHA_VALUE_TYPE_FLOAT64:\n          printf(\"%f\\n\", field0.value.float64);\n          break;\n        case MOCHA_VALUE_TYPE_STRING:\n          printf(\"'%s'\\n\", field0.value.string);\n          break;\n        case MOCHA_VALUE_TYPE_ARRAY:\n          printf(\"[\");\n          for (size_t idx = 0; idx \u003c field0.value.array.items_len; idx++) {\n            mocha_value_t value;\n            mocha_value_type_t value_type = mocha_array(\u0026field0.value.array, \u0026value, idx);\n            if (value_type == MOCHA_VALUE_TYPE_STRING) {\n              printf(\"'%s' \", value.string);\n            } else if (value_type == MOCHA_VALUE_TYPE_FLOAT64) {\n              printf(\"%f\", value.float64);\n            }\n          }\n          printf(\"]\\n\");\n          break;\n        case MOCHA_VALUE_TYPE_REFERENCE:\n          fwrite(field0.value.reference.name, field0.value.reference.name_len, 1, stdout);\n          if (field0.value.reference.child != NULL) printf(\":\");\n          mocha_reference_t reference;\n          reference.child = field0.value.reference.child;\n          while (mocha_reference_next(\u0026reference) == 0) {\n            fwrite(reference.name, reference.name_len, 1, stdout);\n            if (reference.child != NULL) printf(\":\");\n          }\n          printf(\"\\n\");\n          break;\n        default:\n          break;\n      }\n    }\n    printf(\"}\\n\");\n  }\n  mocha_deinit(\u0026obj);\n}\n```\n\n### References\n - [mocha](https://github.com/hqnna/mocha)\n\n### License\n\nThis repo is released under the [BSD-3-Clause-Clear License](https://github.com/thechampagne/libmocha/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthechampagne%2Flibmocha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthechampagne%2Flibmocha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthechampagne%2Flibmocha/lists"}