{"id":20425367,"url":"https://github.com/catseye/yoob","last_synced_at":"2025-05-08T16:32:04.102Z","repository":{"id":1971280,"uuid":"2902499","full_name":"catseye/yoob","owner":"catseye","description":"Java framework for esoteric languages (a.k.a. esolangs). [Public domain]","archived":false,"fork":false,"pushed_at":"2018-12-12T17:06:26.000Z","size":383,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-12T22:20:42.338Z","etag":null,"topics":["esolang","esoteric-language","esoteric-programming-language","java-web-app"],"latest_commit_sha":null,"homepage":"http://catseye.tc/node/yoob","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catseye.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-12-03T00:29:46.000Z","updated_at":"2018-11-29T16:24:20.000Z","dependencies_parsed_at":"2022-09-09T10:41:38.031Z","dependency_job_id":null,"html_url":"https://github.com/catseye/yoob","commit_stats":null,"previous_names":[],"tags_count":5,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2Fyoob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2Fyoob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2Fyoob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2Fyoob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/yoob/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224742405,"owners_count":17362232,"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":["esolang","esoteric-language","esoteric-programming-language","java-web-app"],"created_at":"2024-11-15T07:13:03.880Z","updated_at":"2024-11-15T07:13:04.617Z","avatar_url":"https://github.com/catseye.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"yoob\n====\n\n_yoob_ is a framework for implementing esoteric programming languages in Java.\nIt aims to make it easy for a user to experiment with a large number of\nesolangs with a minimal install burden (i.e. in a Java applet), and to make\nit easy for designers to rapidly implement and showcase their esolangs.\n\nSee also: [yoob.js](http://catseye.tc/node/yoob.js).\n\nFeatures\n--------\n\nyoob provides interfaces and base classes for components commonly used in the\nimplementation of esolangs, including program states, playfields, and tapes.\nThis allows one to implement an esolang, similar to existing esolangs, fairly\nrapidly.\n\nyoob \"understands\" how to control, display, and animate an esolang, so long\nas it is implemented in a way that conforms to the interfaces that it\nprovides.  It uses this \"understanding\" to provide a graphical, interactive\nJava GUI (potentially in an applet) for developing in the language.  It could\nalso in theory provide other interfaces, such as a traditional command-line\ninterface, to any yoob-conformant implementation.\n\nA Note on Tapes\n---------------\n\nTapes are depicted vertically, rotated 90 clockwise from the traditional\nhorizontal orientation: the \"left\" of the tape is at the top of the display\nand the \"right\" of the tape is at the bottom.  This is because in many\nesolangs, each tape cell may contain an unbounded integer, and in Arabic\nnumeral notation, this takes up more horizontal area than vertical; thus\ndisplaying the tape vertically is a more efficient use of screen area.\n\nHistory\n-------\n\nThe current released version of yoob is 0.3.  There are a few minor UI\nimprovements in this version, but the main enhancement is that example\nprograms are modelled as proper Java objects, and they support being loaded\nfrom remote URLs.  This allows esolang implementations which are under one\nlicense to have example programs which are under another license; this in\nturn allows a few esolang implementations (Ale, Sceql, Qdeql) to be released\nin this distribution without embedded (possibly non-public domain) example\nprograms, thus keeping the whole distribution in the public domain.\n\nThe previous released version of yoob was 0.2.  I decided to release it,\nin spite of the source being embarassingly bad, so that the masses might\nmock it, and perhaps, in their collective moment of weakness, submit patches,\nor at least actionable flames (note: actionable.)\n\nVersion 0.1 of yoob was purely a technology preview and was never officially\nreleased.\n\nThe API should not be expected to be stable through the 0.x series.\n\nDevelopment\n-----------\n\nSee the [yoob entry][] at [Cat's Eye Technologies][] for details of development.\n\nTODO\n----\n\n(Scavenged from some miscellaneous notes I made at one point.  Not sure how\nmuch of this duplicates what's on the Issue Tracker.)\n\n* Allow different alternate views to be selected between. (3)\n* Actual error handling.\n* Specify which example program to initially select on command line (1)\n* Some way to link directly to a particular language in the applet,\n  using Javascript (2)\n* A test harness, including specifying how many cycles to run and what\n  playfields/tapes should look like afterwards and mocking I/O (5)\n* Improve BasicStack to raise an exception or something on underflow.\n* Allow PRNG to be seeded (not just seeded but supplied with a series of\n  values to produce)\n* Welcome panel - HTML doesn't cut it in some browsers (?)\n* Document the policy for mutation of Playfields and Tapes and States and\n  such. (?)\n\nFor Further Information\n-----------------------\n\nFor further information, please see the [yoob entry][] at\n[Cat's Eye Technologies][].\n\nYet more information can be found in the [yoob article][] on the [esowiki][].\n\nAn instance of yoob running as a Java JNLP application can be found in the\n[yoob installation][] at Cat's Eye Technologies.\n\n[yoob article]: http://www.esolangs.org/wiki/yoob\n[esowiki]: http://www.esolangs.org/wiki/\n[yoob installation]: http://catseye.tc/installation/yoob/\n[yoob entry]: http://catseye.tc/node/yoob\n[Cat's Eye Technologies]: http://catseye.tc/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fyoob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fyoob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fyoob/lists"}