# Copyright 2023 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# markdownlint-cli configuration file.
# https://github.com/igorshubovych/markdownlint-cli
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md

# Enable all markdownlint rules by default
default: true

# List formatting:
#
# 1. Lists must have a blank line before AND after the list.
# 2. Lists start aligned to the left (do not indent the top level list items).
#    NOTE: markdownlint currently checks indentation for unordered lists only.
#          Please manually verify that your ordered lists are not indented.
#          See https://github.com/DavidAnson/markdownlint/issues/138.
# 3. You may use one or zero blank lines between list items.
# 4. Nested list items should be indented 4 spaces.
# 5. In multiline list items, subsequent lines are indented to align with the
#    first character of the first line. This is not checked automatically, so
#    we're documenting this convention for consistency.
#
# Examples:
#
# * This is a list item that has multiple
#   lines and each line aligns with the text from the first line.
#     * This is a nested list, indented 4 spaces so it stands out.
ul-indent:
  indent: 4

# Allow inconsistent unordered list style so we can use both standard ULs
# and the non-standard task lists (`- [ ]` and `- [x]`)
ul-style: false

# Allow inconsistent code block style so we can use non-standard content tabs
# https://squidfunk.github.io/mkdocs-material/reference/content-tabs/#grouping-code-blocks
code-block-style: false

# Limit to 80-char line length, except for tables and code blocks
line-length:
  line_length: 80
  tables: false
  code_blocks: false

# Allow inline HTML
no-inline-html: false

# Allow dupe heading names only if they're not siblings
no-duplicate-heading:
  siblings_only: true

# Allow headers to end with punctuation for icons (e.g. `:icon-name:`)
no-trailing-punctuation: false

# Allow images w/o alt-text
no-alt-text: false

# Allow first line to be something other than a heading
# (we use this for date/author in blog posts)
first-line-heading: false

# Allow "invalid" link fragments, since markdownlint does not skip over icons
# For example, this triggers a lint error when it works just fine:
#     See the [Python](#python) section for details.
#     ### :simple-python: Python
link-fragments: false

# Link style:
#   Markdown links can normally provide link destinations elsewhere and
#   simply reference those destinations by a label, e.g.
#
#     <!-- Middle of file -->
#     [text][label]
#
#     <!-- Bottom of file -->
#     [label]: https://example.com/label
#
#   The 'reference-links-images' and 'link-image-reference-definitions' rules
#   can (respectively) help ensure that all referenced labels exist and that no
#   labels are orphaned. However, markdownlint does not recognize link
#   references in content tabs so it reports false positive errors for "unused"
#   link references. Because we can't reliably lint such references, we
#   recommend _not using that style of linking at all_.
#
#   There is no rule (yet?) to enforce inline links over reference links, but
#   https://github.com/DavidAnson/markdownlint/issues/40 may add one.
#
# TLDR: Add your links inline, as in [text](www.example.com).

# Blockquotes are used for alerts in some flavors of markdown.
# Allow weird formatting inside them.
# https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts
no-blanks-blockquote: false

# Allow tables to omit leading and trailing pipes
table-pipe-style: false

# Allow table rows to have irregular numbers of columns
# (markdownlint has false positives for `|` characters in code blocks)
table-column-count: false
