/** * Tabs * transplant from hexo-theme-next * modify by Jerry */ 'use strict' const postTabs = (args, content) => { const tabBlock = /\n([\w\W\s\S]*?)/g args = args.join(' ').split(',') const tabName = args[0] || 'tab' const tabActive = Number(args[1]) || 0 const matches = [] let match let tabId = 0 let tabNav = '' let tabContent = '' let noDefault = true while ((match = tabBlock.exec(content)) !== null) { matches.push(match[1], match[2]) } for (let i = 0; i < matches.length; i += 2) { const [tabCaption = '', tabIcon = ''] = matches[i].split('@') let postContent = matches[i + 1] postContent = hexo.render.renderSync({ text: postContent, engine: 'markdown' }).trim() tabId += 1 const caption = (tabCaption || tabIcon) ? tabCaption : `${tabName} ${tabId}` const iconHtml = tabIcon ? `` : '' const isActive = (tabActive > 0 && tabActive === tabId) || (tabActive === 0 && tabId === 1) ? ' active' : '' if (isActive) noDefault = false tabNav += `` tabContent += `