# Introduction

[![NPM version](https://badge.fury.io/js/budgie.svg)](http://badge.fury.io/js/budgie) [![Greenkeeper badge](https://badges.greenkeeper.io/budgielang/budgie.svg)](https://greenkeeper.io/) [![Circle CI](https://circleci.com/gh/budgielang/budgie.svg?style=svg)](https://circleci.com/gh/budgielang/budgie)

A unified syntax that compiles into a number of OOP languages. *Formerly known as General Language Syntax (GLS).*

* 🎭 Try it at [**budgielang.org**](https://budgielang.org) 🎭
* 📚 Read the docs on [**docs.budgielang.org**](https://docs.budgielang.org) 📚

> **Budgie is still under development. Don't expect everything to work!**

## Usage

Budgie can be used as a command-line app or via `import`/`require`.

### CLI

To convert `file.bg` to `file.py`:

```
npm install budgie-cli --global

budgie --language Python file.bg
```

See [budgie-cli](https://github.com/budgielang/budgie-cli).

### Code

`npm install budgie`

```javascript
import { Budgie } from "budgie";

const budgie = new Budgie("C#");

// System.Console.WriteLine("Hello world!");
budgie.convert([`print : ("Hello world!")`]);
```

## Why?

No reason in particular!

Budgie is not intended to be a useful language or targeted to any real purpose. It's a proof-of-concept exploration for the fun of it.

## Status

Budgie is just shy of **0.4**.

| Deliverable                      | Version | Description                                                                                                                                                               |
| -------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| C++ Compiler                     | 0.1     | Command-line Budgie prototype, written in C++.                                                                                                                            |
| TypeScript Compiler draft        | 0.2     | Budgie compiler as a website, written in TypeScript.                                                                                                                      |
| TypeScript Compiler + C# Output  | 0.3     | Budgie compiler re-written in TypeScript. Near-working C#, Java, JavaScript, Python, Ruby, and TypeScript output.                                                         |
| Roundtripping Feature Complete   | 0.4     | All features required for roundtripping implemented. Working C# and TypeScript output. Near-working Java, JavaScript, Python, and Ruby output. Switched to a better name. |
| Full Language Outputs            | 0.5     | Working C#, Java, JavaScript, Ruby, Python, and TypeScript output.                                                                                                        |
| Haxe, Powershell, Misc.          | 0.6     | Onboard or reject those languages and other possibilities.                                                                                                                |
| Language Specification Finalized | 0.7     | Finalized language spec & cleaned internals of code.                                                                                                                      |
| General Release                  | 1.0     | Public announcement, glory to everyone.                                                                                                                                   |

## Development

If you'd like to contribute to Budgie, see [Development.md](https://github.com/budgielang/budgie/blob/master/docs/development.md).

> Requires Node >=12

💖 Many thanks to [@matthojo](https://github.com/matthojo) for allowing use of the `budgie` npm package name!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.budgielang.org/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
