<commit_before><img src="https://user-images.githubusercontent.com/882970/48048842-a0224080-e151-11e8-8855-642cf5ef3fdd.png" width="117px"/>

[![CircleCI](https://circleci.com/gh/candid82/joker.svg?style=svg)](https://circleci.com/gh/candid82/joker)

Joker is a small Clojure interpreter and linter written in Go.

## Installation

On macOS, the easiest way to install Joker is via Homebrew:

```
brew install candid82/brew/joker
```

The same command can be used on Linux if you use [Linuxbrew](http://linuxbrew.sh/).

If you use Arch Linux, there is [AUR package](https://aur.archlinux.org/packages/joker/).

If you use [Nix](https://nixos.org/nix/), then you can install Joker with

```
nix-env -i joker
```

On other platforms (or if you prefer manual installation), download a [precompiled binary](https://github.com/candid82/joker/releases) for your platform and put it on your PATH.

You can also [build](#building) Joker from the source code.

## Usage

`joker` - launch REPL

`joker <filename>` - execute a script. Joker uses `.joke` filename extension. For example: `joker foo.joke`.

`joker -e <expression>` - execute an expression. For example: `joker -e '(println "Hello, world!")'`

`joker --lint <filename>` - lint a source file. See [Linter mode](#linter-mode) for more details.

`joker -` - execute a script on standard input (os.Stdin).

## Documentation

[Standard library reference](https://candid82.github.io/joker/)

[Joker slack channel](https://clojurians.slack.com/messages/C9VURUUNL/)

## Project goals
<commit_msg>Add a tiny section with some advice from PR feedback<commit_after><img src="https://user-images.githubusercontent.com/882970/48048842-a0224080-e151-11e8-8855-642cf5ef3fdd.png" width="117px"/>

[![CircleCI](https://circleci.com/gh/candid82/joker.svg?style=svg)](https://circleci.com/gh/candid82/joker)

Joker is a small Clojure interpreter and linter written in Go.

## Installation

On macOS, the easiest way to install Joker is via Homebrew:

```
brew install candid82/brew/joker
```

The same command can be used on Linux if you use [Linuxbrew](http://linuxbrew.sh/).

If you use Arch Linux, there is [AUR package](https://aur.archlinux.org/packages/joker/).

If you use [Nix](https://nixos.org/nix/), then you can install Joker with

```
nix-env -i joker
```

On other platforms (or if you prefer manual installation), download a [precompiled binary](https://github.com/candid82/joker/releases) for your platform and put it on your PATH.

You can also [build](#building) Joker from the source code.

## Usage

`joker` - launch REPL

`joker <filename>` - execute a script. Joker uses `.joke` filename extension. For example: `joker foo.joke`.

`joker -e <expression>` - execute an expression. For example: `joker -e '(println "Hello, world!")'`

`joker --lint <filename>` - lint a source file. See [Linter mode](#linter-mode) for more details.

`joker -` - execute a script on standard input (os.Stdin).

## Documentation

[Standard library reference](https://candid82.github.io/joker/)

[Joker slack channel](https://clojurians.slack.com/messages/C9VURUUNL/)

## Coding Guidelines

* Dashes (`-`) in namespaces are not converted to underscores (`_`) by Joker, so (unlike with Clojure) there's no need to name `.joke` files accordingly.
* Avoid `:refer :all` and the `use` function, as that reduces the effectiveness of linting.

## Project goals

{'fraction_non_alphanumeric': 0.13716814159292035, 'fraction_numerical': 0.029498525073746312, 'mean_word_length': 4.4256, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 16, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '583282', 'n_tokens_mistral': 1221, 'n_tokens_neox': 1117, 'n_words': 359}