{"id":19838956,"url":"https://github.com/objectionary/home","last_synced_at":"2025-05-01T18:31:34.322Z","repository":{"id":11230810,"uuid":"13623548","full_name":"objectionary/home","owner":"objectionary","description":"Centralized curated storage of all EO objects together with their unit tests","archived":false,"fork":false,"pushed_at":"2025-04-11T19:56:17.000Z","size":2714,"stargazers_count":32,"open_issues_count":8,"forks_count":12,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-12T20:58:09.250Z","etag":null,"topics":["eolang","library","object-oriented-programming","objects","repository"],"latest_commit_sha":null,"homepage":"https://home.objectionary.com","language":"Rust","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":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2013-10-16T15:48:49.000Z","updated_at":"2025-04-11T02:50:20.000Z","dependencies_parsed_at":"2023-12-21T14:17:04.100Z","dependency_job_id":"26153b8e-27df-453a-beba-be8cc70e44c0","html_url":"https://github.com/objectionary/home","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fhome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fhome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fhome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectionary%2Fhome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectionary","download_url":"https://codeload.github.com/objectionary/home/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251924772,"owners_count":21666036,"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":["eolang","library","object-oriented-programming","objects","repository"],"created_at":"2024-11-12T12:19:42.568Z","updated_at":"2025-05-01T18:31:34.316Z","avatar_url":"https://github.com/objectionary.png","language":"Rust","readme":"# Home of EO Objects\n\n[![make](https://github.com/yegor256/objectionary/actions/workflows/make.yml/badge.svg?branch=master)](https://github.com/yegor256/objectionary/actions/workflows/make.yml)\n[![Hits-of-Code](https://hitsofcode.com/github/objectionary/home)](https://hitsofcode.com/view/github/objectionary/home)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/objectionary/home/blob/master/LICENSE.txt)\n\nThe term **Objectionary** was coined by\n[David West](https://www.youtube.com/watch?v=s-hdZZzMCac)\nin his great book\n[Object Thinking](http://amzn.to/266oJr4). The original idea was to\nhave a place where objects are hosted. Not libraries or software packages,\nbut individual objects. This is exactly what this repository is about:\nit hosts [EO](https://www.eolang.org) objects. More details\nin [this blog post](https://www.yegor256.com/2021/10/21/objectionary.html).\n\nWhen you are ready to publish a new object to this repository\nand make it visible for users of EO, you just create a new\n`.eo` file and place it to the right location, in one of the sub-directories\ninside the `objects` directory.\nThen, you add tests also written in EO, and place them next\nto your file in a subdirectory named after your object.\n\nFor example:\n\n```text\nobjects/\n  org/\n    eolang/\n      number.eo\ntests/\n  org/\n    eolang/\n      number-tests.eo\n```\n\nThen, you add a meta to your object code, mentioning the location\nof the runtime package, where all necessary atoms are available. For example,\nyou create a new random numbers generator:\n\n```text\n+package org.example\n+rt jvm org.example:example-runtime:1.0\n\n# Random numbers generator.\n[] \u003e random\n  [max] \u003e next-int\n    as-int.\n      mul.\n        max\n        ^\n  [] \u003e @ /number\n```\n\nThe meta `+rt` clearly points us to the place where a JAR with\nthe class for the `org.example.random.@` atom can be found.\n\nWhen ready, submit us a pull request. Our scripts will try to\nbuild and test all objects, together with your new one, to make\nsure you didn't break anything and your objects work together\nwith your atoms. Then, we'll merge it and the repository\nwill be updated. All users will be able to use your objects.\n\n## How to Publish a Library\n\nOnce the library is ready for publishing\n(i.e. all required changes are released)\nit can be published. Publishing includes several steps.\n\nCreate new Git branch from this repo to get the latest changes.\n\nThere is a Bash script `pull.sh`, which may help you publish the entire\nlibrary. In order to use it, you should first configure your library\nso that it publishes its full list of EO\nobjects on each release into its `gh-pages` branch.\n\nThen, when ready, run the script this way inside your local clone of this repo:\n\n```bash\n./pull.sh objectionary/eo-files\n```\n\nHere, `objectionary/eo-files` is the name of GitHub repository you are\ntrying to publish. The script will pull all the necessary `.eo` sources\nfrom the repo and put them into the right places.\n\nIf several libraries need to be published as well then repeat this step for\nthem as well.\n\nLibrary objects within Objectionary must not contain any puzzles so it needs\nto be removed from pulled objects.\n\nNext, the build needs to be verified. To do this, run the following:\n\n```bash\nmake clean\nmake\n```\n\nIf the build fails the issues need to be resolved.\n\nIf the build is clean, commit the changes and push the branch. Then,\nsubmit a pull request.\nOnce your pull request is merged, all EO programmers will\nbe able to use your library.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fhome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectionary%2Fhome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectionary%2Fhome/lists"}