
# dependencies
mime = require 'mime'

# template
module.exports = (_) ->

  head ->

    if _.title
      title -> _.title

    # character set
    meta charset: 'utf-8'

    # viewport
    meta {
      name: 'viewport'
      content: 'width=device-width,initial-scale=1,maximum-scale=5'
    }

    # robots.txt
    if _.robots
      meta name: 'robots', content: _.robots

    # sitemap.xml
    if _.sitemap
      link rel: 'sitemap', type: 'application/xml', title: 'Sitemap', href: _.sitemap

    # dublin.rdf
    if _.dublin
      link rel: 'meta', type: 'application/rdf+xml', title: 'Dublin', href: _.dublin

    # search.xml
    if _.opensearch
      if _.site_name
        link rel: 'search', type: 'application/opensearchdescription+xml', title: _.site_name, href: _.opensearch
      else
        link rel: 'search', type: 'application/opensearchdescription+xml', href: _.opensearch

    # manifest
    if _.manifest
      link rel: "manifest", href: _.manifest

    # application name
    if _.site_name
      meta name: 'application-name', content: _.site_name

    # favicon
    if _.icon
      link rel: 'shortcut icon', href: _.icon, type: mime.lookup _.icon
      link rel: "icon", href: _.icon, type: mime.lookup _.icon
      meta name: "msapplication-TileImage", content: _.icon

    # apple icons
    if _.icon_144
      link rel: "apple-touch-icon-precomposed", sizes: "144x144", href: _.icon_144
    if _.icon_114
      link rel: "apple-touch-icon-precomposed", sizes: "114x114", href: _.icon_114
    if _.icon_72
      link rel: "apple-touch-icon-precomposed", sizes: "72x72", href: _.icon_72
    if _.icon_57
      link rel: "apple-touch-icon-precomposed", href: _.icon_57

    # description
    if _.description
      meta name: 'description', content: _.description
      if _.description.length > 160
        console.log 'WARNING: meta description is too long. keep it under 160 characters.'

    # keywords
    if _.keywords
      meta name: 'keywords', content: _.keywords

    # google
    link rel: 'alternate', hreflang: 'en', href: _.url
    # link rel: 'alternate', hreflang: 'es', href: _.url
    # link rel: 'alternate', hreflang: 'fr', href: _.url
    # link rel: 'alternate', hreflang: 'zh', href: _.url

    ###
    # facebook og tags
    ###
    if _.locale
      meta property: 'og:locale', content: _.locale
    if _.site_name
      meta property: 'og:site_name', content: _.site_name
    if _.title
      meta property: 'og:type', content: 'website'
      meta property: 'og:title', content: _.title
    if _.image
      meta property: 'og:image', content: _.image
      meta property: 'og:image:type', content: mime.lookup _.image
    if _.image_height
      meta property: 'og:image:height', content: _.image_height
    if _.image_width
      meta property: 'og:image:width', content: _.image_width
    if _.image and _.description
      meta property: 'og:image:alt', content: _.description
    if _.description
      meta property: 'og:description', content: _.description
    if _.url
      meta property: 'og:url', content: _.url

    ###
    # twitter card tags
    ###
    if _.title
      meta property: 'twitter:card', content: 'summary_large_image'
      meta property: 'twitter:title', content: _.title
    if _.image
      meta property: 'twitter:image:src', content: _.image
    if _.description
      meta property: 'twitter:description', content: _.description
    if _.image and _.description
      meta property: 'twitter:image:alt', content: _.description

    # ios
    meta name: 'apple-mobile-web-app-capable', content: 'yes'

    # custom css
    if _.css
      if _.css.match('http') or _.css[0] is '/'
        link href: _.css, rel: 'stylesheet', type: 'text/css'
      else
        style _.css

    ###
    # JSON-LD
    # types: [Book, Recipe]
    ###
    script type: "application/ld+json"
