mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-06 13:47:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @overview This plugin creates a summary tag, if missing, from the first sentence in the
|
||||
* description.
|
||||
* @module plugins/summarize
|
||||
* @author Mads Bondo Dydensborg <mbd@dbc.dk>
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
exports.handlers = {
|
||||
/**
|
||||
* Autogenerate summaries, if missing, from the description, if present.
|
||||
*/
|
||||
newDoclet: function(e) {
|
||||
var endTag;
|
||||
var tags;
|
||||
var stack;
|
||||
|
||||
// If the summary is missing, grab the first sentence from the description
|
||||
// and use that.
|
||||
if (e.doclet && !e.doclet.summary && e.doclet.description) {
|
||||
// The summary may end with `.$`, `. `, or `.<` (a period followed by an HTML tag).
|
||||
e.doclet.summary = e.doclet.description.split(/\.$|\.\s|\.</)[0];
|
||||
// Append `.` as it was removed in both cases, or is possibly missing.
|
||||
e.doclet.summary += '.';
|
||||
|
||||
// This is an excerpt of something that is possibly HTML.
|
||||
// Balance it using a stack. Assume it was initially balanced.
|
||||
tags = e.doclet.summary.match(/<[^>]+>/g) || [];
|
||||
stack = [];
|
||||
|
||||
tags.forEach(function(tag) {
|
||||
var idx = tag.indexOf('/');
|
||||
|
||||
if (idx === -1) {
|
||||
// start tag -- push onto the stack
|
||||
stack.push(tag);
|
||||
} else if (idx === 1) {
|
||||
// end tag -- pop off of the stack
|
||||
stack.pop();
|
||||
}
|
||||
|
||||
// otherwise, it's a self-closing tag; don't modify the stack
|
||||
});
|
||||
|
||||
// stack should now contain only the start tags that lack end tags,
|
||||
// with the most deeply nested start tag at the top
|
||||
while (stack.length > 0) {
|
||||
// pop the unmatched tag off the stack
|
||||
endTag = stack.pop();
|
||||
// get just the tag name
|
||||
endTag = endTag.substring(1, endTag.search(/[ >]/));
|
||||
// append the end tag
|
||||
e.doclet.summary += '</' + endTag + '>';
|
||||
}
|
||||
|
||||
// and, finally, if the summary starts and ends with a <p> tag, remove it; let the
|
||||
// template decide whether to wrap the summary in a <p> tag
|
||||
e.doclet.summary = e.doclet.summary.replace(/^<p>(.*)<\/p>$/i, '$1');
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user