CHANGELOG.md

# Changelog

## 0.2.0 (2024-10-09)

### Breaking changes
  * `to_html/1` and `to_html/2` now returns `{:ok, String.t()}` or `{:error, %MDEx.DecodeError{}}` instead of just `String.t()`.
    The reason is because now they may accept an AST as input which may cause decoding errors.
    Replace with `to_html!/1` and `to_html!/2` to have the same behavior as before.

### Fixes
  * Fix misspelling of `thematic` causing render errors - [#73](https://github.com/leandrocp/mdex/pull/73) by @jonklein

### Enhancements
  * Added `to_commonmark/1` and `to_commonmark/2` to convert an AST to CommonMark - [#70](https://github.com/leandrocp/mdex/pull/70) by @jonklein
  * Added `~M` sigil (no interpolation) with `AST` and `MD` modifiers (defaults to HTML without the modifier)
  * Added `~m` sigil (supports interpolation and escaping) with `AST` and `MD` modifiers (defaults to HTML without the modifier)
  * Added `parse_document/1` and `parse_document/2` to parse Markdown to AST
  * Added low-level functions `traverse_and_update/2` and `attribute/2` to manipulate AST
  * Added `to_html!/1` and `to_html!/2`, the raising version of `to_html/1` and `to_html/2` (similar to previous `to_html/1` and `to_html/2`)
  * Changed `to_html/1` and `to_html/2` to accept AST as input
  * Added examples directory to show how to use the new APIs

## 0.1.18 (2024-07-13)

### Enhancements
  * Bump comrak from [0.24.1 to 0.26.0](https://github.com/kivikakk/comrak/blob/9f4d391abe2857031f993c4cdddf1ebba7cdbc7d/changelog.txt#L1-L60)
  * Add new `extension` options: underline, spoiler, greentext
  * Add new `render` options: experimental_inline_sourcepos, escaped_char_spans, ignore_setext, ignore_empty_links, gfm_quirks, prefer_fenced

## 0.1.17 (2024-06-19)

### Enhancements
  * Relax minimum required Elixir version to 1.13
  * Bump comrak to 0.24.1
  * Bump ammonia to 4.0
  * Add new `extension` options: multiline_block_quotes, math_dollars, math_code, shortcodes, wikilinks_title_after_pipe, wikilinks_title_before_pipe
  * Add new `render` option: escaped_char_spans
  * Add new option `features.syntax_highlight_inline_style` to control whether to embed inline styles or not. Default is `true`.

### Changed
  * Build binaries on MacOS 12

## 0.1.16 (2024-04-29)

### Enhancements
  * Added language `objc` to syntax highlighter.

## 0.1.15 (2024-04-16)

### Enhancements
  * Update rustler to `~> 0.32`
  * Update rustler_precompiled `~> 0.7`
  * Added legacy targets

### Backwards incompatible changes
  * Minimum required Elixir version is now 1.14
  * Removed target `arm-unknown-linux-gnueabihf`
  * Removed target `riscv64gc-unknown-linux-gnu`

## 0.1.14 (2024-04-11)

### Backwards incompatible changes
  * [Syntax Highlight] Renamed parent `<pre>` class from `autumn-highlight` to `autumn-hl`
  * [Syntax Highlight] Added prefix `ahl-` to each scope class

### Enhancements
  * Update autumn to 0.2.2 (#33)
  * Update comrak to 0.20.0 (#27) - @supernintendo

## 0.1.13 (2023-11-20)

### Enhancements
  * Update autumn themes to add base16-tomorrow and base16-tomorrow-night - @paradox460

## 0.1.12 (2023-11-06)

### Fixes
  * Comrak docs links

### Enhancements
  * Add languages: jsx, tsx, vim
  * Bump injket v0.10.2

## 0.1.11 (2023-10-25)

### Fixes
  * Syntax highlighting - remove newlines to avoid formatting incorrectly

## 0.1.10 (2023-10-24)

### Enhancements
  * Add translate="no" attr in `<code>` tag

### Fixes
  * Fix Javascript syntax highlight
  * Fix Typescript syntax highlight

## 0.1.9 (2023-09-29)

### Enhancements
  * Add logo
  * Add icon

## 0.1.8 (2023-09-29)

### Enhancements
  * Fallback to plain text on invalid language
  * Syntax highlight injections
  * Add samples

## 0.1.7 (2023-09-27)

### Enhancements
  * Syntax highlight code using tree-sitter and helix editor themes. Use https://github.com/leandrocp/autumn/tree/main/native/inkjet_nif under the hood.

## 0.1.6 (2023-09-14)

### Enhancements
  * Load extra themes and syntaxes with https://crates.io/crates/two-face

## 0.1.5 (2023-09-12)

### Enhancements
  * Sanitize output with https://crates.io/crates/ammonia
  * Syntax Highlight with https://crates.io/crates/syntect

## 0.1.4 (2023-09-11)

### Fixes
  * Compile on Ubuntu 20 to fix libc version mismatch

## 0.1.3 (2023-09-11)

### Enhancements
  * NIF version 2.15

## 0.1.2 (2023-09-11)

### Enhancements
  * Guard markdown arg

### Fixes
  * specs

## 0.1.1 (2023-09-11)

### Enhancements
  * Update Rust to edition 2021
  * Add `@spec` to public functions

## 0.1.0 (2023-09-11)

### Enhancements
  * `MDEx.to_html/1` to convert Markdown to HTML using default options.
  * `MDEx.to_html/2` to convert Markdown to HTML using custom options.