{"id":50900804,"url":"https://github.com/webdevred/jbeam_edit","last_synced_at":"2026-06-16T02:30:27.066Z","repository":{"id":290410450,"uuid":"951566753","full_name":"webdevred/jbeam_edit","owner":"webdevred","description":"A fast, robust command-line parser, formatter, and editor for JBeam files, the JSON-like format used by BeamNG to define vehicles and physics structures.","archived":false,"fork":false,"pushed_at":"2026-05-13T16:41:31.000Z","size":1092,"stargazers_count":5,"open_issues_count":10,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-29T09:34:31.639Z","etag":null,"topics":["beamng","haskell","jbeam","tooling"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webdevred.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-19T22:15:08.000Z","updated_at":"2026-05-13T16:41:28.000Z","dependencies_parsed_at":"2026-03-02T19:03:20.369Z","dependency_job_id":null,"html_url":"https://github.com/webdevred/jbeam_edit","commit_stats":null,"previous_names":["webdevred/jbeam_edit"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/webdevred/jbeam_edit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevred%2Fjbeam_edit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevred%2Fjbeam_edit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevred%2Fjbeam_edit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevred%2Fjbeam_edit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webdevred","download_url":"https://codeload.github.com/webdevred/jbeam_edit/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webdevred%2Fjbeam_edit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34388669,"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-16T02:00:06.860Z","response_time":126,"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":["beamng","haskell","jbeam","tooling"],"created_at":"2026-06-16T02:30:26.392Z","updated_at":"2026-06-16T02:30:27.042Z","avatar_url":"https://github.com/webdevred.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JBeam Tool in Haskell\n\n\u003c!--toc:start--\u003e\n- [Features](#features)\n- [Configuration](#configuration)\n- [Usage](#usage)\n  - [1. Download the latest release](#1-download-the-latest-release)\n  - [2. Unzip the file](#2-unzip-the-file)\n  - [3. Run the setup as Administrator](#3-run-the-setup-as-administrator)\n- [4. Allow in Windows Defender if needed](#4-allow-in-windows-defender-if-needed)\n  - [5. Path refresh](#5-path-refresh)\n  - [6. Open Command Prompt or PowerShell](#6-open-command-prompt-or-powershell)\n  - [7. Run jbeam-edit on a file](#7-run-jbeam-edit-on-a-file)\n  - [From source (Linux or development)](#from-source-linux-or-development)\n- [Examples](#examples)\n- [Planned Features / TODO](#planned-features-todo)\n- [Why Haskell + Megaparsec?](#why-haskell-megaparsec)\n- [Prerequisites](#prerequisites)\n- [Contributing \u0026 License](#contributing-license)\n\u003c!--toc:end--\u003e\n\n[![Build \u0026 test (dev)](https://github.com/webdevred/jbeam_edit/actions/workflows/build-and-test.yaml/badge.svg)](https://github.com/webdevred/jbeam_edit/actions/workflows/build-and-test.yaml)\n[![Build \u0026 test (latest GHC \u0026 deps)](https://github.com/webdevred/jbeam_edit/actions/workflows/future-proofing.yaml/badge.svg?branch=master\u0026event=schedule)](https://github.com/webdevred/jbeam_edit/actions/workflows/future-proofing.yaml)\n[![Build for release](https://github.com/webdevred/jbeam_edit/actions/workflows/build-and-release.yaml/badge.svg?branch=master)](https://github.com/webdevred/jbeam_edit/actions/workflows/build-and-release.yaml)\n[![Lint \u0026 format](https://github.com/webdevred/jbeam_edit/actions/workflows/lint-and-format.yaml/badge.svg?branch=master)](https://github.com/webdevred/jbeam_edit/actions/workflows/lint-and-format.yaml)\n\n\nA fast, robust command-line parser, formatter, and editor for JBeam files, the JSON-like format used by BeamNG to define vehicles and physics structures.\n\n## Features\n\n- **Complete Parsing:**\n  Parses entire `.jbeam` files, including comments and irregular whitespace, without breaking on manual edits.\n\n- **Consistent Formatting:**\n  Uniform indentation, spacing, and layout for improved readability.\n\n- **Automatic Node Management:**\n  Renames nodes sequentially (e.g., `[\"bf1\", ...]` → `[\"bf0\", \"bf1\", \"bf2\"]`) and updates all references automatically. Feature currently unstable, enabled by build flag `transformation`.\n\n- **Configurable Formatting with JBFL:**\n  Customize formatting rules using JBFL, a mini-language to specify padding, decimals, indentation, object key alignment, and more with wildcard targeting.\n\n  Example JBFL snippet:\n\n  ```jbfl\n  .*.nodes[*][*] {\n      PadDecimals: 3;\n      PadAmount: 8;\n  }\n\n  .*.flexbodies[*] {\n      NoComplexNewLine: true;\n  }\n  ```\n\n## Configuration\n\nGenerate a default formatting config with:\n\n```bash\njbeam-edit -cminimal   # simple config\njbeam-edit -ccomplex   # detailed config\n```\n\nConfig files are saved in:\n\n- Linux/macOS: `$HOME/.config/jbeam-edit/rules.jbfl`\n- Windows: `%APPDATA%\\jbeam-edit\\rules.jbfl`\n\nOverride per project by placing `.jbeam_edit.jbfl` in your project root.\n\n## Usage\n\n### 1. Download the latest release\nGo to the [Releases page](https://github.com/webdevred/jbeam_edit/releases) and download the most recent **`.zip`** file.\n\n### 2. Unzip the file\nExtract the contents of the downloaded `.zip` archive to a folder of your choice.\n\n### 3. Run the setup as Administrator\n\nInside the extracted folder, right-click on **setup.exe** and choose **Run as administrator**.\n\n## 4. Allow in Windows Defender if needed\nIf Windows shows a warning such as:\n\n\u003e *Windows protected your PC*\n\nClick **More info** → **Run anyway**.\n\n### 5. Path refresh\nThe installer adds `jbeam-edit` to your **PATH**, but:\n- You must **open a new Command Prompt or PowerShell window** after installation.\n- In some cases, you may need to **log out or restart Windows** for the PATH change to take effect.\n- If it still doesn’t work, you can run it directly using the full path, e.g.:\n\n```powershell\n\"C:\\Program Files (x86)\\jbeam_edit\\jbeam-edit.exe\" your-file.jbeam\n```\n\n### 6. Open Command Prompt or PowerShell\nPress **`Win + R`**, type `cmd` or `powershell`, and hit **Enter**.\n\n### 7. Run jbeam-edit on a file\nNavigate to your project folder in CMD/PowerShell and run:\n\n```powershell\njbeam-edit your-file.jbeam\n```\n\nReplace `your-file.jbeam` with the path to your JBeam file.\n\n#### Typical workflow:\n- Parses and formats the file.\n- Sorts and renames nodes, updating references.\n- Writes the output back with a `.bak` backup (default).\n\n#### In-place editing (no backup):\n```powershell\njbeam-edit -i example.jbeam\n```\n\n### From source (Linux or development)\n\nClone and build with Cabal:\n\n```bash\ngit clone https://github.com/webdevred/jbeam_edit.git\ncd jbeam_edit\ncabal update\ncabal install\njbeam-edit your-file.jbeam\n```\n\n## Examples\n\nFor sample `.jbeam` files and JBFL rule files, see the [Examples Directory README](examples/README.md).\n\n## Planned Features / TODO\n\n- Language Server Protocol (LSP) support\n- Update specific ranges of vertices\n- Expanded tests and example files\n- Improved documentation\n\nConsidered features: https://github.com/webdevred/jbeam_edit/discussions/134\n\n## Why Haskell + Megaparsec?\n\n- Strong static typing for safer, reliable parsing and transformations.\n- Elegant, composable parser combinators.\n- Immutable data handling ensures predictable editing.\n\n## Prerequisites\n\n- **Windows users (BeamNG players):** none, just download the installer from [Releases](https://github.com/webdevred/jbeam_edit/releases/latest).\n- **Developers / Linux users:**\n  - [GHC](https://www.haskell.org/ghc/) (Glasgow Haskell Compiler)\n  - [Cabal](https://www.haskell.org/cabal/) build tool (comes with GHCup)\n\n## Contributing \u0026 License\n\nContributions and bug reports welcome. Licensed under BSD 3-Clause.\n\nHappy parsing and formatting!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevred%2Fjbeam_edit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdevred%2Fjbeam_edit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdevred%2Fjbeam_edit/lists"}