/*
 * author: Blair Vanderhoof
 * https://github.com/blairvanderhoof/gist-embed
 * version 2.4
 */
(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;
  }
  $.fn.gist = function() {
    return this.each(function() {
      var $elem = $(this),
        id,
        url,
        file,
        lines,
        loading,
        highlightLines,
        hideFooterOption,
        hideLineNumbersOption,
        showLoading,
        showSpinner,
        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');
      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';
      loading = 'Loading gist ' + url + (data.file ? ', file: ' + data.file : '') + '...';
      // loading
      if (showLoading)  {
        $elem.html(loading);
      }
      // loading spinner
      if (showSpinner) {
        $elem.html(' ');
      }
      // request the json version of this gist
      $.ajax({
        url: url,
        data: data,
        dataType: 'jsonp',
        timeout: 10000,
        success: function(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('
');
      }
      // request the json version of this gist
      $.ajax({
        url: url,
        data: data,
        dataType: 'jsonp',
        timeout: 10000,
        success: function(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('