Skip to content

moonbitlang/moonbit-markdown

Repository files navigation

MoonBit Markdown Linter

This is a Markdown linter for MoonBit. It gathers all MoonBit codes in Markdown, checks them using MoonBit's compiler, and reports any diagnostics.

Prerequisites

To use the MoonBit Markdown Linter, you need to install the MoonBit compiler.

Install

npm install -g @moonbit/markdown-linter

Usage

Check Syntax and Type Errors

Create a markdown file fib.md, write some MoonBit code in code block:

# Fibonacci

Calculate the nth Fibonacci number using recursion and pattern matching.

```moonbit
fn fib(n : Int) -> Int {
    match n {
        0 => 0
        1 => true // type error here
        _ => fib(n - 1) + fib(n - 2)
    }
}
```

Check it by MoonBit markdown linter.

$ mdlint fib.md
fib.md:6:4-6:7 Warning 001: Unused function 'fib'
fib.md:9:14-9:18 Expr Type Mismatch
        has type : Bool
        wanted   : Int

Run Inline Test or Evaluate Expression

In file identity.md:

# Identity

```moonbit
fn id[T : Eq](x : T) -> T {
  x
}
```

You can also write expression directly.

```moonbit expr
id(5)
```

Test function `id`.

```moonbit
test "id" {
    if id(5) != 5 { return Result::Err("test failed") }
}
```

Run test and evaluate the expression by mdlint:

$ mdlint identity.md
5
running 1 tests in package identity
test identity::id ... ok

test result: 1 passed; 0 failed

Disable check

You can also disable checking for some code block by sepcifying no-check.

```moonbit no-check
// some pseudo code
fn id(x : T) -> T
fn succ(x : T) -> T
```

Releases

No releases published

Packages

No packages published