Skip to content

Commit

Permalink
Drop domain fallback
Browse files Browse the repository at this point in the history
  • Loading branch information
tommy351 committed Mar 22, 2014
1 parent e515351 commit 7b96380
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 135 deletions.
48 changes: 28 additions & 20 deletions lib/box/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var fs = require('graceful-fs'),
async = require('async'),
_ = require('lodash'),
chokidar = require('chokidar'),
domain = require('domain'),
EventEmitter = require('events').EventEmitter,
Pattern = require('./pattern'),
HexoError = require('../error'),
Expand Down Expand Up @@ -107,7 +108,12 @@ Box.prototype.addProcessor = function(pattern, fn){
Box.prototype._dispatch = function(type, path, callback){
if (typeof callback !== 'function') callback = function(){};

var self = this;
var self = this,
d = domain.create();

d.on('error', function(err){
return callback(HexoError.wrap(err, 'Process failed: ' + path));
});

// Replace backslashes on Windows
path = path.replace(/\\/g, '/');
Expand All @@ -117,29 +123,31 @@ Box.prototype._dispatch = function(type, path, callback){

this.processingFiles[path] = true;

async.each(this.processors, function(processor, next){
if (!processor.pattern.test(path)) return next();
d.run(function(){
async.each(self.processors, function(processor, next){
if (!processor.pattern.test(path)) return next();

var params = processor.pattern.match(path),
src = pathFn.join(self.base, path);
var params = processor.pattern.match(path),
src = pathFn.join(self.base, path);

processor.process(new File(self, src, path, type, params), function(err){
if (err){
if (err instanceof HexoError){
return next(err);
} else {
return next(HexoError.wrap(err, 'Process failed: ' + path));
processor.process(new File(self, src, path, type, params), function(err){
if (err){
if (err instanceof HexoError){
return next(err);
} else {
return next(HexoError.wrap(err, 'Process failed: ' + path));
}
}
}

next();
});
}, function(err){
if (err) return callback(err);
next();
});
}, function(err){
if (err) return callback(err);

self.processingFiles[path] = false;
hexo.log.d('Processed: %s', path);
callback();
self.processingFiles[path] = false;
hexo.log.d('Processed: %s', path);
callback();
});
});
};

Expand Down Expand Up @@ -188,7 +196,7 @@ Box.prototype.process = function(files, callback){
}
},
function(files, next){
async.eachSeries(files, function(item, next){
async.each(files, function(item, next){
var type, path;

if (_.isObject(item)){
Expand Down
28 changes: 8 additions & 20 deletions lib/core/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@ var EventEmitter = require('events').EventEmitter,
Box = require('../box'),
version = require('../../package.json').version,
HexoError = require('../error');
domain = null;

try {
domain = require('domain');
} catch (err){}

/**
* All Hexo methods and functions are defined inside of this namespace.
Expand Down Expand Up @@ -226,24 +222,16 @@ Hexo.prototype.call = function(name, args, callback){
var console = this.extend.console.get(name);

if (console){
if (domain){
var d = domain.create();
var d = domain.create();

d.on('error', function(err){
d.dispose();
callback(err);
});
d.on('error', function(err){
d.dispose();
callback(err);
});

d.run(function(){
console(args, callback);
});
} else {
try {
console(args, callback);
} catch (err){
callback(err);
}
}
d.run(function(){
console(args, callback);
});
} else {
callback(new Error('Console `' + name + '` not found'));
}
Expand Down
61 changes: 28 additions & 33 deletions lib/plugins/processor/page.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,50 +28,45 @@ module.exports = function(data, callback){
}, function(err, results){
if (err) return callback(err);

try {
var stat = results.stat,
link = '',
meta = yfm(results.read);
var stat = results.stat,
link = '',
meta = yfm(results.read);

meta.content = meta._content;
delete meta._content;
meta.content = meta._content;
delete meta._content;

meta.source = path;
meta.raw = results.read;
meta.source = path;
meta.raw = results.read;

if (meta.date){
if (!(meta.date instanceof Date)){
meta.date = moment(meta.date, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
meta.date = stat.ctime;
if (meta.date){
if (!(meta.date instanceof Date)){
meta.date = moment(meta.date, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
meta.date = stat.ctime;
}

if (meta.updated){
if (!(meta.updated instanceof Date)){
meta.updated = moment(meta.updated, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
meta.updated = stat.mtime;
if (meta.updated){
if (!(meta.updated instanceof Date)){
meta.updated = moment(meta.updated, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
meta.updated = stat.mtime;
}

if (meta.permalink){
link = meta.permalink;
delete meta.permalink;
if (meta.permalink){
link = meta.permalink;
delete meta.permalink;

if (!pathFn.extname(link)){
link += (link[link.length - 1] === '/' ? '' : '/') + 'index.' + getOutput(path);
}
} else {
var extname = pathFn.extname(path);
link = path.substring(0, path.length - extname.length + 1) + getOutput(path);
if (!pathFn.extname(link)){
link += (link[link.length - 1] === '/' ? '' : '/') + 'index.' + getOutput(path);
}

meta.path = link;
} catch (e){
return callback(e);
} else {
var extname = pathFn.extname(path);
link = path.substring(0, path.length - extname.length + 1) + getOutput(path);
}

meta.path = link;

hexo.post.render(data.source, meta, function(err, meta){
if (err) return callback(err);
Expand Down
120 changes: 58 additions & 62 deletions lib/plugins/processor/post.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,85 +108,81 @@ module.exports = function(data, callback){
data.read({cache: true}, next);
},
post: ['stat', 'read', function(next, results){
try {
var stat = results.stat,
meta = yfm(results.read);
var stat = results.stat,
meta = yfm(results.read);

meta.content = meta._content;
delete meta._content;
meta.content = meta._content;
delete meta._content;

meta.source = data.path;
meta.raw = results.read;
meta.slug = escape(path.match(rBasename)[3]);
meta.source = data.path;
meta.raw = results.read;
meta.slug = escape(path.match(rBasename)[3]);

var filenameInfo = getInfoFromFilename(path);
var filenameInfo = getInfoFromFilename(path);

if (filenameInfo && filenameInfo.title) meta.slug = filenameInfo.title;
if (filenameInfo && filenameInfo.title) meta.slug = filenameInfo.title;

if (meta.date){
if (!(meta.date instanceof Date)){
meta.date = moment(meta.date, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
if (filenameInfo && filenameInfo.year && (filenameInfo.month || filenameInfo.i_month) && (filenameInfo.day || filenameInfo.i_day)){
meta.date = new Date(
filenameInfo.year,
parseInt(filenameInfo.month || filenameInfo.i_month, 10) - 1,
parseInt(filenameInfo.day || filenameInfo.i_day, 10)
);
} else {
meta.date = stat.ctime;
}
if (meta.date){
if (!(meta.date instanceof Date)){
meta.date = moment(meta.date, 'YYYY-MM-DD HH:mm:ss').toDate();
}

if (meta.updated){
if (!(meta.updated instanceof Date)){
meta.updated = moment(meta.updated, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
if (filenameInfo && filenameInfo.year && (filenameInfo.month || filenameInfo.i_month) && (filenameInfo.day || filenameInfo.i_day)){
meta.date = new Date(
filenameInfo.year,
parseInt(filenameInfo.month || filenameInfo.i_month, 10) - 1,
parseInt(filenameInfo.day || filenameInfo.i_day, 10)
);
} else {
meta.updated = stat.mtime;
meta.date = stat.ctime;
}
}

if (meta.permalink){
var link = meta.slug = escape(meta.permalink);
if (!pathFn.extname(link) && link[link.length - 1] !== '/') link += '/';
delete meta.permalink;
if (meta.updated){
if (!(meta.updated instanceof Date)){
meta.updated = moment(meta.updated, 'YYYY-MM-DD HH:mm:ss').toDate();
}
} else {
meta.updated = stat.mtime;
}

if (meta.category){
meta.categories = meta.category;
delete meta.category;
}
if (meta.permalink){
var link = meta.slug = escape(meta.permalink);
if (!pathFn.extname(link) && link[link.length - 1] !== '/') link += '/';
delete meta.permalink;
}

if (meta.categories && !Array.isArray(meta.categories)){
meta.categories = [meta.categories];
}
if (meta.category){
meta.categories = meta.category;
delete meta.category;
}

if (meta.tag){
meta.tags = meta.tag;
delete meta.tag;
}
if (meta.categories && !Array.isArray(meta.categories)){
meta.categories = [meta.categories];
}

if (meta.tags && !Array.isArray(meta.tags)){
meta.tags = [meta.tags];
}
if (meta.tag){
meta.tags = meta.tag;
delete meta.tag;
}

if (meta.photo){
meta.photos = meta.photo;
delete meta.photo;
}
if (meta.tags && !Array.isArray(meta.tags)){
meta.tags = [meta.tags];
}

if (meta.photos && !Array.isArray(meta.photos)){
meta.photos = [meta.photos];
}
if (meta.photo){
meta.photos = meta.photo;
delete meta.photo;
}

if (meta.link && !meta.title){
meta.title = meta.link
.replace(/^https?:\/\//, '')
.replace(/\/$/, '');
}
} catch (e){
return next(e);
if (meta.photos && !Array.isArray(meta.photos)){
meta.photos = [meta.photos];
}

if (meta.link && !meta.title){
meta.title = meta.link
.replace(/^https?:\/\//, '')
.replace(/\/$/, '');
}

hexo.post.render(data.source, meta, function(err, meta){
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
"lib": "./lib",
"bin": "./bin"
},
"engines": {
"node": ">= 0.8"
},
"repository": {
"type": "git",
"url": "git://github.com/tommy351/hexo.git"
Expand Down

0 comments on commit 7b96380

Please sign in to comment.