工作端,添加、移除旧项目时,更新本地服务器文库地址记录
This commit is contained in:
parent
02f23b38a4
commit
65e007c331
|
|
@ -16,13 +16,15 @@ module.exports = {
|
|||
subscriptions: null,
|
||||
//目录树的引用
|
||||
treeView: null,
|
||||
//当文库数量变化时
|
||||
onLibrariesChange: null,
|
||||
//监听发起
|
||||
start: function (state) {
|
||||
if (state.libraryList.length == 0) {
|
||||
return;
|
||||
}
|
||||
var that = this;
|
||||
//循环检查library
|
||||
//检查library是否仍然存在,删除不存在的库
|
||||
state.libraryList = directories.eachLibrary(state.libraryList);
|
||||
var libraryMD5 = {};
|
||||
for (var i = 0; i < state.libraryList.length; i++) {
|
||||
|
|
@ -32,7 +34,7 @@ module.exports = {
|
|||
//监听用户操作
|
||||
this.subscriptions = new CompositeDisposable();
|
||||
this.subscriptions.add(atom.commands.onDidDispatch(function (e) {
|
||||
console.log('commands:', e.type);
|
||||
//console.log('commands:', e.type);
|
||||
//重命名、新增文件夹或文件、创建副本事件
|
||||
if (/core\:confirm/.test(e.type) && e.target.className == 'editor mini is-focused') {
|
||||
that.toCheckLib(state);
|
||||
|
|
@ -45,12 +47,36 @@ module.exports = {
|
|||
else if (e.type == 'tree-view:remove-project-folder') {
|
||||
}
|
||||
}));
|
||||
//当编辑器打开一个文件时
|
||||
this.subscriptions.add(atom.workspace.onDidOpen(function (e) {
|
||||
//当编辑器打开一个文件时的回调
|
||||
this.subscriptions.add(atom.workspace.onDidOpen(function () {
|
||||
}));
|
||||
//当项目(路径)数量变化(即添加或删除项目)时
|
||||
this.subscriptions.add(atom.project.onDidChangePaths(function (e) {
|
||||
console.log(e);
|
||||
//当项目(路径)数量变化时的回调(即添加或删除项目)
|
||||
this.subscriptions.add(atom.project.onDidChangePaths(function (list) {
|
||||
//文库列表比对,移除失效,添加新增
|
||||
var list2 = [];
|
||||
for (var 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]) {
|
||||
list2.push(state.libraryList[j]);
|
||||
list[i] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var 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++) {
|
||||
libraryMD5[state.libraryList[ii]] = state.libraryMD5[state.libraryList[ii]];
|
||||
}
|
||||
state.libraryMD5 = libraryMD5;
|
||||
//回调通知 main.js 文库数已变化
|
||||
that.onLibrariesChange && that.onLibrariesChange();
|
||||
}));
|
||||
//从树形模块监听拖拽操作
|
||||
atom.packages.activatePackage('tree-view').then(function (pkg) {
|
||||
|
|
@ -155,6 +181,6 @@ module.exports = {
|
|||
},
|
||||
//释放监听
|
||||
destroy: function () {
|
||||
this.subscriptions.dispose();
|
||||
this.subscriptions && this.subscriptions.dispose();
|
||||
}
|
||||
};
|
||||
|
|
@ -53,7 +53,7 @@ module.exports = {
|
|||
files.push(path4);
|
||||
}
|
||||
}
|
||||
} catch(err) {
|
||||
} catch (err) {
|
||||
callback(err);
|
||||
return;
|
||||
}
|
||||
|
|
@ -78,6 +78,7 @@ module.exports = {
|
|||
eachLibrary: function (list, stepCallback) {
|
||||
var list2 = [];
|
||||
var path = '';
|
||||
var atomProjects = atom.project.getPaths();
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
//路径缺乏library字段弃用
|
||||
if (list[i].indexOf('library') < 0) {
|
||||
|
|
@ -89,13 +90,25 @@ module.exports = {
|
|||
continue;
|
||||
}
|
||||
//路径重复弃用
|
||||
var hsPath = false;
|
||||
var pathRepeat = false;
|
||||
for (var j = 0; j < list2.length; j++) {
|
||||
if (list2[j] == list[i]) {
|
||||
hsPath = true;
|
||||
pathRepeat = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (hsPath) {
|
||||
if (pathRepeat) {
|
||||
continue;
|
||||
}
|
||||
//如果atom已经移除此项目,弃用
|
||||
var pathUseful = false;
|
||||
for (var k = 0; k < atomProjects.length; k++) {
|
||||
if (atomProjects[k].replace(/\\/g, '/') + '/library/' == path) {
|
||||
pathUseful = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!pathUseful) {
|
||||
continue;
|
||||
}
|
||||
//有用路径
|
||||
|
|
@ -103,5 +116,16 @@ module.exports = {
|
|||
stepCallback && stepCallback(list[i]);
|
||||
}
|
||||
return list2;
|
||||
},
|
||||
//判断一个文件夹是否为文库项目
|
||||
isAmWiki: function (path) {
|
||||
path = path.indexOf('library') < 0 ? path : path.split('library')[0];
|
||||
var states = [
|
||||
fs.existsSync(path + '/library/'),
|
||||
fs.existsSync(path + '/amWiki/'),
|
||||
fs.existsSync(path + '/config.json'),
|
||||
fs.existsSync(path + '/index.html')
|
||||
];
|
||||
return states[0] && states[1] && states[2] && states[3];
|
||||
}
|
||||
};
|
||||
21
lib/main.js
21
lib/main.js
|
|
@ -30,38 +30,43 @@ module.exports = {
|
|||
activate: function (state) {
|
||||
var that = this;
|
||||
this.state = state;
|
||||
this.state.libraryList = this.state.libraryList || []; //文库列表记录
|
||||
this.state.libraryMD5 = this.state.libraryMD5 || {}; //文库文件MD5
|
||||
//文库列表记录
|
||||
this.state.libraryList = this.state.libraryList || [];
|
||||
//文库列表地址MD5,检查文库变化时创建
|
||||
this.state.libraryMD5 = this.state.libraryMD5 || {};
|
||||
//amWiki命令
|
||||
this.subscriptions = new CompositeDisposable();
|
||||
this.subscriptions.add(atom.commands.add('atom-workspace', {
|
||||
//命令,基于当前config.json创建wiki
|
||||
'amWiki:create': function (e) {
|
||||
'amWiki:create': function () {
|
||||
creator.create(that.state);
|
||||
},
|
||||
//命令,在当前文档上抓取h2、h3为页内目录
|
||||
'amWiki:catalogue': function (e) {
|
||||
'amWiki:catalogue': function () {
|
||||
catalogue.make();
|
||||
},
|
||||
//命令,手动更新当前文库导航
|
||||
'amWiki:makeNav': function (e) {
|
||||
'amWiki:makeNav': function () {
|
||||
makeNav.update(that.state);
|
||||
},
|
||||
//命令,粘帖截图
|
||||
'amWiki:paste': function (e) {
|
||||
'amWiki:paste': function () {
|
||||
pasterImg.paster();
|
||||
},
|
||||
//命令,启动node静态服务器
|
||||
'amWiki:runServer': function (e) {
|
||||
'amWiki:runServer': function () {
|
||||
webServer.run(that.state.libraryList);
|
||||
},
|
||||
//命令,浏览打开当前页面
|
||||
'amWiki:browser': function (e) {
|
||||
'amWiki:browser': function () {
|
||||
webServer.browser(that.state.libraryList);
|
||||
}
|
||||
}));
|
||||
//自动化模块启动
|
||||
automatic.start(this.state);
|
||||
automatic.onLibrariesChange = function () {
|
||||
webServer.updateMap(that.state.libraryList);
|
||||
};
|
||||
},
|
||||
//当atom即将关闭,终止所有监听
|
||||
deactivate: function () {
|
||||
|
|
|
|||
|
|
@ -14,18 +14,12 @@ module.exports = {
|
|||
return;
|
||||
}
|
||||
var grammar = editor.getGrammar();
|
||||
if (!grammar) {
|
||||
return;
|
||||
}
|
||||
if (grammar.scopeName !== 'source.gfm') {
|
||||
return;
|
||||
}
|
||||
if (editor.getPath().indexOf('library') < 0) {
|
||||
alert('只有当你打开一个位于library文件夹下的文件时,才能更新导航文件!');
|
||||
if (!grammar || grammar.scopeName !== 'source.gfm' || editor.getPath().indexOf('library') < 0) {
|
||||
alert('只有当你打开library文件夹下的文档时,才能手动更新导航文件!');
|
||||
return;
|
||||
}
|
||||
this.refresh(editor.getPath(), function (libPath) {
|
||||
//如果当前文库没有监听,恢复监听
|
||||
//如果当前文库没有记录,添加记录
|
||||
var hs, i;
|
||||
i = 0;
|
||||
hs = false;
|
||||
|
|
|
|||
|
|
@ -122,13 +122,18 @@ module.exports = {
|
|||
}).listen(5171);
|
||||
console.info('Server running at http://' + getLocalIP() + ':5171/');
|
||||
},
|
||||
//启动服务器
|
||||
run: function (list) {
|
||||
//更新映射列表
|
||||
updateMap: function(list) {
|
||||
this.mappingList = {};
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var path = list[i].replace('library/', '');
|
||||
//缩短数字并设置为地址映射名
|
||||
this.mappingList['wiki' + this.createMappingId(path)] = path;
|
||||
}
|
||||
},
|
||||
//启动服务器
|
||||
run: function (list) {
|
||||
this.updateMap(list);
|
||||
if (!this.server) {
|
||||
this.createServer();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue