(doctest_block) @python

;; Directives with nested content without arguments nor options
((directive
   name: (type) @_type
   body: (body) @rst)
 (#any-of?
  @_type
  "attention" "caution" "danger" "error" "hint" "important" "note" "tip" "warning" "admonition"
  "line-block" "parsed-literal" "epigraph" "highlights" "pull-quote" "compound"
  "header" "footer"
  "meta"
  "replace"))

;; Directives with nested content without arguments, but with options
((directive
   name: (type) @_type
   body: (body (options) (content) @rst))
 (#any-of?
  @_type
  "attention" "caution" "danger" "error" "hint" "important" "note" "tip" "warning" "admonition"
  "line-block" "parsed-literal" "compound"))

;; Directives with nested content with arguments and options
((directive
   name: (type) @_type
   body: (body (content) @rst))
 (#any-of?
  @_type
  "figure"
  "topic" "sidebar" "container"
  "table" "list-table"
  "class" "role" "restructuredtext-test-directive"))

;; Special directives
((directive
   name: (type) @_type
   body: (body (arguments) @language (content) @content))
 (#any-of? @_type "code" "code-block"))

((directive
   name: (type) @_type
   body: (body (arguments) @language (content) @content))
 (#eq? @_type "raw"))

((directive
   name: (type) @_type
   body: (body (content) @latex))
 (#eq? @_type "math"))

; TODO: re-add when a parser for csv is added.
; ((directive
;    name: (type) @_type
;    body: (body (content) @csv))
;  (#eq? @_type "csv-table"))

;; Special roles - prefix

((interpreted_text
  (role) @_role
  "interpreted_text" @latex)
 (#eq? @_role ":math:"))

;; Special roles - suffix

((interpreted_text
  "interpreted_text" @latex
  (role) @_role)
 (#eq? @_role ":math:"))

(comment) @comment