{"id":18022927,"url":"https://github.com/gingerbeardman/priiprocess","last_synced_at":"2025-06-19T07:33:22.715Z","repository":{"id":140238504,"uuid":"243030950","full_name":"gingerbeardman/Priiprocess","owner":"gingerbeardman","description":"Simple INI file preprocessor supporting variables and includes","archived":false,"fork":false,"pushed_at":"2020-03-20T11:55:47.000Z","size":55,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T00:08:21.167Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gbatemp.net/members/matt.229960/","language":"PHP","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/gingerbeardman.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":"2020-02-25T15:15:42.000Z","updated_at":"2020-08-23T05:57:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"601b6253-c1ca-4bfc-a10a-75928ffc09c8","html_url":"https://github.com/gingerbeardman/Priiprocess","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/gingerbeardman%2FPriiprocess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gingerbeardman%2FPriiprocess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gingerbeardman%2FPriiprocess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gingerbeardman%2FPriiprocess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gingerbeardman","download_url":"https://codeload.github.com/gingerbeardman/Priiprocess/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226191,"owners_count":20904467,"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":[],"created_at":"2024-10-30T07:06:22.420Z","updated_at":"2025-04-04T18:17:23.471Z","avatar_url":"https://github.com/gingerbeardman.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Priiprocess\n\n\u003e This tool was created to help make it easier to create, edit and maintain .ini files for software that doesn't manage them itself\n\nThe goals were:\n\n* Easier theme creation/editing/management\n* Smaller \u0026 Modular themes\n\nIt does this by introducing:\n\n* Variables\n* Includes\n\nThe result is kind of like a cross between INI and CSS. \n\nYou can define a single *.color_heading* and then use it in many places. To change the colour of all those elements, simply change the single definition and you're done!\n\nTo show that the tool works, I have deconstructed *Rhapsodii 2.0* - a theme for [WiiFlow Lite](https://github.com/Fledge68/WiiFlow_Lite) - which in the process became a more organised. By reusing definitions for common positions and reusable elements I was able to consolidate and improve consistency. Thanks to [@Hakaisha](https://github.com/Hakaisha) the creator of that theme for their kind support!\n\n## Capabilities\n\n**Variable (Long)**\n\n    ;.example_1\t: key=value\n\n  _Usage:_\n\n    [SECTION]\n    .example_1\n\n**Variable (Short)**\n\n\n    ;.example_2\t: value\n\n  _Usage:_\n\n    [SECTION]\n    key=.example_2\n\n**Includes**\n\n    ;.example_3\t: inc.file_name.ini\n\n  _Usage:_\n\n    [SECTION]\n    .example_3\n\n## Example\n\nAs an example, every title has the same code:\n\n\t[ABOUT/TITLE]\n\tcolor=#FFFFFFFF\n\teffect_scale_x=1\n\teffect_scale_y=0\n\teffect_x=0\n\teffect_y=-200\n\tfont_line_height=0\n\tfont_size=0\n\tfont_weight=0\n\theight=60\n\twidth=600\n\tx=20\n\ty=15\n\nWe can replace this with the names of (unshown) user definitions, which is easier to read/write but still repetitive:\n\n\t[ABOUT/TITLE]\n\t.white\n\t.fixed_scale_x\n\t.zero_scale_y\n\t.fixed_left\n\t.from_off_top\n\t.no_line_height\n\t.no_font_size\n\t.no_font_weight\n\t.title_height\n\t.title_width\n\t.title_x\n\t.title_y\n\nBut we can go even further by using a single include to reuse the definitions in multiple places:\n\n\t[ABOUT/TITLE]\n\t.title\n\n\t[PLUGIN/TITLE]\n\t.title\n\nThe best results would come from building a theme from a scratch with the tool in mind, as my deconstruction of *Rhapsodii 2.0* could be optimised further still.\n\nSo... the tool! I'm calling it **Priiprocess** and it is less than 100 lines of PHP code. It could easily be ported to Python or even C (if WFL wanted to add support for this type of theme structure).\n\n## Usage\n\n    php priiprocess.php themename\n\n**Input files structure**\n\n* _themename_ (folder)\n   * _themename.prii_ (definitions)\n   * _other files_ (suplementary definitions)\n\n**Output files structure**\n\n*  _themename.prii_ (includes merged, variables untouched) \n*  _themename.prii.ini_ (incudes merged, variables replaced)\n\n## Changelog\n20 Mar 2020 — improvements to command line usage, minor fix for Rhapsodii  \n25 Feb 2020 — initial release  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgingerbeardman%2Fpriiprocess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgingerbeardman%2Fpriiprocess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgingerbeardman%2Fpriiprocess/lists"}