From 362b830f3ed5a59c2faa32a32d454316fc4d326b Mon Sep 17 00:00:00 2001 From: SukkaW Date: Mon, 30 Mar 2020 22:51:08 +0800 Subject: [PATCH] perf(meta_generator): avoid unnecessary check --- .../filter/after_render/meta_generator.js | 17 ++++++++++++----- test/scripts/filters/meta_generator.js | 9 ++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/plugins/filter/after_render/meta_generator.js b/lib/plugins/filter/after_render/meta_generator.js index 516cdbba59..1a346697c6 100644 --- a/lib/plugins/filter/after_render/meta_generator.js +++ b/lib/plugins/filter/after_render/meta_generator.js @@ -1,13 +1,20 @@ 'use strict'; +let NEED_INJECT = true; +let META_GENERATOR_TAG; + function hexoMetaGeneratorInject(data) { - const { config } = this; - if (!config.meta_generator - || data.match(/]+[\s]+)name=['|"]?generator['|"]?/i)) return; + if (!NEED_INJECT) return; + + if (!this.config.meta_generator + || data.match(/]+[\s]+)name=['|"]?generator['|"]?/i)) { + NEED_INJECT = false; + return; + } - const hexoGeneratorTag = ``; + META_GENERATOR_TAG = META_GENERATOR_TAG || ``; - return data.replace(/(?!<\/head>).+?<\/head>/s, str => str.replace('', `${hexoGeneratorTag}`)); + return data.replace(/(?!<\/head>).+?<\/head>/s, str => str.replace('', `${META_GENERATOR_TAG}`)); } module.exports = hexoMetaGeneratorInject; diff --git a/test/scripts/filters/meta_generator.js b/test/scripts/filters/meta_generator.js index 414d365862..5df65a86c4 100644 --- a/test/scripts/filters/meta_generator.js +++ b/test/scripts/filters/meta_generator.js @@ -1,11 +1,18 @@ 'use strict'; +const decache = require('decache'); + describe('Meta Generator', () => { const Hexo = require('../../../lib/hexo'); const hexo = new Hexo(); - const metaGenerator = require('../../../lib/plugins/filter/after_render/meta_generator').bind(hexo); + let metaGenerator; const cheerio = require('cheerio'); + beforeEach(() => { + decache('../../../lib/plugins/filter/after_render/meta_generator'); + metaGenerator = require('../../../lib/plugins/filter/after_render/meta_generator').bind(hexo); + }); + it('default', () => { const content = ''; const result = metaGenerator(content);