From 68654c29856f363606e4ffe9e78eb55a99d7816e Mon Sep 17 00:00:00 2001 From: Mimi <1119186082@qq.com> Date: Sun, 9 Aug 2020 22:31:29 +0800 Subject: [PATCH] Create utils.js --- scripts/events/lib/highlight.js | 34 +--------------- scripts/events/lib/injects-point.js | 19 --------- scripts/events/lib/injects.js | 2 +- scripts/events/lib/utils.js | 60 +++++++++++++++++++++++++++++ scripts/filters/default-injects.js | 2 +- 5 files changed, 63 insertions(+), 54 deletions(-) delete mode 100644 scripts/events/lib/injects-point.js create mode 100644 scripts/events/lib/utils.js diff --git a/scripts/events/lib/highlight.js b/scripts/events/lib/highlight.js index c497b86..03564a0 100644 --- a/scripts/events/lib/highlight.js +++ b/scripts/events/lib/highlight.js @@ -1,39 +1,7 @@ 'use strict'; const fs = require('fs'); -const path = require('path'); - -function resolve(name, file) { - let dir; - try { - dir = path.dirname(require.resolve(`${name}/package.json`)); - } catch (error) { - return ''; - } - return `${dir}/${file}`; -} - -function highlightTheme(name) { - const file = resolve('highlight.js', `styles/${name}.css`); - const css = fs.readFileSync(file).toString(); - let rule = ''; - let background = ''; - let foreground = ''; - css.replace(/\.hljs(\s+|,[^{]+)\{(.*?)\}/sg, (match, $1, content) => { - rule += content; - return match; - }); - rule.split('\n').forEach(line => { - if (line.includes('background:')) background = line.split('background:')[1]; - else if (line.includes('background-color:')) background = line.split('background-color:')[1]; - else if (line.includes('color:')) foreground = line.split('color:')[1]; - }); - return { - file, - background, - foreground - }; -} +const { resolve, highlightTheme } = require('./utils'); function prismTheme(name) { let file = resolve('prismjs', `themes/${name}.css`); diff --git a/scripts/events/lib/injects-point.js b/scripts/events/lib/injects-point.js deleted file mode 100644 index af2b2ab..0000000 --- a/scripts/events/lib/injects-point.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -module.exports = { - views: [ - 'head', - 'header', - 'sidebar', - 'postMeta', - 'postBodyEnd', - 'footer', - 'bodyEnd', - 'comment' - ], - styles: [ - 'variable', - 'mixin', - 'style' - ] -}; diff --git a/scripts/events/lib/injects.js b/scripts/events/lib/injects.js index d588744..f3d7977 100644 --- a/scripts/events/lib/injects.js +++ b/scripts/events/lib/injects.js @@ -2,7 +2,7 @@ const fs = require('fs'); const path = require('path'); -const points = require('./injects-point'); +const { points } = require('./utils'); const defaultExtname = '.njk'; // Defining stylus types diff --git a/scripts/events/lib/utils.js b/scripts/events/lib/utils.js new file mode 100644 index 0000000..e34613c --- /dev/null +++ b/scripts/events/lib/utils.js @@ -0,0 +1,60 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +function resolve(name, file = '') { + let dir; + try { + dir = path.dirname(require.resolve(`${name}/package.json`)); + } catch (error) { + return ''; + } + return `${dir}/${file}`; +} + +function highlightTheme(name) { + const file = resolve('highlight.js', `styles/${name}.css`); + const css = fs.readFileSync(file).toString(); + let rule = ''; + let background = ''; + let foreground = ''; + css.replace(/\.hljs(\s+|,[^{]+)\{(.*?)\}/sg, (match, $1, content) => { + rule += content; + return match; + }); + rule.split('\n').forEach(line => { + if (line.includes('background:')) background = line.split('background:')[1]; + else if (line.includes('background-color:')) background = line.split('background-color:')[1]; + else if (line.includes('color:')) foreground = line.split('color:')[1]; + }); + return { + file, + background, + foreground + }; +} + +const points = { + views: [ + 'head', + 'header', + 'sidebar', + 'postMeta', + 'postBodyEnd', + 'footer', + 'bodyEnd', + 'comment' + ], + styles: [ + 'variable', + 'mixin', + 'style' + ] +}; + +module.exports = { + resolve, + highlightTheme, + points +}; diff --git a/scripts/filters/default-injects.js b/scripts/filters/default-injects.js index 22bd7ed..14fc0ad 100644 --- a/scripts/filters/default-injects.js +++ b/scripts/filters/default-injects.js @@ -2,7 +2,7 @@ 'use strict'; -const points = require('../events/lib/injects-point'); +const { points } = require('../events/lib/utils'); hexo.extend.filter.register('theme_inject', injects => { const filePath = hexo.theme.config.custom_file_path;