{"id":51109413,"url":"https://github.com/dhunanyan/moonchunk","last_synced_at":"2026-06-24T16:02:17.753Z","repository":{"id":360794562,"uuid":"1183454311","full_name":"dhunanyan/moonchunk","owner":"dhunanyan","description":"MoonChunk is a TypeScript-based DSL runtime for generating static HTML from .mncnk files with imports, scoped variables, functions, loops, metadata, and ANTLR parsing.","archived":false,"fork":false,"pushed_at":"2026-06-23T16:38:41.000Z","size":21132,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-23T18:25:47.170Z","etag":null,"topics":["antlr","antlr4","antlr4ts","compiler-construction","developer-tools","dsl","html-generation","interpreter","language-runtime","moonchunk","parser","static-site-generator","templating","typescript"],"latest_commit_sha":null,"homepage":"https://dhunanyan.com","language":"TeX","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/dhunanyan.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":".github/CODEOWNERS","security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-16T16:13:37.000Z","updated_at":"2026-06-23T16:38:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dhunanyan/moonchunk","commit_stats":null,"previous_names":["dhunanyan/moonchunk"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/dhunanyan/moonchunk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhunanyan%2Fmoonchunk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhunanyan%2Fmoonchunk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhunanyan%2Fmoonchunk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhunanyan%2Fmoonchunk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhunanyan","download_url":"https://codeload.github.com/dhunanyan/moonchunk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhunanyan%2Fmoonchunk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34739426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["antlr","antlr4","antlr4ts","compiler-construction","developer-tools","dsl","html-generation","interpreter","language-runtime","moonchunk","parser","static-site-generator","templating","typescript"],"created_at":"2026-06-24T16:02:17.226Z","updated_at":"2026-06-24T16:02:17.748Z","avatar_url":"https://github.com/dhunanyan.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/dhunanyan/moonchunk/master/assets/logo.png\" alt=\"MoonChunk logo\" width=\"180\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eMoonChunk\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A compact DSL and runtime for generating static HTML from \u003ccode\u003e.mncnk\u003c/code\u003e source files.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/version-1.0.0-2ea44f\" alt=\"Version\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/node-%3E%3D18-339933?logo=node.js\u0026logoColor=white\" alt=\"Node \u003e= 18\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/typescript-5.x-3178c6?logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/antlr4ts-0.5.0--alpha.4-fb8c00\" alt=\"ANTLR4TS\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT License\" /\u003e\n\u003c/p\u003e\n\n## Overview\n\n- Book (in Polish): [MoonChunk_Book.pdf](MoonChunk_Book.pdf)\n- Complete Documentation (in Polish): [MoonChunk_Complete_Docs_Polish.pdf](MoonChunk_Complete_Docs_Polish.pdf)\n\nMoonChunk is an open-source language runtime focused on:\n\n- describing page generation in a concise DSL (`*.mncnk`)\n- parsing with ANTLR4TS\n- executing language constructs (imports, scopes, loops, functions, recursion)\n- generating formatted HTML output\n\nRecommended use cases:\n\n- small and medium static sites with reusable page fragments\n- typed HTML generation from JSON-like data\n- educational projects around parsers, interpreters, and DSL design\n- controlled page generation where explicit execution flow matters\n\n## Features\n\n- Modular chunks with `import` / `@include`\n- Explicit entrypoint execution via `moon(...)`\n- Local and global variable model (`let`, `const`, `env { global ... }`)\n- `let` declarations may be created without an initial value and must be assigned before use\n- Type-aware expressions (`int`, `float`, `double`, `bool`, `string`, `number`, `array`, `dict` / `object`, `undefined`, `unknown`, `any`)\n- Control flow: `if`, `for`, `while`, `break`, `continue`\n- Functions (including recursive calls)\n- Arrays and dictionaries with path/index access (`obj.a`, `arr[0]`)\n- Scope-aware access to parent scopes via `parent::name`\n- Casts with C-style syntax `(int)value`; `as` remains supported as a compatibility alias\n- Builtins like `data(...)` and `print(...)`\n- Internal base layout + metadata defined directly in `.mncnk`\n- Friendly error diagnostics with line/column information\n\n## Requirements\n\n- Node.js `\u003e=18`\n- Yarn Classic (`1.x`) recommended\n\nFor end users of the language itself, the main workflow is:\n\n- run a prepared MoonChunk runtime/package\n- execute a `.mncnk` file\n- inspect generated HTML in the output directory\n\nRepository-level commands below are mostly relevant when developing MoonChunk itself.\n\n## Installation\n\n```bash\nyarn install\n```\n\n## Quick Start\n\n```bash\nyarn build\nyarn start examples/scenarios/18-recursive-function/site.mncnk\n```\n\n## Build \u0026 Run\n\n```bash\n# Full build (ANTLR generation + TypeScript compilation)\nyarn build\n\n# Start runtime\nyarn start \u003cpath/to/file.mncnk\u003e\n\n# Debug mode\nyarn start:debug \u003cpath/to/file.mncnk\u003e\n\n# Type checks / validation script\nyarn run check\n\n# Lint checks\nyarn lint\n\n# Auto-fix lint issues\nyarn lint:fix\n```\n\n## Git Hooks (Husky)\n\nHusky is configured for local quality gates:\n\n- `pre-commit` -\u003e `yarn lint` + `yarn run check`\n- `pre-push` -\u003e `yarn build`\n\nAfter pulling changes, run:\n\n```bash\nyarn install\n```\n\n(`prepare` script will initialize Husky hooks automatically.)\n\n## Quality Checks\n\nRecommended local verification before opening a PR:\n\n```bash\nyarn lint\nyarn run check\nyarn build\n```\n\nChecks overview:\n\n- `yarn lint` -\u003e ESLint for TypeScript and scripts\n- `yarn run check` -\u003e MoonChunk self-check (build + runtime sanity check)\n- `yarn build` -\u003e grammar generation + TypeScript compilation\n\n## Programmatic API\n\n```ts\nimport { executeMoonChunk, executeMoonChunkFile } from \"moonchunk\";\n\nconst fromFile = executeMoonChunkFile(\n  \"examples/scenarios/17-print-builtin/site.mncnk\",\n);\nconsole.log(fromFile.ok, fromFile.generatedFiles);\n\nconst fromSource = executeMoonChunk(\n  'chunk \"Main\" { output: \"./dist\"; }; moon(Main);',\n);\nconsole.log(fromSource.ok, fromSource.diagnostics);\n```\n\n## Project Layout\n\n```text\nmoonchunk/\n├── MoonChunkLexer.g4\n├── MoonChunkParser.g4\n├── moonchunk/\n│   ├── api.ts\n│   ├── parser/\n│   ├── runtime/\n│   └── base.tpl\n├── scripts/\n└── examples/scenarios/\n```\n\n## Examples\n\n- `examples/scenarios/16-metadata-common`\n- `examples/scenarios/17-print-builtin`\n- `examples/scenarios/18-recursive-function`\n- `examples/scenarios/26-final-mandatory`\n- `examples/scenarios/27-inc-and-parent-depth`\n- `examples/scenarios/30-final-todo-coverage`\n\nRun any example:\n\n```bash\nyarn start examples/scenarios/17-print-builtin/site.mncnk\n```\n\n## Ecosystem\n\n- VS Code syntax highlight extension: [moonchunk-highlight-vscode-extension](https://github.com/dhunanyan/moonchunk-highlight-vscode-extension)\n\n## Status\n\nMoonChunk is under active development.  \nThe language is intentionally evolving and new tokens/runtime capabilities are being added incrementally.\n\n## Contributing\n\nIssues and pull requests are welcome.\n\nSuggested flow:\n\n1. Fork the repository.\n2. Create a feature branch.\n3. Add/update scenario examples when adding language behavior.\n4. Run `yarn build` and `yarn run check`.\n5. Open a pull request with a short change summary.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhunanyan%2Fmoonchunk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhunanyan%2Fmoonchunk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhunanyan%2Fmoonchunk/lists"}