const { Component } = require('inferno'); const MetaTags = require('../misc/meta'); const OpenGraph = require('../misc/open_graph'); const Plugins = require('./plugins'); function getPageTitle(page, siteTitle, helper) { let title = page.title; if (helper.is_archive()) { title = helper._p('common.archive', Infinity); if (helper.is_month()) { title += ': ' + page.year + '/' + page.month; } else if (helper.is_year()) { title += ': ' + page.year; } } else if (helper.is_category()) { title = helper._p('common.category', 1) + ': ' + page.category; } else if (helper.is_tag()) { title = helper._p('common.tag', 1) + ': ' + page.tag; } else if (helper.is_categories()) { title = helper._p('common.category', Infinity); } else if (helper.is_tags()) { title = helper._p('common.tag', Infinity); } return [title, siteTitle].filter(str => typeof str !== 'undefined' && str.trim() !== '').join(' - '); } module.exports = class extends Component { render() { const { env, site, config, helper, page } = this.props; const { url_for, cdn, iconcdn, fontcdn, is_post } = helper; const { url, meta_generator = true, meta = [], open_graph, canonical_url, rss, favicon, article, highlight } = config; const language = page.lang || page.language || config.language; let hlTheme, images; if (highlight && highlight.enable === false) { hlTheme = null; } else if (article && article.highlight && article.highlight.theme) { hlTheme = article.highlight.theme; } else { hlTheme = 'atom-one-light'; } if (typeof page.og_image === 'string') { images = [page.og_image]; } else if (helper.has_thumbnail(page)) { images = [helper.get_thumbnail(page)]; } else if (article && typeof article.og_image === 'string') { images = [article.og_image]; } else if (page.content && page.content.includes(']*src=['"]([^'"]+)([^>]*>)/gi; while ((img = imgPattern.exec(page.content)) !== null) { images.push(img[1]); } } else { images = [url_for('/images/og_image.png')]; } return {meta_generator ? : null} {getPageTitle(page, config.title, helper)} {open_graph ? : null} {canonical_url ? : null} {rss ? : null} {favicon ? : null} {hlTheme ? : null} ; } };