///|
/// Heading rendering style.
///
/// - `Atx`: `## Heading` (default)
/// - `Setext`: underline style for h1/h2, e.g. `Heading\n-------`
pub(all) enum HeadingStyle {
  Atx
  Setext
} derive(Eq, Debug)

///|
/// Controls the escaping of characters that have a special meaning in markdown.
///
/// - `Smart` (default): only escape a character when it would otherwise be
///   parsed as markdown syntax in its surrounding context.
/// - `Disabled`: never escape.
pub(all) enum EscapeMode {
  Smart
  Disabled
} derive(Eq, Debug)

///|
/// Controls how links with an empty href / empty content are rendered.
///
/// - `Render`: still render as a link, e.g. `[content]()` (default)
/// - `Skip`: fall back to rendering the content without link syntax
pub(all) enum LinkBehavior {
  Render
  Skip
} derive(Eq, Debug)

///|
/// Error raised by `convert` / `convert_dom`.
pub(all) suberror ConvertError {
  /// An option value is invalid (e.g. an unsupported delimiter).
  InvalidConfig(String)
  /// The HTML input could not be parsed.
  ParseFailed(String)
} derive(Debug)