active-logic / howl

Symbolic notation engine
Other
6 stars 1 forks source link

⚠️ UNDER DEVELOPMENT 〜 HANDLE WITH CARE

Build Status codecov

Howl

Howl is a symbolic notation engine. Currently, Howl enables C# development using the Cosmo notation.

Image

C# conversion:

bool IsEscapedDoubleQuoteInString(string x, int i){
    if (suffix != "\"" || x[i] != '"') return false;
    bool esc = false;
    while (--i > 0){
        if (x[i] != '\\') break;
         else esc = !esc;
    }
    return esc;
}

This repository comprehends the core library and the command line interface (CLI). If you are looking for the Unity 3D integration, visit active-logic/uta.

Howl is free for personal use. Over one seat, enterprise users owe a cup of joe, payable on ko-fi.

Howl is fair source. Read the terms.

Who should use the CLI

The CLI is a work in progress. Feedback is desired, and improvements are inevitable.

Installation

.Net Core 3.1 is a prerequisite (Linux: will be installed if not present)

MacOS/Linux (you may be prompted for your admin/user password)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/active-logic/howl/master/setup)"

Running Docker? Start with apt-get update -qq && apt-get install -qq curl

Windows (run as administrator)

. { iwr -useb https://raw.githubusercontent.com/active-logic/howl/master/setup.ps1 } | iex

Getting started

Atom and the language-howl extension are used to edit Howl sources.

Typing Howl source is via snippets. Mostly, said snippets appear as you type regular C#; exceptions are listed here.

Exporting Howl sources

Assume a SRC directory containing *.howl source files. Then...

howl export SRC DST

...shall generate *.cs sources; directory structure is preserved; the content of DST (if any) is fully overwritten.

Building and running console applications

Generally, the CLI assumes the following structure:

PROJECT/
    src/
        Greetings.howl
        ...
    test/

While PROJECT may be anything you like, most commands assume src and test.

A greetings program:

○ Greetings{

    ∘ ┈ Main(ㄹ[] args){
        🐰 "Hi there";
    }

}

With Atom and language-howl, notations are availed via literate snippets (type class → get ).

A few commands you may run:

cd PROJECT
howl run .      # build and run a console application
howl test .     # run tests (via NUnit)
howl publish .  # generate an executable.

Want the full list? Try howl

Resources