工作端代码转ES6
This commit is contained in:
parent
1f55d3b546
commit
10e83f71c9
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, '')
|
||||
|
|
@ -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, '')
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 + '/')) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
//第一层,files1,library直接子级,仅允许为文件夹
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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(" \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);
|
||||
});
|
||||
});*/
|
||||
|
|
|
|||
32
lib/main.js
32
lib/main.js
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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, ']'); //转义右中括号
|
||||
};
|
||||
//生成列表
|
||||
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(/"/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(/"/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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue