工作端代码转ES6

This commit is contained in:
TevinLi 2017-03-15 15:26:16 +08:00
parent 1f55d3b546
commit 10e83f71c9
11 changed files with 274 additions and 274 deletions

View File

@ -3,41 +3,41 @@
* @author Tevin
*/
var fs = require("fs");
var makeNav = require('./make-navigation');
let fs = require("fs");
let makeNav = require('./make-navigation');
module.exports = {
//复制文件
_copyWikiFile: function (from, to) {
var encoding = from.indexOf('png') >= 0 ? 'binary' : 'utf-8';
var file = fs.readFileSync(from, encoding);
let encoding = from.indexOf('png') >= 0 ? 'binary' : 'utf-8';
let file = fs.readFileSync(from, encoding);
fs.writeFileSync(to, file, encoding);
},
//创建amWiki需要的文件夹
_createWikiFolder: function (outputPath) {
if (!fs.existsSync(outputPath + 'amWiki/')) {
fs.mkdirSync(outputPath + 'amWiki/', 0777);
fs.mkdirSync(outputPath + 'amWiki/', 0o777);
}
if (!fs.existsSync(outputPath + 'amWiki/js/')) {
fs.mkdirSync(outputPath + 'amWiki/js/', 0777);
fs.mkdirSync(outputPath + 'amWiki/js/', 0o777);
}
if (!fs.existsSync(outputPath + 'amWiki/css')) {
fs.mkdirSync(outputPath + 'amWiki/css', 0777);
fs.mkdirSync(outputPath + 'amWiki/css', 0o777);
}
if (!fs.existsSync(outputPath + 'amWiki/images')) {
fs.mkdirSync(outputPath + 'amWiki/images', 0777);
fs.mkdirSync(outputPath + 'amWiki/images', 0o777);
}
if (!fs.existsSync(outputPath + 'library/')) {
fs.mkdirSync(outputPath + 'library/', 0777);
fs.mkdirSync(outputPath + 'library/', 0o777);
if (!fs.existsSync(outputPath + 'library/001-学习amWiki')) {
fs.mkdirSync(outputPath + 'library/001-学习amWiki', 0777);
fs.mkdirSync(outputPath + 'library/001-学习amWiki', 0o777);
}
if (!fs.existsSync(outputPath + 'library/001-学习amWiki/05-学习markdown')) {
fs.mkdirSync(outputPath + 'library/001-学习amWiki/05-学习markdown', 0777);
fs.mkdirSync(outputPath + 'library/001-学习amWiki/05-学习markdown', 0o777);
}
if (!fs.existsSync(outputPath + 'library/002-文档示范')) {
fs.mkdirSync(outputPath + 'library/002-文档示范', 0777);
fs.mkdirSync(outputPath + 'library/002-文档示范', 0o777);
}
return false;
}
@ -45,13 +45,13 @@ module.exports = {
},
//创建着色色系颜色变亮变暗不是rgb分别同时增加或减少一个值
_clacWikiColour: function (color) {
var colours = {};
let colours = {};
//修复16进制下的1位数
var lessThan = function (str) {
let lessThan = function (str) {
if (str <= 9) {
str = '0' + str;
} else {
var num = parseInt('0x' + str);
let num = parseInt('0x' + str);
if (num >= 10 && num <= 15) {
str = '0' + str;
}
@ -59,15 +59,15 @@ module.exports = {
return str;
};
//颜色合法检查
var atBinary16 = /^#([0-9a-fA-F]{3}){1,2}$/.test(color);
var atRGB = /^[rR][gG][bB]([aA])?\(\d{1,3},\d{1,3},\d{1,3}(,.*?)?\)$/.test(color);
var atList = /(blue|default)/.test(color);
let atBinary16 = /^#([0-9a-fA-F]{3}){1,2}$/.test(color);
let atRGB = /^[rR][gG][bB]([aA])?\(\d{1,3},\d{1,3},\d{1,3}(,.*?)?\)$/.test(color);
let atList = /(blue|default)/.test(color);
if (!atBinary16 && !atRGB && !atList) {
alert('请使用标准16进制颜色、标准RGB颜色、2种特定颜色名指定颜色本次创建使用默认颜色');
return this._clacWikiColour('default');
}
//颜色名称转色值
var colorList = {
let colorList = {
default: '#4296eb',
blue: '#4296eb'
};
@ -75,13 +75,13 @@ module.exports = {
color = colorList[color];
}
//解析颜色为rgb
var rgb = [];
let rgb = [];
if (color.indexOf('#') === 0) {
rgb[0] = parseInt('0x' + color.substr(1, 2));
rgb[1] = parseInt('0x' + color.substr(3, 2));
rgb[2] = parseInt('0x' + color.substr(5, 2));
} else {
var rgbStr = color.split('(')[1].split(')')[0].split(',');
let rgbStr = color.split('(')[1].split(')')[0].split(',');
rgb[0] = parseInt(rgbStr[0]);
rgb[1] = parseInt(rgbStr[1]);
rgb[2] = parseInt(rgbStr[2]);
@ -93,7 +93,7 @@ module.exports = {
lessThan(rgb[2].toString(16))
].join('');
//颜色变化量,越小的值变化越大
var increment = [
let increment = [
Math.round((255 - rgb[0]) / 3),
Math.round((255 - rgb[1]) / 3),
Math.round((255 - rgb[2]) / 3)
@ -105,9 +105,9 @@ module.exports = {
(rgb[2] + increment[2]).toString(16)
].join('');
//生成暗色dark
var larger = 0,
let larger = 0,
largeIndex = -1;
var largerFd = function (i) {
let largerFd = function (i) {
if (increment[i] > larger) {
larger = increment[i];
largeIndex = i;
@ -118,7 +118,7 @@ module.exports = {
largerFd(2);
if (rgb[largeIndex] - larger < 0) {
//修复加深颜色值为负的情况最多减到0其他三色等比例减小
var reduce = (rgb[largeIndex] - larger) / larger;
let reduce = (rgb[largeIndex] - larger) / larger;
increment[0] += Math.round(increment[0] * reduce);
increment[1] += Math.round(increment[1] * reduce);
increment[2] += Math.round(increment[2] * reduce);
@ -132,8 +132,8 @@ module.exports = {
},
//配置检查
_checkConfig: function () {
var options = {};
var editor = atom.workspace.getActiveTextEditor();
let options = {};
let editor = atom.workspace.getActiveTextEditor();
if (!editor) {
return;
}
@ -146,18 +146,19 @@ module.exports = {
options.filesPath = atom.configDirPath.replace(/\\/g, '/') + '/packages/amWiki/files/';
options.outputPath = options.editorPath.split('config.json')[0].replace(/\\/g, '/');
//读取配置
var config = fs.readFileSync(options.editorPath, 'utf-8') || '';
if (config.length === 0) {
let configStr = fs.readFileSync(options.editorPath, 'utf-8') || '';
if (configStr.length === 0) {
if (!confirm('没有读取到任何配置,继续创建么?')) {
return;
} else {
config = "{}";
configStr = "{}";
}
}
//解析默认配置
var parseOk = true;
let parseOk = true,
config = null;
try {
config = JSON.parse(config);
config = JSON.parse(configStr);
} catch (e) {
alert('配置解析失败,请检查您的 config.json 是否有严格按 Json 格式书写!\n错误消息' + e.message);
parseOk = false;
@ -177,12 +178,12 @@ module.exports = {
config.colour = config.colour ? this._clacWikiColour(config.colour) : this._clacWikiColour('#4296eb');
return {
options: options,
config:config
config: config
};
},
//创建amWiki本地文件
create: function (callback) {
var {options, config} = this._checkConfig();
let {options, config} = this._checkConfig();
//创建
fs.readdir(options.outputPath, function (err, files) {
if (files.length > 1) {
@ -191,13 +192,13 @@ module.exports = {
}
}
//创建index.html
var indexPage = fs.readFileSync(options.filesPath + 'amWiki.tpl', 'utf-8');
let indexPage = fs.readFileSync(options.filesPath + 'amWiki.tpl', 'utf-8');
indexPage = indexPage.replace(/\{\{name\}\}/g, config.name)
.replace('{{version}}', config.version)
.replace('{{logo}}', config.logo);
if (config.testing) {
var testingTpl = fs.readFileSync(options.filesPath + 'amWiki.testing.tpl', 'utf-8');
var testingScript = '<script src="amWiki/js/amWiki.testing.js"></script>';
let testingTpl = fs.readFileSync(options.filesPath + 'amWiki.testing.tpl', 'utf-8');
let testingScript = '<script src="amWiki/js/amWiki.testing.js"></script>';
indexPage = indexPage
.replace('{{amWiki.testing.tpl}}', testingTpl)
.replace('{{amWiki.testing.js}}', testingScript);
@ -208,9 +209,9 @@ module.exports = {
}
fs.writeFileSync(options.outputPath + 'index.html', indexPage, 'utf-8');
//创建文件夹
var hasLibrary = this._createWikiFolder(options.outputPath);
let hasLibrary = this._createWikiFolder(options.outputPath);
//创建amWiki.css
var wikiCss = fs.readFileSync(options.filesPath + 'amWiki.css', 'utf-8');
let wikiCss = fs.readFileSync(options.filesPath + 'amWiki.css', 'utf-8');
if (config.testing) {
wikiCss += fs.readFileSync(options.filesPath + 'amWiki.testing.css', 'utf-8');
}
@ -222,7 +223,7 @@ module.exports = {
.replace(/@colour-dark/g, config.colour.dark);
fs.writeFileSync(options.outputPath + 'amWiki/css/amWiki.css', wikiCss, 'utf-8');
//拷贝页面资源
var fileList = [
let fileList = [
['markdownbody.github.css', 'amWiki/css/markdownbody.github.css'],
['lhjs.github-gist.css', 'amWiki/css/lhjs.github-gist.css'],
['gbk.js', 'amWiki/js/gbk.js'],
@ -243,17 +244,17 @@ module.exports = {
['logo.png', 'amWiki/images/logo.png'],
['menubar_bg.png', 'amWiki/images/menubar_bg.png']
];
for (var i = 0; i < fileList.length; i++) {
for (let i = 0; i < fileList.length; i++) {
this._copyWikiFile(options.filesPath + fileList[i][0], options.outputPath + fileList[i][1]);
}
//如果没有library则复制一套默认文档
if (!hasLibrary) {
//首页文档
var home = fs.readFileSync(options.filesPath + 'doc.home.md', 'utf-8');
let home = fs.readFileSync(options.filesPath + 'doc.home.md', 'utf-8');
home = home.replace('{{name}}', config.name);
fs.writeFileSync(options.outputPath + 'library/首页.md', home, 'utf-8');
//其他页面文档
var fileList2 = [
let fileList2 = [
['doc.amwiki-introduce.md', 'library/001-学习amWiki/01-amWiki轻文库简介.md'],
['doc.amwiki-mind-map.md', 'library/001-学习amWiki/02-amWiki功能导图.md'],
['doc.amwiki-new.md', 'library/001-学习amWiki/03-如何开始一个新amWiki轻文库.md'],
@ -267,7 +268,7 @@ module.exports = {
['doc.demo-api.md', 'library/002-文档示范/001-通用API接口文档示例.md'],
['doc.demo-long-article.md', 'library/002-文档示范/002-超长文档页内目录示例.md']
];
for (var j = 0; j < fileList2.length; j++) {
for (let j = 0; j < fileList2.length; j++) {
this._copyWikiFile(options.filesPath + fileList2[j][0], options.outputPath + fileList2[j][1]);
}
}

View File

@ -3,10 +3,10 @@
* @author Tevin
*/
var electronRemote = require('electron').remote,
let electronRemote = require('electron').remote,
dialog = electronRemote.dialog;
var fs = require("fs");
var directories = require('./manage-folder');
let fs = require("fs");
let directories = require('./manage-folder');
module.exports = {
//拷贝一张图片
@ -15,7 +15,7 @@ module.exports = {
},
//拷贝一篇文档
_copyMd: function (fileName, pathTo) {
var file = fs.readFileSync(fileName[0], 'utf-8');
let file = fs.readFileSync(fileName[0], 'utf-8');
//相对路径图片地址转换
file = file
.replace(/!\[(.*?)]\(assets(.*?)\)/g, '![$1](' + this._githubUrl + 'wiki/images$2)')
@ -34,10 +34,10 @@ module.exports = {
},
//导出导航、底部签名
_exportNavigation: function (fileList, duplicate, pathFrom, pathTo) {
var navigation = fs.readFileSync(pathFrom + '/$navigation.md', 'utf-8');
var list = fileList.concat(duplicate);
var path, name;
for (var i = 0, item; item = list[i]; i++) {
let navigation = fs.readFileSync(pathFrom + '/$navigation.md', 'utf-8');
let list = fileList.concat(duplicate);
let path, name;
for (let i = 0, item; item = list[i]; i++) {
path = item[0]
.replace(/\\/g, '/')
.split('library/')[1]
@ -56,8 +56,8 @@ module.exports = {
},
//导出首页
_exportHome: function (pathFrom, pathTo) {
var that = this;
var file = fs.readFileSync(pathFrom + '/首页.md', 'utf-8');
let that = this;
let file = fs.readFileSync(pathFrom + '/首页.md', 'utf-8');
file = file
//相对路径图片地址转换
.replace(/!\[(.*?)]\(assets(.*?)\)/g, '![$1](' + this._githubUrl + 'wiki/images$2)')
@ -73,15 +73,15 @@ module.exports = {
},
//导出图片
_exportImage: function (pathFrom, pathTo) {
var that = this;
let that = this;
if (!fs.existsSync(pathTo + '/images/')) {
fs.mkdirSync(pathTo + '/images/', 0o777);
}
//文件夹拷贝
var copyFolder = function (from, to) {
var list = fs.readdirSync(from);
var path, to2;
for (var i = 0, item; item = list[i]; i++) {
let copyFolder = function (from, to) {
let list = fs.readdirSync(from);
let path, to2;
for (let i = 0, item; item = list[i]; i++) {
path = from + '/' + item;
to2 = to + '/' + item;
if (fs.statSync(path).isDirectory(path)) {
@ -98,10 +98,10 @@ module.exports = {
},
//检查重名
_checkDuplicate: function (fileList) {
var dup = [];
for (var i = 0, item; item = fileList[i]; i++) {
for (var j = i + 1, item2; item2 = fileList[j]; j++) {
if (item[1] == item2[1]) {
let dup = [];
for (let i = 0, item; item = fileList[i]; i++) {
for (let j = i + 1, item2; item2 = fileList[j]; j++) {
if (item[1] === item2[1]) {
dup.push([item, item2]);
}
}
@ -110,12 +110,12 @@ module.exports = {
},
//导出重复文档
_exportDuplicate: function (list, pathTo) {
if (list.length == 0) {
if (list.length === 0) {
return;
}
var that = this;
var file;
var checkExist = function (fileName) {
let that = this;
let file;
let checkExist = function (fileName) {
//如果已存在,增加空格
if (fs.existsSync(pathTo + '/' + fileName[1])) {
fileName[1] = fileName[1].replace(/\.md$/, ' .md');
@ -126,16 +126,16 @@ module.exports = {
that._copyMd(fileName, pathTo);
}
};
for (var i = 0, fileName; fileName = list[i]; i++) {
for (let i = 0, fileName; fileName = list[i]; i++) {
checkExist(fileName);
}
},
//导出普通文档
_exportNormal: function (list, pathTo) {
if (list.length == 0) {
if (list.length === 0) {
return;
}
for (var i = 0, fileName; fileName = list[i]; i++) {
for (let i = 0, fileName; fileName = list[i]; i++) {
this._copyMd(fileName, pathTo);
}
},
@ -144,13 +144,13 @@ module.exports = {
if (fs.readdirSync(pathTo).length > 0 && confirm('所选文件夹不为空,是否需要清空?')) {
directories.cleanFolder(pathTo);
}
var fileList2 = [];
var duplicate2 = [];
if (typeof duplicates != 'undefined') {
for (var i = 0, file; file = fileList[i]; i++) {
var fileDup = false;
for (var j = 0, dup; dup = duplicates[j]; j++) {
if (file[0] == dup) {
let fileList2 = [];
let duplicate2 = [];
if (typeof duplicates !== 'undefined') {
for (let i = 0, file; file = fileList[i]; i++) {
let fileDup = false;
for (let j = 0, dup; dup = duplicates[j]; j++) {
if (file[0] === dup) {
fileDup = true;
duplicate2.push(file);
break;
@ -172,31 +172,31 @@ module.exports = {
},
//导出准备
_toPrepare: function (pathFrom, pathTo) {
var that = this;
var fileList = [];
pathFrom += pathFrom.substr(pathFrom.length - 1, 1) == '\\' ? 'library\\' : '\\library\\';
let that = this;
let fileList = [];
pathFrom += pathFrom.substr(pathFrom.length - 1, 1) === '\\' ? 'library\\' : '\\library\\';
//读取文件夹
directories.readLibraryDir(pathFrom, function (err, tree, files) {
if (err) {
console.warn(err);
} else {
//console.log(tree, files);
var fileName = '';
let fileName = '';
//提取文件名
for (var i = 0, item; item = files[i]; i++) {
fileName = item.split(/\\|\//);
for (let i = 0, item; item = files[i]; i++) {
fileName = item.split(/[\\\/]/);
fileList.push([
item,
fileName[fileName.length - 1].replace(/^\d+(\.\d+)?[-_](.*?)$/, '$2')
]);
}
//重名检查
var duplicate = that._checkDuplicate(fileList);
let duplicate = that._checkDuplicate(fileList);
//重名文件单独处理
if (duplicate.length > 0) {
var dups = [];
var message = '以下文件脱离文件夹偏平化时将会重名:\n\n';
for (var j = 0, dup; dup = duplicate[j]; j++) {
let dups = [];
let message = '以下文件脱离文件夹偏平化时将会重名:\n\n';
for (let j = 0, dup; dup = duplicate[j]; j++) {
message += dup[0][0].replace(/\//g, '\\') + '\n' +
dup[1][0].replace(/\//g, '\\') + '\n\n';
dups.push(dup[0][0], dup[1][0]);
@ -216,17 +216,17 @@ module.exports = {
_githubUrl: '',
//解析 GitHub url
_parseGithubUrl: function (path) {
var config = JSON.parse(fs.readFileSync(path + '/config.json', 'utf-8'));
if (typeof config['github-url'] == 'undefined') {
let config = JSON.parse(fs.readFileSync(path + '/config.json', 'utf-8'));
if (typeof config['github-url'] === 'undefined') {
alert('导出失败!\n未检测到 “github-url” 配置,请在 config.json 中配置您项目的 github-url');
return false;
}
var url = config['github-url'];
if (url.indexOf('github.com') == 0 || url.split('github.com')[1] == '') {
let url = config['github-url'];
if (url.indexOf('github.com') === 0 || url.split('github.com')[1] === '') {
alert('导出失败!\n请配置完整 github 项目地址!');
return false;
}
var urlArr = url.split('github.com')[1].split('/');
let urlArr = url.split('github.com')[1].split('/');
if (urlArr.length < 3) {
alert('导出失败!\n请配置完整 github 项目地址!');
return false;
@ -235,12 +235,12 @@ module.exports = {
},
//导出
export: function () {
var that = this;
var editor = atom.workspace.getActiveTextEditor();
let that = this;
let editor = atom.workspace.getActiveTextEditor();
if (!editor) {
return;
}
var path = editor.getPath();
let path = editor.getPath();
//检测是否为 amWiki 项目
path = directories.isAmWiki(path);
if (!path) {

View File

@ -3,16 +3,16 @@
* @author Tevin
*/
var http = require('http');
var url = require('url');
var fs = require('fs');
var util = require('util');
var os = require('os');
var child_process = require("child_process");
var GBK = require('../files/gbk.js').GBK;
let http = require('http');
let url = require('url');
let fs = require('fs');
let util = require('util');
let os = require('os');
let child_process = require("child_process");
let GBK = require('../files/gbk.js').GBK;
//文件类型
var mimeType = {
let mimeType = {
'txt': 'text/plain',
'html': 'text/html',
'css': 'text/css',
@ -32,7 +32,7 @@ var mimeType = {
};
//404未找到页面
var page_404 = function (req, res, path) {
let page_404 = function (req, res, path) {
res.writeHead(404, {
'Content-Type': 'text/html'
});
@ -48,7 +48,7 @@ var page_404 = function (req, res, path) {
};
//500错误页面
var page_500 = function (req, res, error) {
let page_500 = function (req, res, error) {
res.writeHead(500, {
'Content-Type': 'text/html'
});
@ -60,18 +60,18 @@ var page_500 = function (req, res, error) {
//获取本地ip
function getLocalIP() {
var ifaces = os.networkInterfaces();
var ip = '';
for (var dev in ifaces) {
let ifaces = os.networkInterfaces();
let ip = '';
for (let dev in ifaces) {
if (ifaces.hasOwnProperty(dev)) {
ifaces[dev].forEach(function (details) {
if (details.family == 'IPv4' && details.address.indexOf(192) >= 0) {
if (details.family === 'IPv4' && details.address.indexOf(192) >= 0) {
ip = details.address;
}
});
}
}
if (ip == '') {
if (ip === '') {
ip = '127.0.0.1';
}
return ip;
@ -84,11 +84,11 @@ module.exports = {
mappingList: {},
//创建web服务器
createServer: function () {
var that = this;
let that = this;
this.server = http.createServer(function (req, res) {
var pathname = url.parse(req.url).pathname;
var mappingId = '';
var filePath = pathname.replace(/^\/wiki(\d{3,}?)\//g, function (match, $1) {
let pathname = url.parse(req.url).pathname;
let mappingId = '';
let filePath = pathname.replace(/^\/wiki(\d{3,}?)\//g, function (match, $1) {
mappingId = 'wiki' + $1;
return ''
});
@ -102,13 +102,13 @@ module.exports = {
filePath = GBK.decode(filePath);
}
//真实地址
var realPath = that.mappingList[mappingId] + filePath;
let realPath = that.mappingList[mappingId] + filePath;
//解析文件
fs.exists(realPath, function (exists) {
if (!exists) {
return page_404(req, res, pathname);
} else {
var file = fs.createReadStream(realPath);
let file = fs.createReadStream(realPath);
res.writeHead(200, {
'Content-Type': mimeType[realPath.split('.').pop()] || 'text/plain'
});
@ -125,8 +125,8 @@ module.exports = {
//更新映射列表
updateMap: function(list) {
this.mappingList = {};
for (var i = 0; i < list.length; i++) {
var path = list[i].replace('library/', '');
for (let i = 0; i < list.length; i++) {
let path = list[i].replace('library/', '');
//缩短数字并设置为地址映射名
this.mappingList['wiki' + this.createMappingId(path)] = path;
}
@ -141,9 +141,9 @@ module.exports = {
//浏览当前文档
browser: function (list) {
//编辑器
var editor = atom.workspace.getActiveTextEditor();
let editor = atom.workspace.getActiveTextEditor();
//状态验证当编辑md文档时才允许操作
var grammar, img;
let grammar, img;
if (!editor) {
return;
}
@ -156,8 +156,8 @@ module.exports = {
return;
}
//更新地址映射
for (var i = 0; i < list.length; i++) {
var path = list[i].replace('library/', '');
for (let i = 0; i < list.length; i++) {
let path = list[i].replace('library/', '');
//缩短数字并设置为地址映射名
this.mappingList['wiki' + this.createMappingId(path)] = path;
}
@ -168,15 +168,15 @@ module.exports = {
}
}
//解析地址
var host = 'http://' + getLocalIP() + ':5171';
var editorPath = editor.getPath();
var mappingId = this.createMappingId(editorPath.split('library')[0]);
var url;
let host = 'http://' + getLocalIP() + ':5171';
let editorPath = editor.getPath();
let mappingId = this.createMappingId(editorPath.split('library')[0]);
let url;
if (editorPath.indexOf('$navigation.md') >= 0) {
url = host + '/wiki' + mappingId + '/index.html';
} else {
var filePath = editorPath.split('library\\')[1];
if (typeof filePath == 'undefined') {
let filePath = editorPath.split('library\\')[1];
if (typeof filePath === 'undefined') {
url = host + '/wiki' + mappingId + '/index.html';
} else {
filePath = filePath.replace(/\\/g, '/').replace(/ /g, '%20').replace('.md', '');
@ -184,17 +184,17 @@ module.exports = {
}
}
//呼起默认浏览器打开页面
var cmd;
let cmd;
//windows
if (process.platform == 'win32') {
if (process.platform === 'win32') {
cmd = 'start';
}
//linux
else if (process.platform == 'linux') {
else if (process.platform === 'linux') {
cmd = 'xdg-open';
}
//mac
else if (process.platform == 'darwin') {
else if (process.platform === 'darwin') {
cmd = 'open';
}
child_process.exec(cmd + ' ' + url);

View File

@ -3,29 +3,29 @@
* @author Tevin
*/
var fs = require("fs");
var directories = require('./manage-folder');
let fs = require("fs");
let directories = require('./manage-folder');
module.exports = {
//手动更新导航
update: function (state, callback) {
var editor = atom.workspace.getActiveTextEditor();
let editor = atom.workspace.getActiveTextEditor();
if (!editor) {
return;
}
var grammar = editor.getGrammar();
let grammar = editor.getGrammar();
if (!grammar) {
alert('只有当你打开library文件夹下的文档时才能手动更新导航文件');
return;
}
var editorPath = editor.getPath();
let editorPath = editor.getPath();
if (editorPath.indexOf('library') < 0 && editorPath.substr(-3) !== '.md') {
alert('只有当你打开library文件夹下的文档时才能手动更新导航文件');
return;
}
this.refresh(editorPath, function (libPath) {
//如果当前文库没有记录,添加记录
var hs, i;
let hs, i;
i = 0;
hs = false;
while (i < state.libraryList.length) {
@ -43,8 +43,8 @@ module.exports = {
},
//刷新导航创建wiki时
refresh: function (editorPath, callback) {
var that = this;
var path = editorPath.replace(/\\/g, '/').split('library')[0] + 'library/';
let that = this;
let path = editorPath.replace(/\\/g, '/').split('library')[0] + 'library/';
callback && callback(path);
directories.readLibraryDir(path, function (err, tree) {
if (err) {
@ -59,12 +59,12 @@ module.exports = {
if (this.hasDuplicateId(data)) {
return;
}
var hsErrId = false;
var checkId = function (name, path) {
let hsErrId = false;
let checkId = function (name, path) {
if (/^\d+(\.\d+)?[-_](.*?)$/.test(name)) {
return true
} else {
var text = 'Error File ID!\n排序id仅允许由整数或浮点数构成并使用连接符或下划线与具体名称相连\n' +
let text = 'Error File ID!\n排序id仅允许由整数或浮点数构成并使用连接符或下划线与具体名称相连\n' +
' at path "library/' + path + '"\n' +
' at file "' + name + '"';
hsErrId = true;
@ -72,31 +72,31 @@ module.exports = {
return false;
}
};
var checkFileName = function (name, path) {
let checkFileName = function (name, path) {
if (/^\d+(\.\d+)?[-_](.*?)\.md$/.test(name)) {
return true
} else {
var errText = 'Error File Name\n文件名须由 “排序id-名称.md” 格式构成\n' +
let errText = 'Error File Name\n文件名须由 “排序id-名称.md” 格式构成\n' +
' at path "library/' + path + '/"\n' +
' at file "' + name + '"';
alert(errText);
return false;
}
};
var markdown = '';
let markdown = '';
markdown += '\n#### [首页](?file=首页 "返回首页")\n';
for (var dir1 in data) {
for (let dir1 in data) {
if (data.hasOwnProperty(dir1) && checkId(dir1, '')) {
markdown += '\n##### ' + dir1.match(/^\d+(\.\d+)?[-_](.*?)$/)[2] + '\n';
for (var dir2 in data[dir1]) {
for (let dir2 in data[dir1]) {
if (data[dir1].hasOwnProperty(dir2) && checkId(dir2, dir1 + '/')) {
//当为文件夹时
if (data[dir1][dir2]) {
markdown += '- **' + dir2.match(/^\d+(\.\d+)?[-_](.*?)$/)[2] + '**\n';
for (var dir3 in data[dir1][dir2]) {
for (let dir3 in data[dir1][dir2]) {
if (data[dir1][dir2].hasOwnProperty(dir3) && checkId(dir3, dir1 + '/' + dir2 + '/')) {
if (checkFileName(dir3, dir1 + '/' + dir2 + '/')) {
var name2 = dir3.match(/^\d+(\.\d+)?[-_](.*?)\.md$/)[2];
let name2 = dir3.match(/^\d+(\.\d+)?[-_](.*?)\.md$/)[2];
markdown += ' - [' + name2 + '](?file=' +
dir1 + '/' + dir2 + '/' + dir3.split('.md')[0] + ' "' + name2 + '")\n';
}
@ -106,7 +106,7 @@ module.exports = {
//当为文件时
else {
if (checkFileName(dir2, dir1 + '/')) {
var name = dir2.match(/^\d+(\.\d+)?[-_](.*?)\.md$/)[2];
let name = dir2.match(/^\d+(\.\d+)?[-_](.*?)\.md$/)[2];
markdown += '- [' + name + '](?file=' +
dir1 + '/' + dir2.split('.md')[0] + ' "' + name + '")\n';
}
@ -122,9 +122,9 @@ module.exports = {
//检查重复id
hasDuplicateId: function (data) {
//单层检查
var check = function (obj, path) {
var hash = {};
for (var name in obj) {
let check = function (obj, path) {
let hash = {};
for (let name in obj) {
if (obj.hasOwnProperty(name)) {
if (!hash[name.split('-')[0]]) {
hash[name.split('-')[0]] = name;
@ -140,14 +140,14 @@ module.exports = {
return true;
};
//是否存在重复id
var duplicate = 'none';
let duplicate = 'none';
//第一层library直接子级
if (check(data, '')) {
for (var p1 in data) {
for (let p1 in data) {
if (data.hasOwnProperty(p1) && data[p1]) {
//第二层,可能是文件夹也可能是文件
if (check(data[p1], p1 + '/')) {
for (var p2 in data[p1]) {
for (let p2 in data[p1]) {
if (data[p1].hasOwnProperty(p2) && data[p1][p2]) {
//第三层,只有文件
if (!check(data[p1][p2], p1 + '/' + p2 + '/')) {

View File

@ -3,25 +3,25 @@
* @author Tevin
*/
var fs = require('fs');
let fs = require('fs');
module.exports = {
//读取文库文件夹
readLibraryDir: function (path, callback) {
if (!/library(\\|\/)$/.test(path)) {
if (!/library[\\\/]$/.test(path)) {
callback('The path is not a library.');
return;
}
var tree = {};
var folders = [];
var files = [];
let tree = {};
let folders = [];
let files = [];
try {
var files1 = fs.readdirSync(path),
let files1 = fs.readdirSync(path),
files2, files3,
path2, path3, path4;
folders.push(path);
//第一层files1library直接子级仅允许为文件夹
for (var i = 0; i < files1.length; i++) {
for (let i = 0; i < files1.length; i++) {
path2 = path + files1[i];
if (/^\./.test(files1[i])) {
continue;
@ -32,7 +32,7 @@ module.exports = {
folders.push(path2);
tree[files1[i]] = {};
//第二层files2允许为文件夹和文件
for (var j = 0; j < files2.length; j++) {
for (let j = 0; j < files2.length; j++) {
path3 = path2 + '/' + files2[j];
if (/^\./.test(files2[j])) {
continue;
@ -43,7 +43,7 @@ module.exports = {
folders.push(path3);
tree[files1[i]][files2[j]] = {};
//第三层files3仅允许为文件夹不再深入
for (var k = 0; k < files3.length; k++) {
for (let k = 0; k < files3.length; k++) {
path4 = path3 + '/' + files3[k];
if (/^\./.test(files3[k])) {
continue;
@ -76,10 +76,10 @@ module.exports = {
},
//循环检查每个库
eachLibrary: function (list, stepCallback) {
var list2 = [];
var path = '';
var atomProjects = atom.project.getPaths();
for (var i = 0; i < list.length; i++) {
let list2 = [];
let path = '';
let atomProjects = atom.project.getPaths();
for (let i = 0; i < list.length; i++) {
//路径缺乏library字段弃用
if (list[i].indexOf('library') < 0) {
continue;
@ -90,9 +90,9 @@ module.exports = {
continue;
}
//路径重复弃用
var pathRepeat = false;
for (var j = 0; j < list2.length; j++) {
if (list2[j] == list[i]) {
let pathRepeat = false;
for (let j = 0; j < list2.length; j++) {
if (list2[j] === list[i]) {
pathRepeat = true;
break;
}
@ -101,8 +101,8 @@ module.exports = {
continue;
}
//如果atom已经移除此项目弃用
/*var pathUseful = false;
for (var k = 0; k < atomProjects.length; k++) {
/*let pathUseful = false;
for (let k = 0; k < atomProjects.length; k++) {
if (atomProjects[k].replace(/\\/g, '/') + '/library/' == path) {
pathUseful = true;
break;
@ -119,12 +119,12 @@ module.exports = {
},
//清空文件夹
cleanFolder: function(path) {
var list = fs.readdirSync(path);
var path2;
for (var i = 0, item; item = list[i]; i++) {
let list = fs.readdirSync(path);
let path2;
for (let i = 0, item; item = list[i]; i++) {
path2 = path + '/' + item;
if (fs.statSync(path2).isDirectory(path2)) {
if (item.indexOf('.') != 0) { //跳过特殊文件夹
if (item.indexOf('.') !== 0) { //跳过特殊文件夹
this.cleanDir(path2);
fs.rmdirSync(path2);
}

View File

@ -3,15 +3,15 @@
* @author Tevin
*/
var fs = require('fs');
let fs = require('fs');
module.exports = {
//创建文库id
createWikiId: function (path) {
path = path.replace(/\\/g, '/');
//累加地址字符串每个字符Unicode值与此字符序号的乘积
var code = 0;
for (var j = 0; j < path.length; j++) {
let code = 0;
for (let j = 0; j < path.length; j++) {
code += path.charCodeAt(j) * j;
}
//再与地址字符串长度拼合
@ -23,7 +23,7 @@ module.exports = {
path = path.indexOf('library') < 0 ? path : path.split('library')[0];
path = path.indexOf('config.json') < 0 ? path : path.split('config.json')[0];
path = path.indexOf('index.html') < 0 ? path : path.split('index.html')[0];
var states = [
let states = [
fs.existsSync(path + '/library/'),
fs.existsSync(path + '/amWiki/'),
fs.existsSync(path + '/config.json'),

View File

@ -3,13 +3,13 @@
* @author Tevin
*/
var environment = require('atom'),
let environment = require('atom'),
Directory = environment.Directory,
CompositeDisposable = environment.CompositeDisposable;
var fs = require('fs');
var makeNav = require('../build/make-navigation');
var directories = require('../build/manage-folder');
var crypto = require('crypto');
let fs = require('fs');
let makeNav = require('../build/make-navigation');
let directories = require('../build/manage-folder');
let crypto = require('crypto');
module.exports = {
//订阅
@ -20,14 +20,14 @@ module.exports = {
onLibrariesChange: null,
//监听发起
start: function (state) {
if (state.libraryList.length == 0) {
if (state.libraryList.length === 0) {
return;
}
var that = this;
let that = this;
//检查library是否仍然存在删除不存在的库
state.libraryList = directories.eachLibrary(state.libraryList);
var libraryMD5 = {};
for (var i = 0; i < state.libraryList.length; i++) {
let libraryMD5 = {};
for (let i = 0; i < state.libraryList.length; i++) {
libraryMD5[state.libraryList[i]] = state.libraryMD5[state.libraryList[i]];
}
state.libraryMD5 = libraryMD5;
@ -36,7 +36,7 @@ module.exports = {
this.subscriptions.add(atom.commands.onDidDispatch(function (e) {
//console.log('commands:', e.type);
//重命名、新增文件夹或文件、创建副本事件
if (/core\:confirm/.test(e.type) && e.target.className == 'editor mini is-focused') {
if (/core\:confirm/.test(e.type) && e.target.className === 'editor mini is-focused') {
that.toCheckLib(state);
}
//删除、剪切、粘帖文件事件
@ -44,7 +44,7 @@ module.exports = {
that.toCheckLib(state);
}
//删除项目文件夹事件
else if (e.type == 'tree-view:remove-project-folder') {
else if (e.type === 'tree-view:remove-project-folder') {
}
}));
//当编辑器打开一个文件时的回调
@ -53,25 +53,25 @@ module.exports = {
//当项目(路径)数量变化时的回调(即添加或删除项目)
this.subscriptions.add(atom.project.onDidChangePaths(function (list) {
//文库列表比对,移除失效,添加新增
var list2 = [];
for (var i = 0; i < list.length; i++) {
let list2 = [];
for (let i = 0; i < list.length; i++) {
list[i] = list[i].replace(/\\/g, '/') + '/library/';
for (var j = 0; j < state.libraryList.length; j++) {
if (list[i] == state.libraryList[j]) {
for (let j = 0; j < state.libraryList.length; j++) {
if (list[i] === state.libraryList[j]) {
list2.push(state.libraryList[j]);
list[i] = null;
}
}
}
for (var k = 0; k < list.length; k++) {
for (let k = 0; k < list.length; k++) {
if (list[k] && directories.isAmWiki(list[k])) {
list2.push(list[k]);
}
}
state.libraryList = list2;
//MD5同步变化
var libraryMD5 = {};
for (var ii = 0; ii < state.libraryList.length; ii++) {
let libraryMD5 = {};
for (let ii = 0; ii < state.libraryList.length; ii++) {
libraryMD5[state.libraryList[ii]] = state.libraryMD5[state.libraryList[ii]];
}
state.libraryMD5 = libraryMD5;
@ -83,9 +83,9 @@ module.exports = {
that.treeView = pkg.mainModule.treeView; //目录树主对象
that.treeState = pkg.mainModule.state; //目录树全局状态
that.treeView[0].addEventListener('drop', function (e) {
for (var i = 0; i < e.path.length; i++) {
for (let i = 0; i < e.path.length; i++) {
if (e.path[i].className.indexOf('project-root') >= 0) {
var path = e.path[i].querySelector('.header > span').getAttribute('data-path');
let path = e.path[i].querySelector('.header > span').getAttribute('data-path');
that.toCheckLib(state, path.replace(/\\/g, '/') + '/library/');
break;
}
@ -93,7 +93,7 @@ module.exports = {
}, false);
});
//切换窗口出去超过30秒回来时检查目录
var lastTimestamp;
let lastTimestamp;
window.addEventListener('blur', function () {
lastTimestamp = Date.now();
});
@ -107,14 +107,14 @@ module.exports = {
});
//当atom启动时如果插件设置“启动时全量检查文库变化”项处于开启状态全量检查文库
if (atom.config.get('amWiki.checkAllLibraryOnAtomStart')) {
for (var l = 0; l < state.libraryList.length; l++) {
for (let l = 0; l < state.libraryList.length; l++) {
this.checkLibrary(state, state.libraryList[l]);
}
}
},
//准备检查文库
toCheckLib: function (state, curLibrary, recursive) {
var that = this;
let that = this;
//当存在curLibrary参数时直接检查此文库
if (curLibrary) {
this.checkLibrary(state, curLibrary);
@ -129,7 +129,7 @@ module.exports = {
this.checkLibrary(state, curLibrary);
}
//如果treeView当前路径补/library/字段后是已存在的wiki
else if (typeof state.libraryMD5[curLibrary + '/library/'] != 'undefined') {
else if (typeof state.libraryMD5[curLibrary + '/library/'] !== 'undefined') {
this.checkLibrary(state, curLibrary + '/library/');
}
//从treeState获取路径
@ -140,7 +140,7 @@ module.exports = {
this.checkLibrary(state, curLibrary);
}
//如果treeState当前路径补/library/字段后是已存在的wiki
else if (typeof state.libraryMD5[curLibrary + '/library/'] != 'undefined') {
else if (typeof state.libraryMD5[curLibrary + '/library/'] !== 'undefined') {
this.checkLibrary(state, curLibrary + '/library/');
}
//如果treeState当前路径也不匹配不检查文库更新
@ -160,9 +160,9 @@ module.exports = {
//检查文库变化
checkLibrary: function (state, curLibrary) {
curLibrary = curLibrary.split('library/')[0] + 'library/';
var libHas = false;
for (var i = 0; i < state.libraryList.length; i++) {
if (state.libraryList[i] == curLibrary) {
let libHas = false;
for (let i = 0; i < state.libraryList.length; i++) {
if (state.libraryList[i] === curLibrary) {
libHas = true;
}
}
@ -175,8 +175,8 @@ module.exports = {
if (err) {
console.warn(err);
} else {
var libMd5 = crypto.createHash('md5').update(files.join('&')).digest('base64');
if (state.libraryMD5[curLibrary] != libMd5) {
let libMd5 = crypto.createHash('md5').update(files.join('&')).digest('base64');
if (state.libraryMD5[curLibrary] !== libMd5) {
state.libraryMD5[curLibrary] = libMd5;
//更新导航文件
makeNav.make(curLibrary, tree);

View File

@ -3,15 +3,15 @@
* @author Tevin
*/
var fs = require("fs");
var directories = require('../build/manage-folder');
var pasteImg = require('./paste-img');
let fs = require("fs");
let directories = require('../build/manage-folder');
let pasteImg = require('./paste-img');
module.exports = {
//拖拽图片
_dropImg: function (files, paths, editor) {
pasteImg.createDirectory(paths.creatDirPath, function () {
for (var i = 0, file; file = files[i]; i++) {
for (let i = 0, file; file = files[i]; i++) {
fs.createReadStream(file.path).pipe(fs.createWriteStream(paths.writePath + file.name));
editor.insertText("![](assets/" + paths.insertPath + file.name + ") \n", editor);
}
@ -19,14 +19,14 @@ module.exports = {
},
//监听拖拽
listenDrop: function () {
var that = this;
let that = this;
atom.document.getElementsByClassName('item-views')[0].addEventListener('drop', function (e) {
//console.log(e.dataTransfer.getData("treeViewDrag"));
//文件验证,包含非图片文件跳过不工作
var files = e.dataTransfer.files;
var allImg = true;
for (var i = 0, file; file = files[i]; i++) {
if (file.type.indexOf('image/') != 0) {
let files = e.dataTransfer.files;
let allImg = true;
for (let i = 0, file; file = files[i]; i++) {
if (file.type.indexOf('image/') !== 0) {
allImg = false;
}
}
@ -34,8 +34,8 @@ module.exports = {
return;
}
//编辑器状态验证非markdown不工作
var editor = atom.workspace.getActiveTextEditor();
var grammar;
let editor = atom.workspace.getActiveTextEditor();
let grammar;
if (!editor) {
return;
}
@ -43,11 +43,11 @@ module.exports = {
if (!grammar) {
return;
}
var editorPath = editor.getPath();
let editorPath = editor.getPath();
if (editorPath.substr(-3) !== '.md') {
return;
}
var paths = pasteImg.getPaths(editorPath);
let paths = pasteImg.getPaths(editorPath);
if (!paths) {
return;
}
@ -64,7 +64,7 @@ module.exports = {
/*atom.packages.activatePackage('tree-view').then(function (pkg) {
that.treeView = pkg.mainModule.treeView;
that.treeView[0].addEventListener('dragstart', function (e) {
var path = e.target.childNodes[0].getAttribute('data-path');
let path = e.target.childNodes[0].getAttribute('data-path');
e.dataTransfer.setData("treeViewDrag", path);
});
});*/

View File

@ -6,26 +6,26 @@
*/
//运行环境
var environment = require('atom'),
let environment = require('atom'),
CompositeDisposable = environment.CompositeDisposable;
//wiki创建器
var creator = require('../build/creator');
let creator = require('../build/creator');
//文库管理
var manageWiki = require('../build/manage-wiki');
let manageWiki = require('../build/manage-wiki');
//手动刷新导航文件
var makeNav = require('../build/make-navigation');
let makeNav = require('../build/make-navigation');
//本地服务器模块
var localServer = require('../build/local-server');
let localServer = require('../build/local-server');
//项目导出模块
var exportGithub = require('../build/export-github');
let exportGithub = require('../build/export-github');
//自动化工具
var automatic = require('./automatic');
let automatic = require('./automatic');
//页内目录创建器
var pageCatalogue = require('./page-catalogue');
let pageCatalogue = require('./page-catalogue');
//截图粘帖模块
var pasteImg = require('./paste-img');
let pasteImg = require('./paste-img');
//文件拖拽模块
var fileDrop = require('./file-drop');
let fileDrop = require('./file-drop');
module.exports = {
//订阅
@ -34,20 +34,20 @@ module.exports = {
_config: null,
//当atom启动时
activate: function (state) {
var that = this;
let that = this;
this._config = state.config;
//文库记录
this._wikis = state.wikis || {};
//转移旧数据
if (state.libraryList) {
for (var i = 0, item, itemPath, itemRoot; itemPath = state.libraryList[i]; i++) {
for (let i = 0, item, itemPath, itemRoot; itemPath = state.libraryList[i]; i++) {
itemRoot = itemPath.split('library')[0];
item = {
id: manageWiki.createWikiId(itemRoot),
root: itemRoot,
path: itemPath
};
if (typeof state.libraryMD5[itemPath] != 'undefined') {
if (typeof state.libraryMD5[itemPath] !== 'undefined') {
item.fileListMD5 = state.libraryMD5[itemPath];
}
this._wikis[item.id] = item;
@ -59,9 +59,9 @@ module.exports = {
//命令基于当前config.json创建wiki
'amWiki:create': function () {
creator.create(function(root){
var wikiId = manageWiki.createWikiId(root);
let wikiId = manageWiki.createWikiId(root);
//添加文库
if (typeof that._wikis == 'undefined') {
if (typeof that._wikis === 'undefined') {
that._wikis[wikiId] = {
id: wikiId,
root: root,
@ -128,7 +128,7 @@ module.exports = {
//显示相关
_showAbout: function () {
atom.packages.activatePackage('amWiki').then(function (pkg) {
var content = 'amWiki v' + pkg.metadata.version + '\n' +
let content = 'amWiki v' + pkg.metadata.version + '\n' +
'https://github.com/TevinLi/amWiki\n' +
'MIT Copyright(c) 2016-2099 Tevin Li\n';
alert(content);

View File

@ -6,11 +6,11 @@
module.exports = {
//创建
make: function () {
var editor = atom.workspace.getActiveTextEditor();
let editor = atom.workspace.getActiveTextEditor();
if (!editor) {
return;
}
var grammar = editor.getGrammar();
let grammar = editor.getGrammar();
if (!grammar) {
return;
}
@ -21,17 +21,17 @@ module.exports = {
},
//抽取标题
extract: function (arc) {
var lines = arc.split('\n');
if (lines.length == 1) {
let lines = arc.split('\n');
if (lines.length === 1) {
lines = lines[0].split('\r');
}
var contents = '';
var lineStr = '';
var hashStr = '';
var h1 = '';
var text;
let contents = '',
lineStr = '',
hashStr = '',
h1 = '',
text;
//修剪标题文本
var trimStr = function (str) {
let trimStr = function (str) {
return str.replace(/^\s+|\s+$/g, '') //去除首尾空格
.replace(/\[(.*?)]\(.*?\)/g, '$1') //去除链接
.replace(/<.*?>/g, '') //去除html标签
@ -43,18 +43,18 @@ module.exports = {
.replace(/\]/g, '&#93;'); //转义右中括号
};
//生成列表
for (var i = 0; i < lines.length; i++) {
for (let i = 0; i < lines.length; i++) {
lines[i] = lines[i].replace(/^\s*/, ''); //去除行首空格
switch (lines[i].split(/\s/)[0]) {
case '#':
text = lines[i].split('# ')[1];
if (text != undefined) {
if (text !== undefined) {
h1 = trimStr(text);
}
break;
case '##':
text = lines[i].split('## ')[1];
if (text != undefined) {
if (text !== undefined) {
lineStr = trimStr(text);
contents += '1. [' + lineStr + '](#' + lineStr.replace(/&#34;/g, '') + ' "' + lineStr + '")\n';
} else {
@ -63,7 +63,7 @@ module.exports = {
break;
case '###':
text = lines[i].split('### ')[1];
if (text != undefined) {
if (text !== undefined) {
lineStr = trimStr(text);
contents += '\t1. [' + lineStr + '](#' + lineStr.replace(/&#34;/g, '') + ' "' + lineStr + '")\n';
} else {
@ -72,7 +72,7 @@ module.exports = {
break;
}
}
if (contents.substr(0, 2) != '1.') {
if (contents.substr(0, 2) !== '1.') {
contents = '1. ' + h1 + '\n' + contents;
}
contents = '>' + contents;

View File

@ -3,19 +3,18 @@
* @author Tevin
*/
var environment = require('atom'),
let environment = require('atom'),
File = environment.File,
Directory = environment.Directory;
var fs = require("fs");
var clipboard = require('clipboard');
var crypto = require("crypto");
let fs = require("fs");
let clipboard = require('clipboard');
let crypto = require("crypto");
module.exports = {
paster: function () {
var editor = atom.workspace.getActiveTextEditor();
let editor = atom.workspace.getActiveTextEditor();
//状态验证当编辑md文档时才允许操作
var grammar, img;
let grammar, img;
if (!editor) {
return;
}
@ -30,15 +29,15 @@ module.exports = {
if (img.isEmpty()) {
return;
}
var paths = this.getPaths(editor.getPath());
let paths = this.getPaths(editor.getPath());
if (!paths) {
return;
}
//文件保存
var md5 = crypto.createHash('md5');
var imgbuffer = img.toPng();
let md5 = crypto.createHash('md5');
let imgbuffer = img.toPng();
md5.update(imgbuffer);
var filename = "" + (paths.mdFile.getBaseName().replace(/\.\w+$/, '').replace(/\s+/g, '').split(/-|_/)[0]) +
let filename = "" + (paths.mdFile.getBaseName().replace(/\.\w+$/, '').replace(/\s+/g, '').split(/[-_]/)[0]) +
"-" + (md5.digest('hex').slice(0, 8)) + ".png";
this.createDirectory(paths.creatDirPath, function () {
fs.writeFile(paths.writePath + filename, imgbuffer, 'binary', function () {
@ -48,12 +47,12 @@ module.exports = {
},
getPaths: function (editorPath) {
//路径计算
var assetsDirPath, //项目assets文件夹地址
let assetsDirPath, //项目assets文件夹地址
creatDirPath, //本次创建图片地址
insertPath, //插入文档的图片引用路径
writePath; //图片输出路径
var mdFile = new File(editorPath);
var parentDir;
let mdFile = new File(editorPath);
let parentDir;
//library直接子级
if (mdFile.getParent().getBaseName() === 'library') {
assetsDirPath = mdFile.getParent().getParent().getPath() + "/assets";
@ -90,8 +89,8 @@ module.exports = {
}
},
createDirectory: function (dirPath, callback) {
var that = this;
var assetsDir;
let that = this;
let assetsDir;
assetsDir = new Directory(dirPath);
assetsDir.exists().then(function (existed) {
if (!existed) {