Brandon Mathis
13 years ago
14 changed files with 293 additions and 166 deletions
@ -0,0 +1 @@ |
|||
1.9.2-p290 |
@ -0,0 +1,3 @@ |
|||
plugins |
|||
sass |
|||
source |
@ -1,7 +1,8 @@ |
|||
{% if site.delicious_user %} |
|||
<section> |
|||
<h1>On Delicious</h1> |
|||
<script type="text/javascript" src="http://feeds.delicious.com/v2/js/{{ site.delicious_user }}?title=&count={{ site.delicious_count }}&sort=date&extended"></script> |
|||
<div id="delicious"></div> |
|||
<script type="text/javascript" src="http://feeds.delicious.com/v1/json/{{ site.delicious_user }}?count={{ site.delicious_count }}&sort=date&callback=renderDeliciousLinks"></script> |
|||
<p><a href="http://delicious.com/{{ site.delicious_user }}">My Delicious Bookmarks »</a></p> |
|||
</section> |
|||
{% endif %} |
|||
{% endif %} |
File diff suppressed because one or more lines are too long
@ -1,43 +1,39 @@ |
|||
github = (function(){ |
|||
function render(target, repos){ |
|||
var i = 0, fragment = '', t = $(target)[0]; |
|||
var github = (function(){ |
|||
function render(target, repos){ |
|||
var i = 0, fragment = '', t = $(target)[0]; |
|||
|
|||
for(i = 0; i < repos.length; i++) |
|||
fragment += '<li><a href="'+repos[i].url+'">'+repos[i].name+'</a><p>'+repos[i].description+'</p></li>'; |
|||
|
|||
t.innerHTML = fragment; |
|||
for(i = 0; i < repos.length; i++) { |
|||
fragment += '<li><a href="'+repos[i].url+'">'+repos[i].name+'</a><p>'+repos[i].description+'</p></li>'; |
|||
} |
|||
return { |
|||
showRepos: function(options){ |
|||
var feed = new jXHR(); |
|||
feed.onerror = function (msg,url) { |
|||
$(options.target + ' li.loading').addClass('error').text("Error loading feed"); |
|||
} |
|||
feed.onreadystatechange = function(data){ |
|||
if (feed.readyState === 4) { |
|||
var repos = []; |
|||
var i; |
|||
for (i = 0; i < data.repositories.length; i++){ |
|||
if (options.skip_forks && data.repositories[i].fork) |
|||
continue; |
|||
repos.push(data.repositories[i]); |
|||
} |
|||
repos.sort(function(a, b){ |
|||
var a = new Date(a.pushed_at), |
|||
b = new Date(b.pushed_at); |
|||
|
|||
if (a.valueOf() == b.valueOf()) return 0; |
|||
return a.valueOf() > b.valueOf() ? -1 : 1; |
|||
}); |
|||
t.innerHTML = fragment; |
|||
} |
|||
return { |
|||
showRepos: function(options){ |
|||
var feed = new jXHR(); |
|||
feed.onerror = function (msg,url) { |
|||
$(options.target + ' li.loading').addClass('error').text("Error loading feed"); |
|||
}; |
|||
feed.onreadystatechange = function(data) { |
|||
if (feed.readyState === 4) { |
|||
var repos = []; |
|||
for (var i = 0; i < data.repositories.length; i++){ |
|||
if (options.skip_forks && data.repositories[i].fork) { continue; } |
|||
repos.push(data.repositories[i]); |
|||
} |
|||
repos.sort(function(a, b) { |
|||
var aDate = new Date(a.pushed_at).valueOf(), |
|||
bDate = new Date(b.pushed_at).valueOf(); |
|||
|
|||
if (options.count) |
|||
repos.splice(options.count); |
|||
if (aDate === bDate) { return 0; } |
|||
return aDate > bDate ? -1 : 1; |
|||
}); |
|||
|
|||
render(options.target, repos) |
|||
} |
|||
}; |
|||
feed.open("GET","http://github.com/api/v2/json/repos/show/"+options.user+"?callback=?"); |
|||
feed.send(); |
|||
if (options.count) { repos.splice(options.count); } |
|||
render(options.target, repos); |
|||
} |
|||
}; |
|||
}; |
|||
feed.open("GET","http://github.com/api/v2/json/repos/show/"+options.user+"?callback=?"); |
|||
feed.send(); |
|||
} |
|||
}; |
|||
})(); |
@ -1,82 +1,75 @@ |
|||
// JSON-P Twitter fetcher for Octopress
|
|||
// (c) Brandon Mathis // MIT Lisence
|
|||
function getTwitterFeed(user, count, replies) { |
|||
var feed = new jXHR(); |
|||
|
|||
feed.onerror = function (msg,url) { |
|||
$('#tweets li.loading').addClass('error').text("Twitter's busted"); |
|||
} |
|||
feed.onreadystatechange = function(data){ |
|||
if (feed.readyState === 4) { |
|||
var tweets = new Array(); |
|||
var i = 0; |
|||
for (i in data){ |
|||
if(tweets.length < count){ |
|||
if(replies || data[i].in_reply_to_user_id == null){ |
|||
tweets.push(data[i]); |
|||
} |
|||
} |
|||
} |
|||
showTwitterFeed(tweets, user); |
|||
} |
|||
}; |
|||
feed.open("GET","http://twitter.com/statuses/user_timeline/"+user+".json?trim_user=true&count="+(parseInt(count)+60)+"&callback=?"); |
|||
feed.send(); |
|||
} |
|||
|
|||
function showTwitterFeed(tweets, twitter_user){ |
|||
var timeline = document.getElementById('tweets'); |
|||
timeline.innerHTML=''; |
|||
for (t in tweets){ |
|||
timeline.innerHTML+='<li>'+'<p>'+'<a href="http://twitter.com/'+twitter_user+'/status/'+tweets[t].id_str+'">'+prettyDate(tweets[t].created_at)+'</a>'+linkifyTweet(tweets[t].text.replace(/\n/g, '<br>'))+'</p>'+'</li>'; |
|||
} |
|||
} |
|||
function linkifyTweet(text){ |
|||
return text.replace(/(https?:\/\/)([\w\-:;?&=+.%#\/]+)/gi, '<a href="$1$2">$2</a>') |
|||
.replace(/(^|\W)@(\w+)/g, '$1<a href="http://twitter.com/$2">@$2</a>') |
|||
.replace(/(^|\W)#(\w+)/g, '$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>'); |
|||
} |
|||
|
|||
|
|||
|
|||
// jXHR.js (JSON-P XHR) | v0.1 (c) Kyle Simpson | MIT License | http://mulletxhr.com/
|
|||
// uncompressed version available in source/javascripts/libs/jXHR.js
|
|||
(function(c){var b=c.setTimeout,d=c.document,a=0;c.jXHR=function(){var e,g,n,h,m=null;function l(){try{h.parentNode.removeChild(h)}catch(o){}}function k(){g=false;e="";l();h=null;i(0)}function f(p){try{m.onerror.call(m,p,e)}catch(o){throw new Error(p)}}function j(){if((this.readyState&&this.readyState!=="complete"&&this.readyState!=="loaded")||g){return}this.onload=this.onreadystatechange=null;g=true;if(m.readyState!==4){f("Script failed to load ["+e+"].")}l()}function i(o,p){p=p||[];m.readyState=o;if(typeof m.onreadystatechange==="function"){m.onreadystatechange.apply(m,p)}}m={onerror:null,onreadystatechange:null,readyState:0,open:function(p,o){k();internal_callback="cb"+(a++);(function(q){c.jXHR[q]=function(){try{i.call(m,4,arguments)}catch(r){m.readyState=-1;f("Script failed to run ["+e+"].")}c.jXHR[q]=null}})(internal_callback);e=o.replace(/=\?/,"=jXHR."+internal_callback);i(1)},send:function(){b(function(){h=d.createElement("script");h.setAttribute("type","text/javascript");h.onload=h.onreadystatechange=function(){j.call(h)};h.setAttribute("src",e);d.getElementsByTagName("head")[0].appendChild(h)},0);i(2)},setRequestHeader:function(){},getResponseHeader:function(){return""},getAllResponseHeaders:function(){return[]}};k();return m}})(window); |
|||
|
|||
|
|||
/* Sky Slavin, Ludopoli. MIT license. * based on JavaScript Pretty Date * Copyright (c) 2008 John Resig (jquery.com) * Licensed under the MIT license. */ |
|||
|
|||
function prettyDate(time) { |
|||
if (navigator.appName == 'Microsoft Internet Explorer') { |
|||
if (navigator.appName === 'Microsoft Internet Explorer') { |
|||
return "<span>∞</span>"; // because IE date parsing isn't fun.
|
|||
}; |
|||
} |
|||
|
|||
var say = {}; |
|||
say.just_now = " now", |
|||
say.minute_ago = "1m", |
|||
say.minutes_ago = "m", |
|||
say.hour_ago = "1h", |
|||
say.hours_ago = "h", |
|||
say.yesterday = "1d", |
|||
say.days_ago = "d", |
|||
say.weeks_ago = "w" |
|||
var say = { |
|||
just_now: " now", |
|||
minute_ago: "1m", |
|||
minutes_ago: "m", |
|||
hour_ago: "1h", |
|||
hours_ago: "h", |
|||
yesterday: "1d", |
|||
days_ago: "d", |
|||
weeks_ago: "w" |
|||
}; |
|||
|
|||
var current_date = new Date(); |
|||
current_date_time = current_date.getTime(); |
|||
current_date_full = current_date_time + (1 * 60000); |
|||
var date = new Date(time); |
|||
var diff = ((current_date_full - date.getTime()) / 1000); |
|||
var day_diff = Math.floor(diff / 86400); |
|||
var current_date = new Date(), |
|||
current_date_time = current_date.getTime(), |
|||
current_date_full = current_date_time + (1 * 60000), |
|||
date = new Date(time), |
|||
diff = ((current_date_full - date.getTime()) / 1000), |
|||
day_diff = Math.floor(diff / 86400); |
|||
|
|||
if (isNaN(day_diff) || day_diff < 0) return "<span>∞</span>"; |
|||
if (isNaN(day_diff) || day_diff < 0) { return "<span>∞</span>"; } |
|||
|
|||
return day_diff == 0 && ( |
|||
return day_diff === 0 && ( |
|||
diff < 60 && say.just_now || |
|||
diff < 120 && say.minute_ago || |
|||
diff < 3600 && Math.floor(diff / 60) + say.minutes_ago || |
|||
diff < 7200 && say.hour_ago || |
|||
diff < 86400 && Math.floor(diff / 3600) + say.hours_ago) || |
|||
day_diff == 1 && say.yesterday || |
|||
day_diff === 1 && say.yesterday || |
|||
day_diff < 7 && day_diff + say.days_ago || |
|||
day_diff > 7 && Math.ceil(day_diff / 7) + say.weeks_ago; |
|||
} |
|||
|
|||
function linkifyTweet(text, url) { |
|||
// Linkify urls, usernames, hashtags
|
|||
text = text.replace(/(https?:\/\/)([\w\-:;?&=+.%#\/]+)/gi, '<a href="$1$2">$2</a>') |
|||
.replace(/(^|\W)@(\w+)/g, '$1<a href="http://twitter.com/$2">@$2</a>') |
|||
.replace(/(^|\W)#(\w+)/g, '$1<a href="http://search.twitter.com/search?q=%23$2">#$2</a>'); |
|||
|
|||
// Use twitter's api to replace t.co shortened urls with expanded ones.
|
|||
for (var u in url) { |
|||
if(url[u].expanded_url != null){ |
|||
var shortUrl = new RegExp( url[u].url.replace(/https?:\/\//, ''), 'g'); |
|||
text = text.replace(shortUrl, url[u].display_url); |
|||
} |
|||
} |
|||
return text |
|||
} |
|||
|
|||
function showTwitterFeed(tweets, twitter_user) { |
|||
var timeline = document.getElementById('tweets'), |
|||
content = ''; |
|||
|
|||
for (var t in tweets) { |
|||
content += '<li>'+'<p>'+'<a href="http://twitter.com/'+twitter_user+'/status/'+tweets[t].id_str+'">'+prettyDate(tweets[t].created_at)+'</a>'+linkifyTweet(tweets[t].text.replace(/\n/g, '<br>'), tweets[t].entities.urls)+'</p>'+'</li>'; |
|||
} |
|||
timeline.innerHTML = content; |
|||
} |
|||
|
|||
function getTwitterFeed(user, count, replies) { |
|||
count = parseInt(count, 10); |
|||
$.ajax({ |
|||
url: "http://api.twitter.com/1/statuses/user_timeline/" + user + ".json?trim_user=true&count=" + (count + 20) + "&include_entities=1&exclude_replies=" + (replies ? "0" : "1") + "&callback=?" |
|||
, type: 'jsonp' |
|||
, error: function (err) { $('#tweets li.loading').addClass('error').text("Twitter's busted"); } |
|||
, success: function(data) { showTwitterFeed(data.slice(0, count), user); } |
|||
}) |
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
# Title: jsFiddle tag for Jekyll |
|||
# Author: Brian Arnold (@brianarn) |
|||
# Description: |
|||
# Given a jsFiddle shortcode, outputs the jsFiddle iframe code. |
|||
# Using 'default' will preserve defaults as specified by jsFiddle. |
|||
# |
|||
# Syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %} |
|||
# |
|||
# Examples: |
|||
# |
|||
# Input: {% jsfiddle ccWP7 %} |
|||
# Output: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,resources,html,css,result/light/"></iframe> |
|||
# |
|||
# Input: {% jsfiddle ccWP7 js,html,result %} |
|||
# Output: <iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ccWP7/embedded/js,html,result/light/"></iframe> |
|||
# |
|||
|
|||
module Jekyll |
|||
class JsFiddle < Liquid::Tag |
|||
def initialize(tag_name, markup, tokens) |
|||
if /(?<fiddle>\w+)(?:\s+(?<sequence>[\w,]+))?(?:\s+(?<skin>\w+))?(?:\s+(?<height>\w+))?(?:\s+(?<width>\w+))?/ =~ markup |
|||
@fiddle = fiddle |
|||
@sequence = (sequence unless sequence == 'default') || 'js,resources,html,css,result' |
|||
@skin = (skin unless skin == 'default') || 'light' |
|||
@width = width || '100%' |
|||
@height = height || '300px' |
|||
end |
|||
end |
|||
|
|||
def render(context) |
|||
if @fiddle |
|||
"<iframe style=\"width: #{@width}; height: #{@height}\" src=\"http://jsfiddle.net/#{@fiddle}/embedded/#{@sequence}/#{@skin}/\"></iframe>" |
|||
else |
|||
"Error processing input, expected syntax: {% jsfiddle shorttag [tabs] [skin] [height] [width] %}" |
|||
end |
|||
end |
|||
end |
|||
end |
|||
|
|||
Liquid::Template.register_tag('jsfiddle', Jekyll::JsFiddle) |
Loading…
Reference in new issue