47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
/*! Inspired by: http://aboutcode.net/2010/11/11/list-github-projects-using-javascript.html */
|
|
|
|
/* jshint jquery:true */
|
|
|
|
"use strict";
|
|
|
|
// htmlEntities taken from http://css-tricks.com/snippets/javascript/htmlentities-for-javascript/
|
|
function htmlEntities(str) {
|
|
return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
}
|
|
|
|
jQuery.fn.listCommits = function(username, repository, branch) {
|
|
this.html("<span>Querying GitHub for recent commits…</span>");
|
|
|
|
var target = this;
|
|
$.getJSON("https://api.github.com/repos/" + username + "/" + repository + "/commits?sha=" + branch + "&callback=?", function(response) {
|
|
var commits = response.data;
|
|
var list = $("<ul class='rssfeeditems'/>");
|
|
|
|
target.empty().append(list);
|
|
|
|
$(commits).each(function(i) {
|
|
var githubUrl = "https://github.com/" + username + "/" + repository + "/commit/" + this.sha;
|
|
var shortMessage = htmlEntities(cutLines(this.commit.message));
|
|
|
|
if (this.author !== null) {
|
|
list.append("<li><a href='" + githubUrl + "'>" + shortMessage + "</a> <em>by <strong><a class='author' href='" + "https://github.com/" + this.author.login + "'>" + this.author.login + "</a></strong></em></li>");
|
|
} else {
|
|
list.append("<li><a href='" + githubUrl + "'>" + shortMessage + "</a> <em>by <strong>" + this.commit.author.name + "</strong></em></li>");
|
|
}
|
|
|
|
if (i === 9) {
|
|
return false;
|
|
}
|
|
});
|
|
});
|
|
|
|
function cutLines(message) {
|
|
var lineFeed = message.indexOf("\n");
|
|
|
|
if (lineFeed > -1) {
|
|
return message.slice(0, lineFeed);
|
|
}
|
|
return message;
|
|
}
|
|
};
|