Skip to content

TheFireBlast/irojs

Repository files navigation

IroJS

A grammar generator for syntax highlighters.


This project aims to be a superset of Chris Ainsley's Iro, a development tool designed to simplify the creation of syntax highlighters.

Installation

npm install irojs

Usage

From the command line

Basic syntax:

iro compile <source> --targets=<targetlist>

Available targets:

  • textmate or tm
    • textmate.xml (default)
    • textmate.json
  • ace
    • ace.js (default)
    • ace.json
  • ast — outputs the rion ast
  • all or * — matches all targets
  • none — only checks grammar

Use <target>.* to match all extensions.

Example:

iro compile mygrammar.iro --targets=textmate,ace -o out/

From code

Example:

import * as iro from "irojs";
// or
const iro = require("irojs");

const myGrammar = "...";

var result = iro.compile(myGrammar, { targets: ["textmate"] });

console.log(result.textmate);

Language Documentation

The documentation is still a WIP. In the meanwhile, you can access the original docs at https://web.archive.org/web/20191007073218/https://eeyo.io/iro/documentation/index.html

Development

pnpm build → builds the package.

pnpm build:swc → compiles the typescript source.

pnpm build:rion → compiles the rion grammar.

pnpm build:type → generates the type definition files.

Roadmap

  • Online editor
  • VSCode extension (language server)
  • Styles to CSS
  • HighlightJS target
  • PrismJS target
  • CodeMirror target