Skip to content

Commit 7f0742e

Browse files
authored
correct styling
1 parent 16aa813 commit 7f0742e

File tree

1 file changed

+144
-160
lines changed

1 file changed

+144
-160
lines changed

lib/hexo/post.js

Lines changed: 144 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ Post.prototype.create = function(data, replace, callback) {
4242
var ctx = this.context;
4343
var config = ctx.config;
4444

45-
data.slug = slugize((data.slug || data.title).toString(), { transform: config.filename_case });
45+
data.slug = slugize((data.slug || data.title).toString(), {transform: config.filename_case});
4646
data.layout = (data.layout || config.default_layout).toLowerCase();
4747
data.date = data.date ? moment(data.date) : moment();
4848

@@ -53,25 +53,21 @@ Post.prototype.create = function(data, replace, callback) {
5353
context: ctx
5454
}),
5555
this._renderScaffold(data)
56-
])
57-
.spread(function(path, content) {
58-
var result = {
59-
path: path,
60-
content: content
61-
};
62-
63-
return Promise.all([
64-
// Write content to file
65-
fs.writeFile(path, content),
66-
// Create asset folder
67-
createAssetFolder(path, config.post_asset_folder)
68-
])
69-
.then(function() {
70-
ctx.emit('new', result);
71-
})
72-
.thenReturn(result);
73-
})
74-
.asCallback(callback);
56+
]).spread(function(path, content) {
57+
var result = {
58+
path: path,
59+
content: content
60+
};
61+
62+
return Promise.all([
63+
// Write content to file
64+
fs.writeFile(path, content),
65+
// Create asset folder
66+
createAssetFolder(path, config.post_asset_folder)
67+
]).then(function() {
68+
ctx.emit('new', result);
69+
}).thenReturn(result);
70+
}).asCallback(callback);
7571
};
7672

7773
function prepareFrontMatter(data) {
@@ -108,54 +104,52 @@ Post.prototype._renderScaffold = function(data) {
108104
var tag = this.context.extend.tag;
109105
var yfmSplit;
110106

111-
return this._getScaffold(data.layout)
112-
.then(function(scaffold) {
113-
var frontMatter = prepareFrontMatter(_.clone(data));
114-
yfmSplit = yfm.split(scaffold);
115-
116-
return tag.render(yfmSplit.data, frontMatter);
117-
})
118-
.then(function(frontMatter) {
119-
var separator = yfmSplit.separator;
120-
var jsonMode = separator[0] === ';';
121-
var content = '';
122-
var obj;
123-
124-
// Parse front-matter
125-
if (jsonMode) {
126-
obj = JSON.parse('{' + frontMatter + '}');
127-
} else {
128-
obj = yaml.load(frontMatter);
129-
}
107+
return this._getScaffold(data.layout).then(function(scaffold) {
108+
var frontMatter = prepareFrontMatter(_.clone(data));
109+
yfmSplit = yfm.split(scaffold);
110+
111+
return tag.render(yfmSplit.data, frontMatter);
112+
}).then(function(frontMatter) {
113+
var separator = yfmSplit.separator;
114+
var jsonMode = separator[0] === ';';
115+
var content = '';
116+
var obj;
117+
118+
// Parse front-matter
119+
if (jsonMode) {
120+
obj = JSON.parse('{' + frontMatter + '}');
121+
} else {
122+
obj = yaml.load(frontMatter);
123+
}
130124

131-
// Add data which are not in the front-matter
132-
var keys = Object.keys(data);
133-
var key = '';
125+
// Add data which are not in the front-matter
126+
var keys = Object.keys(data);
127+
var key = '';
134128

135-
for (var i = 0, len = keys.length; i < len; i++) {
136-
key = keys[i];
129+
for (var i = 0, len = keys.length; i < len; i++) {
130+
key = keys[i];
137131

138-
if (!preservedKeys[key] && obj[key] == null) {
139-
obj[key] = data[key];
140-
}
132+
if (!preservedKeys[key] && obj[key] == null) {
133+
obj[key] = data[key];
141134
}
135+
}
142136

143-
// Prepend the separator
144-
if (yfmSplit.prefixSeparator) content += separator + '\n';
137+
// Prepend the separator
138+
if (yfmSplit.prefixSeparator) content += separator + '\n';
145139

146-
content += yfm.stringify(obj, {
147-
mode: jsonMode ? 'json' : ''
148-
});
140+
content += yfm.stringify(obj, {
141+
mode: jsonMode ? 'json' : ''
142+
});
149143

150-
// Concat content
151-
content += yfmSplit.content;
144+
// Concat content
145+
content += yfmSplit.content;
152146

153-
if (data.content) {
154-
content += '\n' + data.content;
155-
}
147+
if (data.content) {
148+
content += '\n' + data.content;
149+
}
156150

157-
return content;
158-
});
151+
return content;
152+
});
159153
};
160154

161155
function createAssetFolder(path, assetFolder) {
@@ -183,7 +177,7 @@ Post.prototype.publish = function(data, replace, callback) {
183177
var ctx = this.context;
184178
var config = ctx.config;
185179
var draftDir = pathFn.join(ctx.source_dir, '_drafts');
186-
var slug = (data.slug = slugize(data.slug.toString(), { transform: config.filename_case }));
180+
var slug = data.slug = slugize(data.slug.toString(), {transform: config.filename_case});
187181
var regex = new RegExp('^' + escapeRegExp(slug) + '(?:[^\\/\\\\]+)');
188182
var self = this;
189183
var src = '';
@@ -192,55 +186,47 @@ Post.prototype.publish = function(data, replace, callback) {
192186
data.layout = (data.layout || config.default_layout).toLowerCase();
193187

194188
// Find the draft
195-
return fs
196-
.listDir(draftDir)
197-
.then(function(list) {
198-
var item = '';
199-
200-
for (var i = 0, len = list.length; i < len; i++) {
201-
item = list[i];
202-
if (regex.test(item)) return item;
203-
}
204-
})
205-
.then(function(item) {
206-
if (!item) throw new Error('Draft "' + slug + '" does not exist.');
207-
208-
// Read the content
209-
src = pathFn.join(draftDir, item);
210-
return fs.readFile(src);
211-
})
212-
.then(function(content) {
213-
// Create post
214-
_.extend(data, yfm(content));
215-
data.content = data._content;
216-
delete data._content;
217-
218-
return self.create(data, replace).then(function(post) {
219-
result.path = post.path;
220-
result.content = post.content;
221-
});
222-
})
223-
.then(function() {
224-
// Remove the original draft file
225-
return fs.unlink(src);
226-
})
227-
.then(function() {
228-
if (!config.post_asset_folder) return;
229-
230-
// Copy assets
231-
var assetSrc = removeExtname(src);
232-
var assetDest = removeExtname(result.path);
233-
234-
return fs.exists(assetSrc).then(function(exist) {
235-
if (!exist) return;
236-
237-
return fs.copyDir(assetSrc, assetDest).then(function() {
238-
return fs.rmdir(assetSrc);
239-
});
189+
return fs.listDir(draftDir).then(function(list) {
190+
var item = '';
191+
192+
for (var i = 0, len = list.length; i < len; i++) {
193+
item = list[i];
194+
if (regex.test(item)) return item;
195+
}
196+
}).then(function(item) {
197+
if (!item) throw new Error('Draft "' + slug + '" does not exist.');
198+
199+
// Read the content
200+
src = pathFn.join(draftDir, item);
201+
return fs.readFile(src);
202+
}).then(function(content) {
203+
// Create post
204+
_.extend(data, yfm(content));
205+
data.content = data._content;
206+
delete data._content;
207+
208+
return self.create(data, replace).then(function(post) {
209+
result.path = post.path;
210+
result.content = post.content;
211+
});
212+
}).then(function() {
213+
// Remove the original draft file
214+
return fs.unlink(src);
215+
}).then(function() {
216+
if (!config.post_asset_folder) return;
217+
218+
// Copy assets
219+
var assetSrc = removeExtname(src);
220+
var assetDest = removeExtname(result.path);
221+
222+
return fs.exists(assetSrc).then(function(exist) {
223+
if (!exist) return;
224+
225+
return fs.copyDir(assetSrc, assetDest).then(function() {
226+
return fs.rmdir(assetSrc);
240227
});
241-
})
242-
.thenReturn(result)
243-
.asCallback(callback);
228+
});
229+
}).thenReturn(result).asCallback(callback);
244230
};
245231

246232
Post.prototype.render = function(source, data, callback) {
@@ -251,12 +237,17 @@ Post.prototype.render = function(source, data, callback) {
251237
var cache = [];
252238
var tag = ctx.extend.tag;
253239
var ext = data.engine || (source ? pathFn.extname(source) : '');
240+
254241
var isSwig = ext === 'swig';
255242

256243
var disableNunjucks = false;
244+
257245
if (ext && ctx.render.renderer.get(ext)) {
258-
// disable disableNunjucks when the renderer spcify that.
246+
247+
// disable Nunjucks when the renderer spcify that.
248+
259249
disableNunjucks = disableNunjucks || !!ctx.render.renderer.get(ext).disableNunjucks;
250+
260251
}
261252

262253
function escapeContent(str) {
@@ -281,61 +272,54 @@ Post.prototype.render = function(source, data, callback) {
281272

282273
// Read content from files
283274
fs.readFile(source).then(resolve, reject);
284-
})
285-
.then(function(content) {
286-
data.content = content;
287-
288-
// Run "before_post_render" filters
289-
return ctx.execFilter('before_post_render', data, { context: ctx }).then(function() {
290-
data.content = data.content.replace(rEscapeContent, function(match, content) {
291-
return escapeContent(content);
292-
});
275+
}).then(function(content) {
276+
data.content = content;
277+
278+
// Run "before_post_render" filters
279+
return ctx.execFilter('before_post_render', data, {context: ctx}).then(function() {
280+
data.content = data.content.replace(rEscapeContent, function(match, content) {
281+
return escapeContent(content);
293282
});
294-
})
295-
.then(function() {
296-
// Skip rendering if this is a swig file
297-
if (isSwig) return data.content;
298-
299-
// Escape all Swig tags
300-
if (!disableNunjucks) {
301-
data.content = data.content
302-
.replace(rSwigFullBlock, escapeContent)
303-
.replace(rSwigBlock, escapeContent)
304-
.replace(rSwigComment, '')
305-
.replace(rSwigVar, escapeContent);
306-
}
283+
});
284+
}).then(function() {
285+
// Skip rendering if this is a swig file
286+
if (isSwig) return data.content;
287+
288+
// Escape all Swig tags
289+
if (!disableNunjucks) {
290+
data.content = data.content
291+
.replace(rSwigFullBlock, escapeContent)
292+
.replace(rSwigBlock, escapeContent)
293+
.replace(rSwigComment, '')
294+
.replace(rSwigVar, escapeContent);
295+
}
307296

308-
var options = data.markdown || {};
309-
if (!config.highlight.enable) options.highlight = null;
310-
311-
// Render with markdown or other renderer
312-
return ctx.render.render(
313-
{
314-
text: data.content,
315-
path: source,
316-
engine: data.engine,
317-
toString: true,
318-
onRenderEnd: tagFilter
319-
},
320-
options
321-
);
322-
})
323-
.then(function(content) {
324-
data.content = content;
325-
326-
if (!isSwig) {
327-
return data.content;
328-
}
297+
var options = data.markdown || {};
298+
if (!config.highlight.enable) options.highlight = null;
299+
300+
// Render with markdown or other renderer
301+
return ctx.render.render({
302+
text: data.content,
303+
path: source,
304+
engine: data.engine,
305+
toString: true,
306+
onRenderEnd: tagFilter
307+
}, options);
308+
}).then(function(content) {
309+
data.content = content;
329310

330-
// Render with Nunjucks
331-
return tag.render(data.content, data);
332-
})
333-
.then(function(content) {
334-
data.content = content;
311+
if (!isSwig) {
312+
return data.content;
313+
}
335314

336-
// Run "after_post_render" filters
337-
return ctx.execFilter('after_post_render', data, { context: ctx });
338-
});
315+
// Render with Nunjucks
316+
return tag.render(data.content, data);
317+
}).then(function(content) {
318+
data.content = content;
319+
320+
// Run "after_post_render" filters
321+
return ctx.execFilter('after_post_render', data, {context: ctx});
322+
});
339323
};
340324

341325
module.exports = Post;

0 commit comments

Comments
 (0)