/*! * @mekwall's .vangogh() for Syntax Highlighting * * All code is open source and dual licensed under GPL and MIT. * Check the individual licenses for more information. * https://github.com/mekwall/jquery-vangogh/blob/master/GPL-LICENSE.txt * https://github.com/mekwall/jquery-vangogh/blob/master/MIT-LICENSE.txt */ (function($,a,b){var c=1,d=!1,e=!1,f={get:function(b){var c=a.location.hash;if(c.length>0){var d=c.match(new RegExp(b+":{([a-zA-Z0-9,-]*)}"));if(d)return d[1].split(",")}return[]},set:function(b,c){var d=a.location.hash,e,f=b+":{"+c.join(",")+"}",g=d.indexOf(b+":{");if(c.length===0)return this.remove(b);g!==-1?e=d.replace(new RegExp("("+b+":{[a-zA-Z0-9,-]*})"),f):e=d.length>0?d+","+f:f,a.location.hash=e},remove:function(b){a.location.hash=a.location.hash.replace(new RegExp("([,]?"+b+":{[a-zA-Z0-9,-]*}[,]?)"),"")}},g={numberRange:/^([0-9]+)-([0-9]+)$/,pageNumber:/-([0-9]+)$/,multilineBegin:/(?:.[^<]*(?!<\/span>)|)$/ig,multilineEnd:/()?(?:.[^<]*)?(<\/span>)/ig};$.fn.vanGogh=function(h){function n(){if(d||e)setTimeout(n,100);else{k++;if(k>=10)return;if(h.source&&!l){e=!0,$.ajax({url:h.source,crossDomain:!0,dataType:"text",success:function(a){l=a},error:function(a,b){l="ERROR: "+b},complete:function(){e=!1,n()}});return}b=b||a.hljs;if(!b){d=!0,$.getScript(h.autoload,function(){d=!1,n()});return}j.filter("pre,code").each(function(){function r(b,c,e){var h=!1,i=a.find(".vg-line");c&&(a.find(".vg-highlight").removeClass("vg-highlight"),f.remove(d),k=[]),b=$.type(b)==="array"?b:[b],$.each(b,function(b,c){if(k.indexOf(c)<=-1){!isNaN(parseFloat(c,10))&&isFinite(c)&&(c=parseInt(c,10));if($.type(c)==="string"){var e=g.numberRange.exec(c);if(e){var f=e[1],h=e[2],j="";for(var b=f;b<=h;b++)j+=",#"+d+"-"+b,k.push(b);i.filter(j.substring(1)).addClass("vg-highlight")}else a.find(".vg-line:contains("+c+")").each(function(){var a=$(this).addClass("vg-highlight");a.html(a.html().replace(c,''+c+""))}),k.push(c)}else{var l=d+"-"+this,m=i.filter("#"+l);m.length&&(m.addClass("vg-highlight"),k.push(c))}}}),!e&&f.set(d,k)}var a=$(this).addClass("vg-container").attr("id",this.id||"vg-"+c++),d=this.id,e=a.find("code"),i=!1,j=!1,k=[];e.length||(e=a,i=!0),h.source&&l&&e.text(l);var n=e.text();b.highlightBlock(e[0],h.tab);var o=e.html().split("\n"),p="",q="";if(!i){var s={},t=0;$.each(o,function(a,b){var c=a+h.firstLine,e=d+"-"+c,f=b;h.numbers&&(p+=''+c+"");if(s[t]){var i=g.multilineEnd.exec(b);i&&!i[1]?(f=''+f,delete s[t],t--):f=''+f+""}var j=g.multilineBegin.exec(b);j&&(t++,s[t]=j[1]),q+='
'+f+"
"}),q=''+q+"",h.numbers&&(q='
'+p+"
"+q),a.html(q),e=a.find("code"),a.find(".vg-number").click(function(b){var c=$(this),e=c.attr("rel"),h=a.find(e);if(h.hasClass("vg-highlight")){h.removeClass("vg-highlight"),k.splice(k.indexOf(c.text()),1),f.set(d,k),j=!1;return!1}var i=j;j=parseInt(g.pageNumber.exec(e)[1],10),b.shiftKey&&j?r(iv){if(this.scrollLeft0){var y=a.find(".vg-line").height(),z=parseInt(e.css("paddingTop")),A=y*(h.maxLines+1)+z;a.css({minHeight:y+z,maxHeight:A})}h.highlight&&r(h.highlight,!0,!0);var B=f.get(d);B.length&&r(B,!1,!0)})}}function m(b){var c=a,d=a.document;if(d.body.createTextRange){var e=d.body.createTextRange();e.moveToElementText(b),e.select()}else if(d.createRange){var f=c.getSelection(),e=d.createRange();e.selectNodeContents(b),f.removeAllRanges(),f.addRange(e)}}var i={language:"auto",firstLine:1,maxLines:0,numbers:!0,highlight:null,animateGutter:!0,autoload:"http://softwaremaniacs.org/media/soft/highlight/highlight.pack.js",tab:" "};h=$.extend({},i,h);var j=this,k=0,l;n();return j}})(jQuery,this,typeof this.hljs!="undefined"?this.hljs:!1); /*! * Repo.js * @author Darcy Clarke * * Copyright (c) 2012 Darcy Clarke * Dual licensed under the MIT and GPL licenses. * http://darcyclarke.me/ */ (function($){ // Github repo $.fn.repo = function( options ){ // Context and Base64 methods var _this = this, keyStr64 = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv" + "wxyz0123456789+/" + "=", encode64 = function(a){a=escape(a);var b="";var c,d,e="";var f,g,h,i="";var j=0;do{c=a.charCodeAt(j++);d=a.charCodeAt(j++);e=a.charCodeAt(j++);f=c>>2;g=(c&3)<<4|d>>4;h=(d&15)<<2|e>>6;i=e&63;if(isNaN(d)){h=i=64}else if(isNaN(e)){i=64}b=b+keyStr64.charAt(f)+keyStr64.charAt(g)+keyStr64.charAt(h)+keyStr64.charAt(i);c=d=e="";f=g=h=i=""}while(j>4;d=(g&15)<<4|h>>2;e=(h&3)<<6|i;b=b+String.fromCharCode(c);if(h!=64){b=b+String.fromCharCode(d)}if(i!=64){b=b+String.fromCharCode(e)}c=d=e="";f=g=h=i=""}while(j').html(_this.settings.css)); // Query Github Tree API $.ajax({ url: 'https://api.github.com/repos/' + _this.settings.user + '/' + _this.settings.name + '/git/trees/' + _this.settings.branch + '?recursive=1', type: 'GET', data: {}, dataType: 'jsonp', success: function(response){ var treeLength = response.data.tree.length; $.each(response.data.tree, function(i){ // Setup if last element if(!--treeLength){ _this.container.addClass('loaded'); // Add 10ms timeout here as some browsers require a bit of time before calculating height. setTimeout( function(){ transition(_this.container.find('.page').first(), 'left', true); }, 10 ); } // Return if data is not a file if(this.type != 'blob') return; // Setup defaults var first = _this.container.find('.page').first() ctx = _this.repo, output = first, path = this.path, arr = path.split('/'), file = arr[(arr.length - 1)], id = ''; // Remove file from array arr = arr.slice(0,-1); id = _this.namespace; // Loop through folders $.each(arr, function(i){ var name = String(this), index = 0, exists = false; id = id + '_split_' + name.replace('.','_dot_'); // Loop through folders and check names $.each(ctx.folders, function(i){ if(this.name == name){ index = i; exists = true; } }); // Create folder if it doesn't exist if(!exists){ // Append folder to DOM if(output !== first){ output.find('ul li.back').after($('
  • ' + name +'
  • ')); } else { output.find('ul li').first().after($('
  • ' + name +'
  • ')); } // Add folder to repo object ctx.folders.push({ name : name, folders : [], files : [], element : $('
    ').appendTo(_this.container)[0] }); index = ctx.folders.length-1; } // Change context & output to the proper folder output = $(ctx.folders[index].element); ctx = ctx.folders[index]; }); // Append file to DOM output.find('ul').append($('
  • ' + file +'
  • ')); // Add file to the repo object ctx.files.push(file); }); // Bind to page links _this.container.on('click', 'a', function(e){ e.preventDefault(); var link = $(this), parent = link.parents('li'), page = link.parents('.page'), repo = link.parents('.repo'), el = $('#' + link.data('id')); // Is link a file if(parent.hasClass('file')){ el = $('#' + link.data('id')); if(el.legnth > 0){ el.addClass('active'); } else { $.ajax({ url: 'https://api.github.com/repos/' + _this.settings.user + '/' + _this.settings.name + '/contents/' + link.data('path') + '?ref=' + _this.settings.branch, type: 'GET', data: {}, dataType: 'jsonp', success: function(response){ var fileContainer = $('
    '), extension = response.data.name.split('.').pop().toLowerCase(), mimeType = getMimeTypeByExtension(extension); if('image' === mimeType.split('/').shift()){ el = fileContainer.append($('
    ')).appendTo(repo); el.find('img') .attr('src', 'data:' + mimeType + ';base64,' + response.data.content) .attr('alt', response.data.name); } else { el = fileContainer.append($('
    ')).appendTo(repo); if(typeof _this.extensions[extension] != 'undefined') el.find('code').addClass(_this.extensions[extension]); el.find('code').html(String(decode64(response.data.content)).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"')); el.find('pre').vanGogh(); } transition(el, 'left'); }, error: function(response){ if(console && console.log) console.log('Request Error:', e); } }); } // Is link a folder } else if(parent.hasClass('dir')) { _this.container .find('h1') .find('.active') .removeClass('active') .end() .append('' + link.text() + ''); transition(el, 'left'); // Is link a back link } else if(parent.hasClass('back')){ _this.container.find('h1 a').last().remove(); el = page[0].id.split('_split_').slice(0,-1).join('_split_'); el = (el == _this.namespace) ? _this.container.find('.page').first() : $('#' + el); transition(el, 'right'); // Is nav link } else { el = el.length ? el : _this.container.find('.page').eq(link.index()); if(link[0] !== _this.container.find('h1 a')[0]) link.addClass('active'); _this.container.find('h1 a').slice((link.index()+1),_this.container.find('h1 a').length).remove(); transition(el, 'right'); } }); }, error : function(response){ if(console && console.log) console.log('Request Error:', response); } }); // Setup repo container return this.each(function(){ _this.container = $('').appendTo($(this)); }); }; })(jQuery);