{"id":16175731,"url":"https://github.com/osiris-team/dyml","last_synced_at":"2025-03-19T00:31:26.702Z","repository":{"id":49543037,"uuid":"327919909","full_name":"Osiris-Team/Dyml","owner":"Osiris-Team","description":"The YAML and DYML processor of your dreams, with ultimate comment support, written from scratch in Java!","archived":false,"fork":false,"pushed_at":"2023-12-22T21:43:28.000Z","size":646,"stargazers_count":23,"open_issues_count":6,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-17T01:21:30.639Z","etag":null,"topics":["api","java","library","parser","read","write","yaml"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Osiris-Team.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":"2021-01-08T14:06:41.000Z","updated_at":"2025-01-10T11:24:36.000Z","dependencies_parsed_at":"2023-02-13T23:16:27.519Z","dependency_job_id":"662be05c-bfaa-43d7-a394-0c2ce382fc53","html_url":"https://github.com/Osiris-Team/Dyml","commit_stats":null,"previous_names":[],"tags_count":99,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Osiris-Team%2FDyml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Osiris-Team%2FDyml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Osiris-Team%2FDyml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Osiris-Team%2FDyml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Osiris-Team","download_url":"https://codeload.github.com/Osiris-Team/Dyml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244331817,"owners_count":20436011,"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":["api","java","library","parser","read","write","yaml"],"created_at":"2024-10-10T04:45:39.390Z","updated_at":"2025-03-19T00:31:26.321Z","avatar_url":"https://github.com/Osiris-Team.png","language":"Java","readme":"# Dyml [![](https://jitpack.io/v/Osiris-Team/Dyml.svg)](https://jitpack.io/#Osiris-Team/Dyml)\nThe YAML and DYML processor of your dreams, with ultimate comment support, written from scratch in Java! \u003cbr\u003e\n- Java 8 or higher required.\n[Maven/gradle/sbt/leinigen instructions](https://jitpack.io/#Osiris-Team/Dyml/LATEST).\n- Support and chat over at [Discord](https://discord.com/invite/GGNmtCC).\n- Fund this project via [PayPal](https://www.paypal.com/donate?hosted_button_id=JNXQCWF2TF9W4).\n\n## Features\n- Amazing support for side, multiline, regular comments and line breaks.\n- Written from scratch with performance and usability in mind.\n- Only key-features of YAML implemented, thus very small, blazing fast and easy to use.\n- API design, core ideas: \n  - Rely on default values\n  - Either null or nothing (no empty values/strings)\n  - Keep it simple but powerful (few objects that can do a lot) \n\n`example.yml` [code](src/test/java/examples/yaml/FeaturesExample.java)\n```YAML\nimportant: Everything else that is not explicitly mentioned in this file is not supported\n\n# Comments and\n# multiline comments support.\nsupports-lists: \n  - Hello World!\n  - 2nd value\nsupports-hyphen-separation: awesome! \nor separation by spaces: great! # side-comments supported!\nand.dots.like.this: wow!\nor:even:colons: puh!\n\n# Complex hierarchies supported.\ng0:\n  g1a:\n    g2a: wow!\n    g2b: \u003c3\n  g1b:\n    - v1 # side-comments in lists\n    # This is also a side-comment, for the value below\n    - v2\n```\n\n`example.dyml` [code](src/test/java/examples/dyml/FeaturesExample.java)\n```DYML\nimportant Everything else that is not explicitly mentioned in this file is not supported\n Comments and\n multiline comments support.\nkey value\n Complex hierarchies supported.\ng0\n  g1a\n    g2a wow!\n    g2b \u003c3\n  g1b great!\n```\nRead more about the `.dyml` file type [here](DYML-SPEC.md). Note\nthat the API for `.dyml` files is in beta and not all features of the `.yaml` API \nwere ported over yet.\n\nSome extras:\n - **DirWatcher |** Directory watcher with recursive directory watching support.\n - **YamlDatabase |** (BETA) Yaml based, lightning fast database.\n\n## Examples\nAll examples can be found as tests [here](src/test/java/examples).\n\u003cdetails\u003e\n\u003csummary\u003eShow frequent YAML mistakes\u003c/summary\u003e\n\nIt's fine to have colons in keys, as long as there is no space after it.\nHere is a small quiz, determine the key and value for the following yaml section:\n```yaml\nhello:there: my : friend: !\n```\nAnswer: The key is `hello:there` and the value `my : friend: !`.\n\u003c/details\u003e\n\n## Benchmarks\nDream-Yaml seems to be about 9x faster than [SnakeYAML](https://bitbucket.org/asomov/snakeyaml/src/master/)\n, 8x faster than [YamlBeans](https://github.com/EsotericSoftware/yamlbeans)\n, 4x faster than [eo-yaml](https://github.com/decorators-squad/eo-yaml)\n and 3x faster than [Simple-Yaml](https://github.com/Carleslc/Simple-YAML).\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://i.imgur.com/rupU0Ea.png\"\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eOpen/close details\u003c/summary\u003e\n\u003cimg src=\"https://i.imgur.com/Dvob5Ly.png\"\u003e\n\u003c/details\u003e\n\u003c/div\u003e\n\n## FAQ\n\u003cdiv\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eDifference between 'loaded' and 'added' modules?\u003c/summary\u003e\nThe only difference, is that loaded modules cannot have default values set.\nThey are basically the raw output from your yaml file. In-Edit modules get created when you call the add() method. Their initial value is taken from the  \nloaded module with the same keys.\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eHow are null/empty values handled?\u003c/summary\u003e\n\u003cpre\u003e\nparent:\n  key1:               # this value is null\n  key2: ~             # not null, but a string\n  key3: null          # not null, but a string\n  key5: \"null\"        # not null, but a string\n  key5: \"\"            # this value is null (note that if you disable the remove quotes post-processing option, this is a string(\"\") and not empty, otherwise this gets turned into a null value)\n\u003c/pre\u003e\nTo sum it up: \u003cb\u003eEmpty values do NOT exist. Null values exist. \u003c/b\u003e\nNote that null values are removed from the modules values list, in the post-processing part while parsing the yaml file.\nYou can disable it though, if you want.\n\u003c/details\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eFallback to default values?\u003c/summary\u003e\nWhen the 'real value' is null, return the default value.\nThis feature is enabled by default. You can change it for each individual module.\n\u003c/details\u003e\n\u003c/div\u003e\n","funding_links":["https://www.paypal.com/donate?hosted_button_id=JNXQCWF2TF9W4"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosiris-team%2Fdyml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosiris-team%2Fdyml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosiris-team%2Fdyml/lists"}