{"id":19838982,"url":"https://github.com/objectionary/flatty","last_synced_at":"2025-05-01T18:31:45.554Z","repository":{"id":156328758,"uuid":"624420387","full_name":"objectionary/flatty","owner":"objectionary","description":"Object De-nesting for EO programs","archived":false,"fork":false,"pushed_at":"2025-03-14T14:56:04.000Z","size":86,"stargazers_count":4,"open_issues_count":13,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T16:53:20.323Z","etag":null,"topics":["java","oop"],"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/objectionary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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-04-06T12:34:18.000Z","updated_at":"2025-03-11T21:42:49.000Z","dependencies_parsed_at":"2024-03-13T08:44:21.893Z","dependency_job_id":"b7e44564-39b7-491b-b6e2-373b28ec3992","html_url":"https://github.com/objectionary/flatty","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/objectionary%2Fflatty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fflatty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fflatty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fflatty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/flatty/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251924797,"owners_count":21666039,"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":["java","oop"],"created_at":"2024-11-12T12:19:49.572Z","updated_at":"2025-05-01T18:31:45.170Z","avatar_url":"https://github.com/objectionary.png","language":"Java","readme":"# Flatty\n\nThis project describes an optimization method for removing nesting from programs written in phi-calculus. The nested structures in the language are composed of objects that form hierarchical structures, which can make it difficult to perform static analysis of such structures. The proposed method reframes expressions in such a way that they no longer contain nested objects, making it easier to perform static analysis.\n\n### Quick start\n\n```\nimport org.objectionary.Flatter;\nimport org.objectionary.Parser;\n\nString[] lines = {\n    \"ν1(𝜋) ↦ ⟦ x ↦ ν3, 𝜑 ↦ ν2( a ↦ ξ.x, b ↦ ξ.x ) ⟧\",\n    \"ν2(𝜋) ↦ ⟦ λ ↦ int-times, a ↦ ø, b ↦ ø ⟧\",\n    \"ν3(𝜋) ↦ ⟦ Δ ↦ 0x0007 ⟧\",\n};\nParser parser = new Parser(String.join(\"\\n\", lines));\nFlatter flatter = new Flatter(parser.parse());\nString result = flatter.flat().toString();\n```\n\n### Installation\nTo use Flatty in your project, you can follow the steps below:\n\n1. Download the Flatty repository.\n\n2. Add the Flatty JAR file to your project's classpath.\n\n3. Import the necessary classes in your Java code:\n```\nimport flatty.Parser;\nimport flatty.Flatter;\n```\n\n### Usage\n\nThe basic usage of Flatty involves the following steps:\n\n1. Use the Parser class to parse the input program written in EO.\n\n2. Create a Flatter object by passing the parsed program to it.\n\n3. Execute the flat method to optimize the program.\n\nRetrieve the optimized code as a string.\n\n### Examples\n\nYou can find examples of some nested objects in the `src/test/java/org/objectionary/integration/resourses` directory.\n\n### Run unit-tests\n\n    $  mvn clean install -Pqulice\n\n### Run integration tests\n\n    $  git clone https://github.com/objectionary/phie\n    $  python3 src/test/java/org/objectionary/integration/tester.py \u003cpath_to_phie_dir\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fflatty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Fflatty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fflatty/lists"}