{"id":20369497,"url":"https://github.com/surilindur/confse","last_synced_at":"2025-04-12T05:52:10.856Z","repository":{"id":174980712,"uuid":"84687753","full_name":"surilindur/confse","owner":"surilindur","description":"ConfSE is an Oblivion Script Extender (OBSE) plugin that aims to enable the use of JSON to save and load data","archived":false,"fork":false,"pushed_at":"2024-10-05T14:12:27.000Z","size":342,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T05:52:04.373Z","etag":null,"topics":["elder-scrolls","json","oblivion","obse"],"latest_commit_sha":null,"homepage":"","language":"C++","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/surilindur.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}},"created_at":"2017-03-11T23:54:26.000Z","updated_at":"2024-10-05T14:12:31.000Z","dependencies_parsed_at":"2024-01-13T05:27:50.243Z","dependency_job_id":null,"html_url":"https://github.com/surilindur/confse","commit_stats":null,"previous_names":["surilindur/objson","surilindur/confse"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surilindur%2Fconfse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surilindur%2Fconfse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surilindur%2Fconfse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/surilindur%2Fconfse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/surilindur","download_url":"https://codeload.github.com/surilindur/confse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248525156,"owners_count":21118616,"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":["elder-scrolls","json","oblivion","obse"],"created_at":"2024-11-15T00:48:07.366Z","updated_at":"2025-04-12T05:52:10.833Z","avatar_url":"https://github.com/surilindur.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"logo\" src=\"./.github/assets/logo.svg\" width=\"140\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/surilindur/confse/actions/workflows/ci.yml\"\u003e\u003cimg alt=\"CI\" src=https://github.com/surilindur/confse/actions/workflows/ci.yml/badge.svg?branch=main\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://isocpp.org/\"\u003e\u003cimg alt=\"C++\" src=\"https://img.shields.io/badge/%3C%2F%3E-C++-%23f34b7d.svg\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/badge/License-MIT-blue.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n**ConfSE** is an experimental [Oblivion Script Extender](https://github.com/llde/xOBSE) (OBSE) plugin\nthat aims to enable the loading and saving of JSON files from within Oblivion scripts.\nThis is accomplished through the use of OBSE's `array_var` data type, that be either an array or map.\nThe plugin uses [an existing JSON library for C++](https://github.com/nlohmann/json)\ntogether with some simple Oblivion-specific type conversions.\n\nThe following type conversions are performed.\n\n| Oblivion                        | JSON                    | Notes                                                |\n|:--------------------------------|:------------------------|:-----------------------------------------------------|\n| `array_var` array               | `[]`                    | Uninitialized saved as `null`                        |\n| `array_var` map                 | `{}`                    | Uninitialized saved as `null`                        |\n| `string_var`                    | String                  | Uninitialized saved as `null`                        |\n| `ref`                           | `\"plugin.esp:00000000\"` | Unbound is saved as `null`                           |\n| `short`, `int`, `long`, `float` | Number                  | Each value gets loaded as the smallest possible type |\n\nThe design goal of the plugin is to offer a straightforward mapping from OBSE's `array_var`s,\nincluding nested ones,\nto a corresponding JSON strcture and vice versa.\n\n**This is a work-in-progress thing and is NOT intended for use. At the moment, it does not even compile.**\n\nThis project depends on the following external projects and libraries:\n\n* [llde/xOBSE](https://github.com/llde/xOBSE) as the targeted OBSE version\n* [nlohmann/json](https://github.com/nlohmann/json) as the JSON library used to load and save files\n* MSBuild for building the plugin project\n\nThe latest compiled DLL at a given time should be available from the GitHub Actions artifacts for the CI workflow.\n\n## Development Setup\n\nThe repository has all its dependencies linked as Git submodules, so they need to be fetched when cloning, as well:\n\n```bash\ngit clone --recurse-submodules https://github.com/surilindur/confse\n```\n\nAny changes can then be made, and building the plugin should be possible via\n\n```bash\nmsbuild confse/confse.vcxproj -p:BuildInParallel=true\n```\n\n## Added Script Commands\n\nThe following new commands are added by the plugin to load JSON:\n\n**JsonLoadFile** - attempts to load the contents of the specified file as JSON, returning the result as an `array_var`. When loading fails, returns either the `array_var` passed as `default` or an uninitialized value.\n\n    (array_var) JsonLoadFile filename:string_var default:array_var\n\n**JsonLoadString** - attempts to load the contents of the provided `string_var` as JSON, returning the result as an `array_var`. When loading fails, returns either the `array_var` passed as `default` or an uninitialized value.\n\n    (array_var) JsonLoadString data:string_var default:array_var\n\n**JsonSaveFile** - attempts to serialize the provided `array_var` to the specificed file as JSON, returning `0` after success or `-1` if an error occurred.\n\n    (status:int) JsonSaveFile data:array_var filename:string_var\n\n**JsonSaveString** - attempts to serialize the provided `array_var` as a string, returning a `string_var` that will either contain the resulting string or be uninitialized if an error occurred.\n\n    (string_var) JsonSaveString data:array_var\n\n## Issues\n\nPlease feel free to report any issues on the GitHub issue tracker.\n\n## License\n\nThis code is copyrighted and released under the [MIT license](http://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurilindur%2Fconfse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsurilindur%2Fconfse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsurilindur%2Fconfse/lists"}