site-tpe/EnlighterJS/Source/Renderer/InlineRenderer.js
2025-05-16 18:49:08 +02:00

52 lines
1.3 KiB
JavaScript

/*
---
description: Compiles an array of tokens into inline elements, grabbed into a outer container.
license: MIT-style X11
authors:
- Andi Dittrich
requires:
- Core/1.4.5
provides: [EnlighterJS.Renderer.InlineRenderer]
...
*/
EJS.Renderer.InlineRenderer = new Class({
Implements: Options,
options : {
inlineContainerTag : 'span'
},
textFilter: null,
initialize : function(options, textFilter){
this.setOptions(options);
this.textFilter = textFilter;
},
/**
* Renders the generated Tokens
*
* @param {Language} language The Language used when parsing.
* @param {SpecialLineHighlighter} specialLines Instance to define the lines to highlight
* @return {Element} The renderer output
*/
render : function(language, specialLines, localOptions){
// create output container element
var container = new EJS.Dom.Element(this.options.inlineContainerTag);
// generate output based on ordered list of tokens
language.getTokens().each(function(token, index){
// create new inline element which contains the token - htmlspecialchars get escaped by mootools setText !
container.grab(new EJS.Dom.Element('span', {
'class': token.alias,
'text': this.textFilter.filterOutput(token.text)
}));
}, this);
return container;
}
});