Merge pull request #2101 from ether/preProcessDomLine

preprocessor for domline attributes
This commit is contained in:
John McLear 2014-03-11 17:44:56 +00:00
commit 26869d29b3
2 changed files with 33 additions and 11 deletions

View File

@ -10,6 +10,22 @@ nothing
This hook proxies the functionality of jQuery's `$(document).ready` event. This hook proxies the functionality of jQuery's `$(document).ready` event.
## aceDomLinePreProcessLineAttributes
Called from: src/static/js/domline.js
Things in context:
1. domline - The current DOM line being processed
2. cls - The class of the current block element (useful for styling)
This hook is called for elements in the DOM that have the "lineMarkerAttribute" set. You can add elements into this category with the aceRegisterBlockElements hook above. This hook is run BEFORE the numbered and ordered lists logic is applied.
The return value of this hook should have the following structure:
`{ preHtml: String, postHtml: String, processedMarker: Boolean }`
The preHtml and postHtml values will be added to the HTML display of the element, and if processedMarker is true, the engine won't try to process it any more.
## aceDomLineProcessLineAttributes ## aceDomLineProcessLineAttributes
Called from: src/static/js/domline.js Called from: src/static/js/domline.js
@ -18,7 +34,7 @@ Things in context:
1. domline - The current DOM line being processed 1. domline - The current DOM line being processed
2. cls - The class of the current block element (useful for styling) 2. cls - The class of the current block element (useful for styling)
This hook is called for elements in the DOM that have the "lineMarkerAttribute" set. You can add elements into this category with the aceRegisterBlockElements hook above. This hook is called for elements in the DOM that have the "lineMarkerAttribute" set. You can add elements into this category with the aceRegisterBlockElements hook above. This hook is run AFTER the ordered and numbered lists logic is applied.
The return value of this hook should have the following structure: The return value of this hook should have the following structure:

View File

@ -101,6 +101,17 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument)
{ {
var listType = /(?:^| )list:(\S+)/.exec(cls); var listType = /(?:^| )list:(\S+)/.exec(cls);
var start = /(?:^| )start:(\S+)/.exec(cls); var start = /(?:^| )start:(\S+)/.exec(cls);
_.map(hooks.callAll("aceDomLinePreProcessLineAttributes", {
domline: domline,
cls: cls
}), function(modifier)
{
preHtml += modifier.preHtml;
postHtml += modifier.postHtml;
processedMarker |= modifier.processedMarker;
});
if (listType) if (listType)
{ {
listType = listType[1]; listType = listType[1];
@ -108,8 +119,8 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument)
{ {
if(listType.indexOf("number") < 0) if(listType.indexOf("number") < 0)
{ {
preHtml = '<ul class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>'; preHtml += '<ul class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>';
postHtml = '</li></ul>'; postHtml = '</li></ul>' + postHtml;
} }
else else
{ {
@ -117,16 +128,15 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument)
if(start[1] == 1){ // if its the first one at this level? if(start[1] == 1){ // if its the first one at this level?
lineClass = lineClass + " " + "list-start-" + listType; // Add start class to DIV node lineClass = lineClass + " " + "list-start-" + listType; // Add start class to DIV node
} }
preHtml = '<ol start='+start[1]+' class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>'; preHtml += '<ol start='+start[1]+' class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>';
}else{ }else{
preHtml = '<ol class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>'; // Handles pasted contents into existing lists preHtml += '<ol class="list-' + Security.escapeHTMLAttribute(listType) + '"><li>'; // Handles pasted contents into existing lists
} }
postHtml = '</li></ol>'; postHtml += '</li></ol>';
} }
} }
processedMarker = true; processedMarker = true;
} }
_.map(hooks.callAll("aceDomLineProcessLineAttributes", { _.map(hooks.callAll("aceDomLineProcessLineAttributes", {
domline: domline, domline: domline,
cls: cls cls: cls
@ -136,13 +146,10 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument)
postHtml += modifier.postHtml; postHtml += modifier.postHtml;
processedMarker |= modifier.processedMarker; processedMarker |= modifier.processedMarker;
}); });
if( processedMarker ){ if( processedMarker ){
result.lineMarker += txt.length; result.lineMarker += txt.length;
return; // don't append any text return; // don't append any text
} }
} }
var href = null; var href = null;
var simpleTags = null; var simpleTags = null;
@ -245,7 +252,6 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument)
{ {
return curHTML || ''; return curHTML || '';
}; };
return result; return result;
}; };