{"id":18834298,"url":"https://github.com/crafttweaker/zenscript","last_synced_at":"2025-04-06T00:07:18.513Z","repository":{"id":29565421,"uuid":"121993309","full_name":"CraftTweaker/ZenScript","owner":"CraftTweaker","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-07T03:08:48.000Z","size":859,"stargazers_count":81,"open_issues_count":8,"forks_count":25,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-29T23:07:47.877Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":null,"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/CraftTweaker.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":"2018-02-18T21:41:15.000Z","updated_at":"2025-03-20T17:23:19.000Z","dependencies_parsed_at":"2023-02-19T12:00:51.049Z","dependency_job_id":"88ca7bed-10d9-431c-ab75-403ac9e4bced","html_url":"https://github.com/CraftTweaker/ZenScript","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/CraftTweaker%2FZenScript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CraftTweaker%2FZenScript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CraftTweaker%2FZenScript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CraftTweaker%2FZenScript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CraftTweaker","download_url":"https://codeload.github.com/CraftTweaker/ZenScript/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415967,"owners_count":20935388,"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":["hacktoberfest"],"created_at":"2024-11-08T02:11:49.695Z","updated_at":"2025-04-06T00:07:18.496Z","avatar_url":"https://github.com/CraftTweaker.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZenScript library\r\n\r\n### The goal of ZenScript was to provide a scripting system that fit several requirements:\r\n\r\n* Be usable by people without any prior programming knowledge, for simple tasks\r\n* Be usable for advanced tasks by experienced programmers\r\n* Integrate easily with Java classes\r\n* Provide sufficient syntax and libraries to integrate with its environment\r\n* Be clear and concise in its operation\r\n* Be typesafe, such that both small and large applications can be made with it\r\n* It should be efficient to run\r\n\r\n\r\nZenScript originated from MineTweaker where I needed a simple programming\r\nlanguage that would allow users without programming knowledge to be able\r\nto execute simple commands by following the tutorials for it.\r\n\r\nOriginally MineTweaker had a simple one-line-at-a-time parsed scripting system,\r\nbut it quickly became clear that it wasn't flexible enough, so a simple parsed\r\nlanguage was created. This parsed language worked quite well but was very\r\ninefficient as each value was wrapped into its own object. As I wanted to\r\nexpand the capabilities, this language was not very efficient.\r\n\r\nAdditionally, it wasn't type-safe. There were no type definitions. On one hand,\r\nthis is handy, since I didn't want to bother people with types. Following the\r\ntutorial was easy and the code was short. However, this gives a problem for the\r\nmore experienced user, wanting to go beyond the basic tutorials: what are these\r\nvalues I'm working with, which properties does it have and which methods are\r\navailable no it? It's not clear.\r\n\r\nAs a balance, ZenScript allows mixed typed and typeless behavior. You don't\r\nneed to define types anywhere - the compile will infer them where possible\r\nand exhibit typeless behavior when the type is effectively unknown. In nearly\r\nall the cases, the type is perfectly known and execution runs at native java\r\nspeed. Since there are types, they can be documented and enforced.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrafttweaker%2Fzenscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrafttweaker%2Fzenscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrafttweaker%2Fzenscript/lists"}