Development Setup

Prerequisites

  • JVM 21 (Temurin recommended)
  • Mill 1.1.3 (included as ./mill wrapper in the repository)

Clone and Build

git clone https://github.com/Eleven19/ascribe.git
cd ascribe
./mill __.compile

The first build will download Mill and all dependencies automatically.

Project Modules

Module Mill path Description
Core parser + AST ascribe Parsley-based parser, AST types, lexer
ASG model ascribe.asg ASG node types, JSON codecs, visitor
Bridge ascribe.bridge AST-to-ASG converter
TCK runner ascribe.tck-runner Cucumber-based TCK test harness
Integration tests ascribe.itest Cucumber integration tests

Running Tests

Run all tests:

./mill __.test

Run tests for individual modules:

./mill ascribe.test              # Parser and AST tests
./mill ascribe.asg.test          # ASG codec and visitor tests
./mill ascribe.bridge.test       # Bridge converter tests

Running TCK Tests

The TCK runner uses test data from the AsciiDoc TCK submodule. First refresh the test data, then run:

./mill ascribe.tck-runner.tckRefresh
./mill ascribe.tck-runner.test

Code Formatting

Check formatting:

./mill __.checkFormat

Apply formatting:

./mill ascribe.reformat

Generating Documentation

Generate Scaladoc:

./mill ascribe.docs.docJar

The output will be in out/ascribe/docs/docJar.dest/javadoc.

Useful Mill Commands

./mill resolve __            # List all modules
./mill __.compile            # Compile everything
./mill __.test               # Run all tests
./mill show ascribe.ivyDeps  # Show dependencies for a module