Skip to content
This repository was archived by the owner on Jan 27, 2021. It is now read-only.

Commit 5e39c6a

Browse files
committed
style: remove magic numbers
1 parent 6668cd4 commit 5e39c6a

File tree

3 files changed

+68
-86
lines changed

3 files changed

+68
-86
lines changed

.eslintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ module.exports = {
6969
'no-magic-numbers': [
7070
'warn',
7171
{
72-
'ignore': [0, 1, 2, 3, 4],
72+
'ignore': [0],
7373
},
7474
],
7575
'no-multi-spaces': [

index.js

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -39,76 +39,75 @@ let config = _.defaultsDeep({}, hexo.config.live2d, hexo.theme.config.live2d, de
3939
function getScriptURL (scriptFrom) {
4040
switch (scriptFrom) {
4141
case 'local': {
42-
// Is local
43-
// Use local(1)
42+
// Is local(1)
43+
// Use local
4444
const scriptGenerators = buildGeneratorsFromManifest(manifest, path.dirname(mainfestPath), onSiteJsPath);
4545
const useHash = getFileMD5(path.resolve(path.dirname(mainfestPath), coreScriptName));
4646
generators.push(...scriptGenerators);
4747
return `${url.resolve(onSiteJsPath, coreScriptName)}?${useHash}`;
4848
}
4949
case 'jsdelivr':
50-
// Is jsdelivr online CDN
51-
// Use jsdelivr(2)
50+
// Is jsdelivr online CDN(2)
51+
// Use jsdelivr
5252
return `https://cdn.jsdelivr.net/npm/live2d-widget@${coreJsDepVer}/lib/${coreScriptName}`;
5353
case 'unpkg':
54-
// Is unpkg online CDN
55-
// Use unpkg(3)
54+
// Is unpkg online CDN(3)
55+
// Use unpkg
5656
return `https://unpkg.com/live2d-widget@${coreJsDepVer}/lib/${coreScriptName}`;
5757
default:
58-
// Is custom
59-
// Use custom(4)
58+
// Is custom(4)
59+
// Use custom
6060
return scriptFrom;
6161
}
6262
}
6363

6464
if (config.enable) {
6565
_.unset(config, 'enable');
66-
if (config.model.use) {
67-
let modelPath;
68-
let type;
69-
const modelInHexoBaseDir = [
70-
path.resolve(hexo.base_dir, './live2d_models/', config.model.use),
71-
path.resolve(hexo.base_dir, config.model.use),
72-
]
73-
.reduce((p, value, index) => {
74-
if (!p && fs.existsSync(value)) {
75-
type = index + 2;
76-
return value;
77-
}
78-
return p;
79-
}, undefined);
80-
if(type === undefined) {
81-
if(getNodeModulePath(config.model.use) !== '') {
82-
type = 1;
83-
modelPath = getNodeModulePath(config.model.use);
66+
if(config.model.use) {
67+
let modelJsonUrl;
68+
let tryPath = path.resolve(hexo.base_dir, './live2d_models/', config.model.use);
69+
if(fs.existsSync(tryPath)) {
70+
// Is in live2d_models(2)
71+
// LoadModelFrom
72+
const {
73+
modelGenerators,
74+
modelJsonUrl: pkgModelJsonUrl,
75+
} = loadModelFrom(tryPath, onSiteModelPath);
76+
modelJsonUrl = pkgModelJsonUrl;
77+
generators.push(...modelGenerators);
78+
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from live2d_models folder(2), '${url.pathname(modelJsonUrl)}' from '${tryPath}'`);
79+
}else{
80+
tryPath = path.resolve(hexo.base_dir, config.model.use);
81+
if(fs.existsSync(tryPath)) {
82+
// Is in hexo base releated path(3)
83+
// LoadModelFrom
84+
const {
85+
modelGenerators,
86+
modelJsonUrl: pkgModelJsonUrl,
87+
} = loadModelFrom(tryPath, onSiteModelPath);
88+
modelJsonUrl = pkgModelJsonUrl;
89+
generators.push(...modelGenerators);
90+
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from hexo base releated path(3), '${url.pathname(modelJsonUrl)}' from '${tryPath}'`);
91+
}else if(getNodeModulePath(config.model.use) !== '') {
92+
// Is npm-module(1)
93+
// Convert path to assets folder
94+
// LoadModelFrom
95+
const packageJsonPath = path.resolve(getNodeModulePath(config.model.use), 'package.json');
96+
const packageJsonObj = require(packageJsonPath); // eslint-disable-line global-require
97+
const assetsDir = path.resolve(packageJsonPath, './assets/');
98+
const {
99+
modelGenerators,
100+
modelJsonUrl: pkgModelJsonUrl,
101+
} = loadModelFrom(assetsDir, onSiteModelPath);
102+
modelJsonUrl = pkgModelJsonUrl;
103+
generators.push(...modelGenerators);
104+
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from npm-module(1), ${packageJsonObj.name}@${packageJsonObj.version} from '${assetsDir}'`);
84105
}else{
85-
type = 4;
86-
modelPath = config.model.use;
106+
// Is custom(4)
107+
// Use custom
108+
modelJsonUrl = config.model.use;
109+
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded Model from custom(4), at '${modelJsonUrl}'`);
87110
}
88-
}else{
89-
modelPath = modelInHexoBaseDir;
90-
}
91-
const {
92-
modelGenerators,
93-
modelJsonUrl,
94-
packageJsonObj,
95-
} = loadModelFrom(modelPath, onSiteModelPath, type);
96-
generators.push(...modelGenerators);
97-
config = _.set(config, 'model.jsonPath', modelJsonUrl);
98-
switch(type) {
99-
case 1:
100-
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from npm-module(1), ${packageJsonObj.name}@${packageJsonObj.version} from '${modelPath}'`);
101-
break;
102-
case 2:
103-
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from live2d_models folder(2), '${url.pathname(modelJsonUrl)}' from '${modelPath}'`);
104-
break;
105-
case 3:
106-
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded model from hexo base folder(3), '${url.pathname(modelJsonUrl)}' from '${modelPath}'`);
107-
break;
108-
case 4:
109-
console.log(`${colors.green('hexo-helper-live2d'.toUpperCase())}: Loaded Model from online(4), at '${modelJsonUrl}'`);
110-
break;
111-
// No default
112111
}
113112
}
114113

@@ -126,7 +125,7 @@ if (config.enable) {
126125
// https://github.com/Troy-Yang/hexo-lazyload-image/blob/master/lib/addscripts.js
127126
hexo.extend.filter.register('after_render:html', function HTMLInjector (htmlContent) {
128127
const scriptFrom = config.scriptFrom;
129-
_.unset(config, 'scriptFrom');
128+
config = _.unset(config, 'scriptFrom');
130129
const scriptToInject = `L2Dwidget.init(${JSON.stringify(config)});`;
131130
const contentToInject = `<script src="${getScriptURL(scriptFrom)}"></script><script>${scriptToInject}</script>`;
132131
if (/<\/body>/gi.test(htmlContent)) {

lib/loadModelFrom.js

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,31 @@ const path = require('path');
99
const url = require('url');
1010

1111
/**
12-
* @typedef {Object} PackageInfo
13-
* @property {Array} modelGenerators The generator-use-array for Hexo
14-
* @property {String} modelJsonUrl The model.json file path
15-
* @property {Object or Undefined} packageJsonObj The object of provied packageinfo(if don't have, undefined)
12+
* @typedef {Object} ModelPackageInfo
13+
* @property {Array} modelGenerators The generator-use-array for Hexo
14+
* @property {String} modelJsonUrl The model.json file path
1615
*/
1716

1817
/**
1918
* Resolve model packages according to provided infos
20-
* @param {String} modelPaths Search paths for the model folder
19+
* @param {String} assetsDir The path of model
2120
* @param {String} rootUrl The target path(need to be relative)
22-
* @return {PackageInfo} The package info resolved
21+
* @return {ModelPackageInfo} The package info resolved
2322
*/
2423

25-
module.exports = function loadModelFrom (modelPaths, rootUrl, type) {
26-
const packageJsonPath = path.resolve(modelPaths, 'package.json');
27-
let assetsDir;
28-
let modelGenerators;
29-
let modelJsonUrl;
30-
let packageJsonObj;
31-
if(type === 1) {
32-
packageJsonObj = require(packageJsonPath); // eslint-disable-line
33-
assetsDir = path.resolve(modelPaths, './assets/'); // Convert 1 to 2.5
34-
}else if(type === 4) {
35-
modelJsonUrl = modelPaths;
36-
}else{
37-
assetsDir = modelPaths;
38-
}
39-
if(type !== 4) {
40-
const modelFiles = listFiles(assetsDir);
41-
modelGenerators = modelFiles.map((file) =>
42-
buildGenerator(file, url.resolve(rootUrl, path.relative(assetsDir, file))));
43-
modelJsonUrl = modelGenerators.reduce((p, generator) => {
44-
if (!p && generator.path.endsWith('.model.json')) {
45-
return generator.path;
46-
}
47-
return p;
48-
}, undefined); // 1, 2, 3 Done.
49-
}
24+
module.exports = function loadModelFrom (assetsDir, rootUrl) {
25+
const modelFiles = listFiles(assetsDir);
26+
const modelGenerators = modelFiles.map((file) =>
27+
buildGenerator(file, url.resolve(rootUrl, path.relative(assetsDir, file))));
28+
const modelJsonUrl = modelGenerators.reduce((p, generator) => {
29+
if (!p && generator.path.endsWith('.model.json')) {
30+
return generator.path;
31+
}
32+
return p;
33+
}, undefined);
5034

5135
return {
5236
modelGenerators,
5337
modelJsonUrl,
54-
packageJsonObj,
5538
};
5639
};

0 commit comments

Comments
 (0)