mixin annotations(type, token, parent)
  if Array.isArray(token)
    each item in token
      +annotations(type, item, parent)
  else
    - var elem = type === 'header' ? 'header' : 'section'
    - var cls = 'c-token c-token--' + type
    
    if token.access
      - cls += ' is-' + token.access
    
    #{elem}(class="#{cls}")
      each data, name in token
        if name === 'inline'
          - var prev = _.clone(token)
          - delete prev.inline
          +annotations('inline', token.inline, prev)
        else
          +annotation(name, data, token, parent)

mixin annotation(name, data, token, parent)
  if name !== 'blockinfo' && name !== 'inline'
    - var blockinfo = JSON.stringify((token || {}).blockinfo || {})
    - var token_name = ((token || {}).name || '').toLowerCase()
    - var id = name + '-' + global.base_x.encode(token_name + blockinfo)
    != partial('../_annotations/' + name, { data: data, token: token || {}, parent: parent || {}, id: id })

article.docs-o-container
  if header && Object.keys(header).length
    +annotations('header', header)
  
  if body && body.length
    +annotations('body', body)
