text: var _ = require('lodash'),
      settingsCache = require('../../services/settings/cache');
  
  function getDescription(data, root, options) {
      var description = '',
          postSdDescription,
          context = root ? root.context : null,
          blogDescription = settingsCache.get('description');
  
      options = options ? options : {};
  
      // We only return meta_description if provided. Only exception is the Blog
      // description, which doesn't rely on meta_description.
      if (data.meta_description) {
          description = data.meta_description;
      } else if (_.includes(context, 'paged')) {
          description = '';
      } else if (_.includes(context, 'home')) {
          description = blogDescription;
      } else if (_.includes(context, 'author') && data.author) {
          // The usage of meta data fields for author is currently not implemented.
          // We do have meta_description and meta_title fields
          // in the users table, but there's no UI to populate those.
          description = data.author.meta_description || '';
      } else if (_.includes(context, 'tag') && data.tag) {
          description = data.tag.meta_description || '';
      } else if ((_.includes(context, 'post') || _.includes(context, 'page')) && data.post) {
          if (options && options.property) {
              postSdDescription = options.property + '_description';
              description = data.post[postSdDescription] || '';
          } else {
              description = data.post.meta_description || '';
          }
      }
  
      return (description || '').trim();
  }
  
  module.exports = getDescription;
  