/* * author: Blair Vanderhoof * https://github.com/blairvanderhoof/gist-embed * version 2.6.0 */ (function($) { 'use strict'; function getLineNumbers(lineRangeString) { var lineNumbers = [], range, lineNumberSections; if (typeof lineRangeString === 'number') { lineNumbers.push(lineRangeString); } else { lineNumberSections = lineRangeString.split(','); for (var i = 0; i < lineNumberSections.length; i++) { range = lineNumberSections[i].split('-'); if (range.length === 2) { for (var j = parseInt(range[0], 10); j <= range[1]; j++) { lineNumbers.push(j); } } else if (range.length === 1) { lineNumbers.push(parseInt(range[0], 10)); } } } return lineNumbers; } //object to cache the calls made to the same gist-id var gistCache = {}; $.fn.gist = function(callback) { return this.each(function() { var $elem = $(this), id, url, file, lines, linesExpanded, loading, highlightLines, hideFooterOption, hideLineNumbersOption, showLoading, showSpinner, enableCache, data = {}; // make block level so loading text shows properly $elem.css('display', 'block'); id = $elem.data('gist-id') || ''; file = $elem.data('gist-file'); hideFooterOption = $elem.data('gist-hide-footer') === true; hideLineNumbersOption = $elem.data('gist-hide-line-numbers') === true; lines = $elem.data('gist-line'); linesExpanded = $elem.data('gist-lines-expanded'); highlightLines = $elem.data('gist-highlight-line'); showSpinner = $elem.data('gist-show-spinner') === true; if (showSpinner) { showLoading = false; } else { showLoading = $elem.data('gist-show-loading') !== undefined ? $elem.data('gist-show-loading') : true; } if (file) { data.file = file; } // if the id doesn't exist, then ignore the code block if (!id) { return false; } url = 'https://gist.github.com/' + id + '.json'; enableCache = $elem.data('gist-enable-cache') === true || gistCache[url]; loading = 'Loading gist ' + url + (data.file ? ', file: ' + data.file : '') + '...'; // loading if (showLoading) { $elem.html(loading); } // loading spinner if (showSpinner) { $elem.html(''); } function successCallback(response) { var linkTag, head, lineNumbers, highlightLineNumbers, $responseDiv; // the html payload is in the div property if (response && response.div) { // github returns /assets/embed-id.css now, but let's be sure about that if (response.stylesheet) { // github passes down html instead of a url for the stylehsheet now // parse off the href if (response.stylesheet.indexOf(''); collapsibleIcon.attr('lines', block.join()) .css({ 'display': 'block', 'cursor': 'pointer' }) .html(svg) .on('click', function(event) { event.preventDefault(); $(this).closest('tr').remove(); var that = $(this); $('table.highlight').find('tr:hidden td[data-line-number]').each(function(index, element) { lines = that.attr('lines').split(','); if (($.inArray($(element).attr('data-line-number'), lines)) === -1) { return true; } $(element).parent().show(); }); }); var lineNumberElement = $('