'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; }; |