'use strict'; Ox.SourceViewer = function(options, self) { self = self || {}; var that = Ox.Container({}, self) .defaults({ file: '', replaceCode: [], replaceComment: [], }) .options(options) .addClass('OxSourceViewer'); self.options.replaceComment.unshift( // removes indentation inside
tags
[
/([\s\S]+)<\/pre>/g,
function(pre, text) {
var lines = trim(text).split('\n'),
indent = Ox.min(lines.map(function(line) {
var match = line.match(/^\s+/);
return match ? match[0].length : 0;
}));
return '' + lines.map(function(line) {
return line.substr(indent);
}).join('\n') + '';
}
]
);
self.$table = $('| ') .addClass('OxComment OxSerif') .html(trim(section.comment)) .appendTo($section), $code = $(' | ') .addClass('OxCode') .append( Ox.SyntaxHighlighter({ replace: self.options.replaceCode, source: trim(section.code) }) ) .appendTo($section); }); }); function trim(str) { // removes leading or trailing empty line return str.replace(/^\s*\n/, '').replace(/\n\s*$/, ''); } return that; }; |