| 'use strict' |
| var cheerio = require('cheerio'); |
| |
| hexo.extend.helper.register('url_for_lang', function(path){ |
| var root = this.config.root || '' |
| var langsArr = this.config.language |
| var lang = this.page.lang |
| var isDefault = lang === langsArr[0] |
| var url = this.url_for(path) |
| |
| if (!isDefault && url.indexOf(lang) === -1) { |
| url = root + lang + url.replace(root, '/') |
| } |
| return url |
| }) |
| |
| hexo.extend.helper.register('page_anchor', function(str){ |
| var $ = cheerio.load(str, {decodeEntities: true}); |
| var headings = $('h1, h2, h3, h4, h5, h6'); |
| |
| if (!headings.length) return str; |
| |
| headings.each(function(){ |
| $(this).addClass('article-heading') |
| }); |
| |
| return $.html(); |
| }); |
| |
| hexo.extend.helper.register('pick_lang', function(lang){ |
| var root = this.config.root || '' |
| var langsArr = this.config.language |
| var currentLang = this.page.lang |
| var path = this.page.path |
| var url = '' |
| |
| if (path.split('/')[0] === currentLang) { |
| path = path.substring(currentLang.length) |
| } |
| |
| if (path[0] !== '/') { |
| path = '/' + path |
| } |
| |
| if (lang === langsArr[0] || lang === '') { |
| url = root + path.substring(1) |
| } else { |
| url = root + lang + path |
| } |
| |
| return url |
| }) |