// # Meta Description Helper
// Usage: `{{meta_description}}`
//
// Page description used for sharing and SEO
//
// We use the name meta_description to match the helper for consistency:
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers

var _           = require('lodash'),
    config      = require('../config'),
    filters     = require('../filters'),
    meta_description;

meta_description = function (options) {
    options = options || {};

    var context = options.data.root.context,
        description;

    if (this.meta_description) {
        description = this.meta_description;  // E.g. in {{#foreach}}
    } else if (_.contains(context, 'paged')) {
        description = '';
    } else if (_.contains(context, 'home')) {
        description = config.theme.description;
    } else if (_.contains(context, 'author') && this.author) {
        description = this.author.bio;
    } else if (_.contains(context, 'tag') && this.tag) {
        description = this.tag.meta_description;
    } else if ((_.contains(context, 'post') || _.contains(context, 'page')) && this.post) {
        description = this.post.meta_description;
    }

    return filters.doFilter('meta_description', description).then(function (description) {
        description = description || '';
        return description.trim();
    });
};

module.exports = meta_description;