support wrap function in bbcode rules

This commit is contained in:
Sam 2017-06-30 12:21:01 -04:00
parent e9fcd348f2
commit a55e679563
1 changed files with 23 additions and 6 deletions

View File

@ -213,16 +213,33 @@ function applyBBCode(state, startLine, endLine, silent, md) {
let wrapTag;
if (rule.wrap) {
let token;
if (typeof rule.wrap === 'function') {
token = new state.Token('wrap_bbcode', 'div', 1);
token.level = state.level+1;
if (!rule.wrap(token, info)) {
return false;
}
state.tokens.push(token);
state.level = token.level;
wrapTag = token.tag;
} else {
let split = rule.wrap.split('.');
wrapTag = split[0];
let className = split.slice(1).join(' ');
let token = state.push('wrap_bbcode', wrapTag, 1);
token = state.push('wrap_bbcode', wrapTag, 1);
if (className) {
token.attrs = [['class', className]];
}
}
}
let lastToken = state.tokens[state.tokens.length-1];
lastToken.map = [ startLine, nextLine ];