{"id":19454046,"url":"https://github.com/vurv78/expressive","last_synced_at":"2025-04-25T04:31:04.405Z","repository":{"id":50450313,"uuid":"445927694","full_name":"Vurv78/Expressive","owner":"Vurv78","description":"Expression, but it's Typescript (with extras). Replacement for Expression2, ExpAdv, Starfall","archived":true,"fork":false,"pushed_at":"2025-02-24T16:38:52.000Z","size":523,"stargazers_count":13,"open_issues_count":9,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-24T17:43:57.276Z","etag":null,"topics":["compiler","e2","expression2","garrysmod","glua","gmod","programming-language","transpiler","typescript","wiremod"],"latest_commit_sha":null,"homepage":"https://vurv78.github.io/Expressive/web/index.html","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vurv78.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":"2022-01-08T21:03:37.000Z","updated_at":"2025-02-24T16:39:12.000Z","dependencies_parsed_at":"2025-02-24T17:35:21.030Z","dependency_job_id":"397a1f34-774d-40f1-bbd3-8c832778e521","html_url":"https://github.com/Vurv78/Expressive","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/Vurv78%2FExpressive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vurv78%2FExpressive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vurv78%2FExpressive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vurv78%2FExpressive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vurv78","download_url":"https://codeload.github.com/Vurv78/Expressive/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250754657,"owners_count":21481850,"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":["compiler","e2","expression2","garrysmod","glua","gmod","programming-language","transpiler","typescript","wiremod"],"created_at":"2024-11-10T17:07:15.622Z","updated_at":"2025-04-25T04:31:04.378Z","avatar_url":"https://github.com/Vurv78.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e [!NOTE] \n\u003e This project never came to fruition, but it'll return for TASBox in my wiremod replacement.  \n\u003e It's already much further along than Expressive was.  \n\u003e Keep an eye on https://github.com/mekkanics :)\n\n# Expressive [![Linter Badge](https://github.com/Vurv78/Expressive/workflows/Linter/badge.svg)](https://github.com/Vurv78/Expressive/actions) [![License](https://img.shields.io/github/license/Vurv78/Expressive?color=red\u0026include_prereleases)](https://github.com/Vurv78/Expressive/blob/master/LICENSE) [![Expressive Discord](https://img.shields.io/discord/936811504706134036?label=Discord\u0026logo=discord\u0026logoColor=ffffff\u0026labelColor=7289DA\u0026color=2c2f33)](https://discord.gg/u6eQPcZv4y) [![Website](https://img.shields.io/website?down_message=Offline\u0026label=Try%20Me%21\u0026up_color=Blue\u0026up_message=Online\u0026url=https%3A%2F%2Fvurv78.github.io%2FExpressive%2Fweb%2Findex.html)](https://vurv78.github.io/Expressive/web/index.html)\n\u003e Expression, but it's Typescript with extras\n\nExpressive is the hopeful final solution to the Expression programming languages. It was originally a fork of Expression3, but has become a full rewrite. It is modeled after [Typescript](https://www.typescriptlang.org).\n\n## Note\nThis is a work in progress. Adding this to the server may be dangerous.\nAnd yes this is codenamed Expression4.\n\n*This could potentially give players access to serverside lua. Yes. It's that bad.*\n\n## Differences from E2\nPractically everything.\nThere are classes, you can finally make lowercase variables, lambdas, and whatnot.\nEverything is neatly in libraries, like ``holograms.create``\n\nThis also leverages the powerful [Syper](https://github.com/Sevii77/syper) editor instead of the wire editor, which comes with autocomplete, \"intellisense\", code folding, custom themes and more.\n\n\u003c!-- TODO List of stuff here --\u003e\n\n## Example Code\n\n```ts\n// You can create lowercased variables now.\n// 'var' creates a global variable. It does not follow javascript/ts convention as function scoping is really horrible anyway.\nvar ops = 55;\nops++;\nops--;\n\n// New function definitions typescript style.\n// Note that despite this example having a lack of explicit type annotations, this is a *strictly* typed language.\n// The types are inferred by the compiler.\nfunction bar(foo: int, bar: int) {\n\treturn foo + bar;\n};\n\n// This is not a part of typescript, and custom to Expressive.\n// These are expression blocks, which allow you to block your code into scopes for organization.\n// You can get the return value out of the last expression in the scope through implicit returns.\n{\n\tvar global = 55;\n\tlet str = \"🤖\";\n\n\t{\n\t\t// Boolean values!\n\t\tlet anotherone = true;\n\t\t{\n\t\t\t// Typed builtin array types. No more array()[1, number]\n\t\t\t// Every value inside of it must be the same type.\n\t\t\tlet an_array = [\"Hi\"];\n\t\t}\n\t\t// 'str' also exists in here\n\n\t\t// 'anotherone' is dropped.\n\t}\n\t// 'global' exists in here\n\tprint(global)\n}\n// 'global' exists cause it uses 'var', which defines a global variable\nprint(global);\n// print(str); -- Errors, 'str' is only defined inside of the above scope.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvurv78%2Fexpressive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvurv78%2Fexpressive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvurv78%2Fexpressive/lists"}