Skip to content
Polyglot SQL formatter
JavaScript PureScript Elm Rust PHP Dart Other
Branch: master
Clone or download

SQL Formatter

Build Status

This is a simple SQL formatter that handles formatting whitespace and capitalization of keywords. I originally wrote it for the purpose of learning Elm, but it soon became a project where I could try out languages that I'm unfamiliar with and see how many different languages can be compiled down to JavaScript. Most of the languages used, plus a lot of others, can be found here.

The app logic in each language is compiled to JavaScript using various Webpack loaders, some of which I implemented as wrappers around shell commands. The current languages are:

Check it out at



Install npm dependencies first with npm install, then follow the steps for each language below.


Find the correct Dart SDK URL for the desired version and OS here, then run the following:

mkdir -p "$HOME/.dart"
curl -L <dart-sdk-url> -o "$HOME/.dart/"
unzip -q "$HOME/.dart/" -d "$HOME/.dart"
export PATH="$HOME/.dart/dart-sdk/bin:$PATH"
pub get


First, install Erlang and Elixir. On Mac, you can install Erlang with brew install erlang. To install Elixir, I recommend using Kiex.

Then install ElixirScript:

export EXS_VERSION=56cb2c5
mkdir -p "$HOME/.elixirscript/$EXS_VERSION"
curl -o- -L$EXS_VERSION.tar.gz -o "$HOME/.elixirscript/elixirscript-$EXS_VERSION.tar.gz" | tar xvzf - -C "$HOME/.elixirscript/$EXS_VERSION"
export PATH="$HOME/.elixirscript/$EXS_VERSION/dist/elixirscript/bin:$PATH"


Install Elm packages:

$(npm bin)/elm-package install


The ES6 build doesn't require any additional dependencies!


Install F#. On Mac, you can run brew install mono. On Linux, check out the docs.


First, install Go 1.8, then run:

go get -u


First, install Ruby if you don't already have it. I recommend using RVM. Then run:

bundle install


Install PHP (any version 5.3-5.6 should work fine), then install PHPUnit:

mkdir -p "$HOME/.phpunit/bin"
curl -sL -o "$HOME/.phpunit/bin/phpunit"
chmod +x "$HOME/.phpunit/bin/phpunit"
export PATH="$HOME/.phpunit/bin:$PATH"


Install psc-package and install dependencies:

mkdir -p "$HOME/.psc-package/$PSC_PACKAGE_VERSION"
# Replace macos with linux64 if necessary
curl -o- -sL$PSC_PACKAGE_VERSION/macos.tar.gz | tar xzf - -C "$HOME/.psc-package/$PSC_PACKAGE_VERSION" --strip-components 1
export PATH="$HOME/.psc-package/$PSC_PACKAGE_VERSION:$PATH"
psc-package update


Rust has the most experimental compilation process, using support for WebAssembly via nightly builds. Run the following:

# Install Rust
curl -L | sh -s -- -y --default-toolchain=nightly
source ~/.cargo/env
rustup target add wasm32-unknown-unknown
cargo install cargo-web


Run the following to setup SBT:

export SBT_VERSION=0.13.15
mkdir -p "$HOME/.sbt-bin/$SBT_VERSION"
curl -o- -L$SBT_VERSION/sbt-$SBT_VERSION.tgz | tar xvzf - -C "$HOME/.sbt-bin/$SBT_VERSION" --strip-components 1
export PATH="$HOME/.sbt-bin/$SBT_VERSION/bin:$PATH"



Compile all code to JavaScript:

npm run compile

Compile certain languages

The compile command accepts comma-separated only and exclude arguments to filter what languages are compiled, e.g.

# Only compile ES6 and Opal
npm run compile -- --env.only es6,opal

# Compile everything but GopherJS and Dart
npm run compile -- --env.exclude gopherjs,dart


Run the Webpack dev server:

npm run dev

Note: The dev command also accepts the only and exclude arguments mentioned above

Then visit http://localhost:8000 in your browser.


Tests are run using a variety tools to match the different languages. To run them:

npm run test

Build for production

npm run dist

Note: The dist command also accepts the only and exclude arguments mentioned above


Deployment to GitHub pages is scripted.

You can’t perform that action at this time.