{"id":16808577,"url":"https://github.com/forivall/tacoscript","last_synced_at":"2025-03-15T13:31:13.456Z","repository":{"id":1875831,"uuid":"43618453","full_name":"forivall/tacoscript","owner":"forivall","description":":taco: The bidirectional alt-JS language","archived":false,"fork":false,"pushed_at":"2024-02-06T20:40:53.000Z","size":4382,"stargazers_count":46,"open_issues_count":46,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-29T10:07:03.710Z","etag":null,"topics":["alt-js","ast-transformations","babylon","coffeescript","cst","generator","javascript","parser"],"latest_commit_sha":null,"homepage":"http://tacoscript.github.io","language":"JavaScript","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/forivall.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2015-10-03T23:21:34.000Z","updated_at":"2024-08-20T00:34:51.963Z","dependencies_parsed_at":"2023-01-14T10:55:15.130Z","dependency_job_id":"e3a4b0f2-f316-42ef-ad4f-217b21067cc9","html_url":"https://github.com/forivall/tacoscript","commit_stats":{"total_commits":1143,"total_committers":24,"mean_commits":47.625,"dds":"0.29221347331583547","last_synced_commit":"6754fa7abd43f62d803bd4ad2c3f06a0383139f7"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forivall%2Ftacoscript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forivall%2Ftacoscript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forivall%2Ftacoscript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forivall%2Ftacoscript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forivall","download_url":"https://codeload.github.com/forivall/tacoscript/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243735833,"owners_count":20339536,"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":["alt-js","ast-transformations","babylon","coffeescript","cst","generator","javascript","parser"],"created_at":"2024-10-13T09:58:07.653Z","updated_at":"2025-03-15T13:31:11.180Z","avatar_url":"https://github.com/forivall.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg alt=\"TacoScript Icon\" src=\"https://rawgit.com/forivall/tacoscript/master/doc/icon.svg\" width=\"42px\" align=\"top\"\u003e [TacoScript][TacoScript]\n==========\n\n[![Build Status](https://travis-ci.org/forivall/tacoscript.svg?branch=master)](https://travis-ci.org/forivall/tacoscript) [![Waffle.io Stories](https://badge.waffle.io/forivall/tacoscript.png?label=ready\u0026title=Waffles)](https://waffle.io/forivall/tacoscript) [![Join the chat at https://gitter.im/forivall/tacoscript](https://badges.gitter.im/forivall/tacoscript.svg)](https://gitter.im/forivall/tacoscript?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nAn es2015+-isomorphic altjs language, with syntax inspired by CoffeeScript,\nPython, Ruby, and [frappe], and architecture inspired by [Babel].\n\n\u003ch2\u003e\u003ca href=\"./doc/SPEC.md\"\u003eSyntax Specification\u003c/a\u003e\u003c/h2\u003e\n\n## What does it mean that this language is \"es2015+-isomorphic\"?\n\nTacoScript shares its Abstract Syntax Tree (AST) with JavaScript, using the same\nformat as [Babylon]. This means that, for any valid JavaScript code, there is an\nexact, lossless version of that code in TacoScript, and vice versa: For all\nvalid TacoScript code, there is an exact translated representation in\nJavaScript. Currently, whitespace will not always be preserved; eventually,\nwhitespace will also be preserved.\n\n\u003e Unlike CoffeeScript, TacoScript _actually_ is, 100%, just JavaScript.\n\nSo, if it is just JavaScript, why does this exist? For the same reason that\nthere are both British English and American English: Some people just prefer\ndifferent conventions.\n\nAnd also to experiment with new syntax that won't or can't be an [ECMAScript]\nproposal. (so [Babel] won't support them).\n\n## Packages\n\n### [tacoscript](./packages/tacoscript)\n_(In Progress)_\n\nCommand line tools. Currently includes `repl`, `compose`, `transpose`, `compile`, and `node` commands.\n\n### [horchata](./packages/horchata)\n\nParses TacoScript into an AST/[CST]. Uses the same tree format as [Babylon],\ndeviating where necessary.\n\n    import * as horchata from \"horchata\"\n    ast = horchata.parse(code, options)\n\n### [cstify](./packages/cstify)\n\nAdds [CST] `sourceElements` to an existing JavaScript / [Babylon] / estree CST.\n\n### [tacotruck](./packages/tacotruck)\n_(Previously `tacoscript-generator`)_\n\nGenerates TacoScript code from a [Babylon] AST/CST.\n\n    import generate from \"tacotruck\"\n    code = generate(ast, options, originalSourceCode)\n\n### [taqueria](./packages/taqueria)\n_(Not Implemented)_\n\nConverts a JavaScript AST with CST elements to a TacoScript CST, which preserves\nwhitespace. Inverse of `alpastor`.\n\n### [alpastor](./packages/alpastor)\n_(In progress)_\n\nConverts a TacoScript AST's CST elements to JavaScript CST elements, which then\ncan be output as JavaScript code that preserves the whitespace present in the\nTacoScript code. Inverse of `taqueria`\n\n### [comal](./packages/comal)\n\nAST translator (transpiler / detranspiler) core.\n\n\u003e comal (noun) _/koˈmal/_ - A flat, pan-like clay or metal griddle used to cook\n\u003e tortillas or other foods.\n\n### tacoscript-eslint\n_(Not Implemented)_\n\nTransforms a TacoScript AST so that it can be checked by [ESLint].\n\n### tacoscript-implicit-return-function\n_(In Progress, needs generator and transforms)_\n\nAST transformations for implicitly returning functions (\"sharp arrows\").\n\n### [tacoscript-strudel-this-member](./packages/tacoscript-strudel-this-member)\n_(In Progress, needs generator and transforms)_\n\nAST transformations for `this.` → [`@`][strudel]\nshorthand.\n\n### [tacoscript-logical-assign](./packages/tacoscript-logical-assign)\n_(In Progress, needs generator and transforms)_\n\nParser \u0026 Generator plugins and AST transformations for `and=` and `or=`.\n\nCould also include an acorn plugin for parsing `||=` and `\u0026\u0026=` in javascript.\n\n### tacoscript-auto-const-extern\n_(Not Implemented)_\n\nParser \u0026 Generator plugins for extern declarations. Required by any auto-const\nplugins, or if anyone creates an auto-let or CoffeeScript-style auto-var\nalternative plugin.\n\n### tacoscript-auto-const-statement\n_(Not Implemented)_\n\nAST transformations for automatic const variables when assignment is a\nstatement. [_(Spec)_](./doc/auto-const.md).\n\n### tacoscript-auto-const-expression-simple\n_(Not Implemented)_\n\nAST transformations for automatic const variables in restricted expression\nforms. [_(Spec)_](./doc/auto-const.md).\n\n### tacoscript-auto-const-full\n_(Not Implemented)_\n\nAST transformations for automatic const variables anywhere forms.\n[_(Spec)_](./doc/auto-const.md). May create ugly JavaScript code.\n\n### [tacoscript-iife-with](./packages/tacoscript-iife-with)\n_(In Progress, needs generator)_\nParser \u0026 Generator and transformations for iife's created with the `with` keyword syntax.\n\nExample:\n```\nwith= {bar: foo, boop: beep} \u003e bar + boop\n```\n\n### tacoscript-negative-conditional\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `unless` and `until`.\n\n### tacoscript-useful-modulo\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `%%`.\n\n### tacoscript-fluid-comparison\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `a \u003c b \u003c c`, etc.\n\n### tacoscript-negative-binary-keywords\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `not instanceof`, `not\nin` (, `not of`).\n\n### tacoscript-universal-fat-arrow\n_(Parsing complete, generator and transformations ready to start)_\n\nAST transformations and verification for using the fat arrow (`=\u003e`) in any\nfunction definition situation, for lexical binding of `this` and `arguments`.\nUses horchata's `lexicallyBoundNamedFunctions` feature parsing option.\n\n### tacoscript-asbool\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `!!` (`not not`) to\n`asbool`.\n\n### tacoscript-binary-of\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `of` binary operator.\n\n### tacoscript-soak\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for soak member expressions:\n`?.` and `?[`.\n\n### tacoscript-null-coalescing-op\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for the null coalescing\noperator: `a ? b`.\n\n### tacoscript-null-coalescing-assign\n_(Not Implemented)_\n\nCombination of tacoscript-logical-assign and tacoscript-null-coalescing-op.\n\n### tacoscript-typeof-null-is-null\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations so that in TacoScript,\n`typeof null === \"null\"`.\n\n### tacoscript-safe-switch\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for the non-fallthrough\nswitch variant.\n\n### tacoscript-double-strudel-class-member\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `@@` shorthand operator.\n\n### tacoscript-dynamic-super\n_(Not Implemented)_\n\nAllow super in any (i.e. non-class) function, and translate `super()` to\n`this.constructor.super_.call(this)` and `super.foo()` to\n`this.constructor.super_.prototype.foo.call(this)`\n\nThe `super_` convention is codified in `util.inherits`.\n\n### tacoscript-generic-template-string\n_(Not Implemented)_\n\n### tacoscript-multiline-string\n_(Not Implemented)_\n\n### tacoscript-multiline-regex\n_(Not Implemented)_\n\n### tacoscript-boolean-switch-statement\n_(Not Implemented)_\n\n### tacoscript-boolean-switch-expression\n_(Not Implemented)_\n\n### tacoscript-auto-label\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for automatic labels for long\nbreaks: `break for`, etc.\n\n### tacoscript-conditional-catch\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for [conditional catch\nclauses].\n\n### tacoscript-rescue\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `rescue` blocks for\nfunctions, for simplified error handling.\n\n### tacoscript-conditional-rescue\n_(Not Implemented)_\n\nCombines tacoscript-conditional-catch and tacoscript-rescue.\n\n### tacoscript-incremental-for-loop\n_(Not Implemented)_\n\nParser \u0026 Generator plugins and AST transformations for `upto`, `below`, `downto`, `above` and `by`\nin for loop headers\n\n### tacoscript-literate\n_(Not Implemented)_\n\nParser \u0026 Generator plugins for literate mode.\n\n### tacoscript-comprehensions\n_(Not Implemented)_\n\n### tacoscript-ranges\n_(Not Implemented)_\n\n### tacoscript-operator-overloading\n_(Not Implemented)_\n\n### tacoscript-block-break\n_(Not Implemented)_\n\n### tacoscript-variable-declaration-expressions\n_(Not Implemented)_\n\n### tacoscript-git-magic\n_(Not Implemented)_\n\nGit hooks to automatically create an equivalent history in git as if a\nJavaScript project was written in TacoScript, and to therefore seamlessly\ncontribute to JavaScript projects by coding in TacoScript, and vice-versa.\n\n\n[TacoScript]: http://tacoscript.github.io/\n[frappe]: https://github.com/lydell/frappe\n[Babel]: https://github.com/babel/babel\n[Babylon]: https://github.com/babel/babylon\n[estree]: https://github.com/estree/estree\n[ECMAScript]: https://github.com/tc39/ecma262\n[CST]: https://github.com/estree/estree/pull/107\n[strudel]: http://www.catb.org/~esr/jargon/html/S/strudel.html\n[ESLint]: http://eslint.org\n[conditional catch clauses]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#Conditional_catch_clauses\n[ImmediatelyInvokedFunctionExpression]: ./doc/ast/spec.md#immediatelyinvokedfunctionexpression\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforivall%2Ftacoscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforivall%2Ftacoscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforivall%2Ftacoscript/lists"}