# 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!
