squidpress 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +8 -0
  3. data/README.markdown +32 -0
  4. data/_includes/after_footer.html +5 -0
  5. data/_includes/archive_post.html +8 -0
  6. data/_includes/article.html +29 -0
  7. data/_includes/asides/delicious.html +8 -0
  8. data/_includes/asides/github.html +30 -0
  9. data/_includes/asides/googleplus.html +11 -0
  10. data/_includes/asides/pinboard.html +19 -0
  11. data/_includes/asides/recent_posts.html +10 -0
  12. data/_includes/custom/after_footer.html +3 -0
  13. data/_includes/custom/asides/about.html +4 -0
  14. data/_includes/custom/category_feed.xml +27 -0
  15. data/_includes/custom/footer.html +4 -0
  16. data/_includes/custom/head.html +3 -0
  17. data/_includes/custom/header.html +6 -0
  18. data/_includes/custom/navigation.html +4 -0
  19. data/_includes/disqus.html +21 -0
  20. data/_includes/facebook_like.html +10 -0
  21. data/_includes/footer.html +1 -0
  22. data/_includes/google_analytics.html +13 -0
  23. data/_includes/google_plus_one.html +9 -0
  24. data/_includes/head.html +30 -0
  25. data/_includes/header.html +1 -0
  26. data/_includes/navigation.html +15 -0
  27. data/_includes/post/author.html +8 -0
  28. data/_includes/post/categories.html +10 -0
  29. data/_includes/post/date.html +5 -0
  30. data/_includes/post/disqus_thread.html +1 -0
  31. data/_includes/post/sharing.html +11 -0
  32. data/_includes/twitter_sharing.html +11 -0
  33. data/_layouts/category_index.html +17 -0
  34. data/_layouts/default.html +14 -0
  35. data/_layouts/page.html +42 -0
  36. data/_layouts/post.html +43 -0
  37. data/_sass/_base.scss +5 -0
  38. data/_sass/_minicompass.scss +38 -0
  39. data/_sass/_partials.scss +8 -0
  40. data/_sass/base/_layout.scss +198 -0
  41. data/_sass/base/_solarized.scss +47 -0
  42. data/_sass/base/_theme.scss +92 -0
  43. data/_sass/base/_typography.scss +166 -0
  44. data/_sass/base/_utilities.scss +32 -0
  45. data/_sass/custom/_colors.scss +43 -0
  46. data/_sass/custom/_fonts.scss +10 -0
  47. data/_sass/custom/_layout.scss +21 -0
  48. data/_sass/custom/_styles.scss +2 -0
  49. data/_sass/minicompass/border-radius.scss +14 -0
  50. data/_sass/minicompass/bullets.scss +36 -0
  51. data/_sass/minicompass/clearfix.scss +20 -0
  52. data/_sass/minicompass/horizontal-list.scss +58 -0
  53. data/_sass/minicompass/hover-link.scss +5 -0
  54. data/_sass/minicompass/link-colors.scss +28 -0
  55. data/_sass/minicompass/reset.scss +117 -0
  56. data/_sass/partials/_archive.scss +75 -0
  57. data/_sass/partials/_blog.scss +141 -0
  58. data/_sass/partials/_footer.scss +23 -0
  59. data/_sass/partials/_header.scss +18 -0
  60. data/_sass/partials/_navigation.scss +141 -0
  61. data/_sass/partials/_sharing.scss +8 -0
  62. data/_sass/partials/_sidebar.scss +4 -0
  63. data/_sass/partials/_syntax.scss +268 -0
  64. data/_sass/partials/sidebar/_base.scss +107 -0
  65. data/_sass/partials/sidebar/_delicious.scss +4 -0
  66. data/_sass/partials/sidebar/_googleplus.scss +26 -0
  67. data/_sass/partials/sidebar/_pinboard.scss +14 -0
  68. data/_sass/plugins/_plugins.scss +6 -0
  69. data/assets/images/bird_32_gray.png +0 -0
  70. data/assets/images/bird_32_gray_fail.png +0 -0
  71. data/assets/images/code_bg.png +0 -0
  72. data/assets/images/dotted-border.png +0 -0
  73. data/assets/images/email.png +0 -0
  74. data/assets/images/line-tile.png +0 -0
  75. data/assets/images/noise.png +0 -0
  76. data/assets/images/rss.png +0 -0
  77. data/assets/images/search.png +0 -0
  78. data/assets/javascripts/github.js +32 -0
  79. data/assets/javascripts/libs/jXHR.js +85 -0
  80. data/assets/javascripts/libs/jquery.min.js +5 -0
  81. data/assets/javascripts/libs/swfobject-dynamic.js +298 -0
  82. data/assets/javascripts/modernizr-2.0.js +5 -0
  83. data/assets/javascripts/octopress.js +151 -0
  84. data/assets/javascripts/pinboard.js +56 -0
  85. data/assets/javascripts/twitter.js +78 -0
  86. data/assets/jwplayer/glow/controlbar/background.png +0 -0
  87. data/assets/jwplayer/glow/controlbar/blankButton.png +0 -0
  88. data/assets/jwplayer/glow/controlbar/divider.png +0 -0
  89. data/assets/jwplayer/glow/controlbar/fullscreenButton.png +0 -0
  90. data/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png +0 -0
  91. data/assets/jwplayer/glow/controlbar/muteButton.png +0 -0
  92. data/assets/jwplayer/glow/controlbar/muteButtonOver.png +0 -0
  93. data/assets/jwplayer/glow/controlbar/normalscreenButton.png +0 -0
  94. data/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png +0 -0
  95. data/assets/jwplayer/glow/controlbar/pauseButton.png +0 -0
  96. data/assets/jwplayer/glow/controlbar/pauseButtonOver.png +0 -0
  97. data/assets/jwplayer/glow/controlbar/playButton.png +0 -0
  98. data/assets/jwplayer/glow/controlbar/playButtonOver.png +0 -0
  99. data/assets/jwplayer/glow/controlbar/timeSliderBuffer.png +0 -0
  100. data/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png +0 -0
  101. data/assets/jwplayer/glow/controlbar/timeSliderCapRight.png +0 -0
  102. data/assets/jwplayer/glow/controlbar/timeSliderProgress.png +0 -0
  103. data/assets/jwplayer/glow/controlbar/timeSliderRail.png +0 -0
  104. data/assets/jwplayer/glow/controlbar/unmuteButton.png +0 -0
  105. data/assets/jwplayer/glow/controlbar/unmuteButtonOver.png +0 -0
  106. data/assets/jwplayer/glow/display/background.png +0 -0
  107. data/assets/jwplayer/glow/display/bufferIcon.png +0 -0
  108. data/assets/jwplayer/glow/display/muteIcon.png +0 -0
  109. data/assets/jwplayer/glow/display/playIcon.png +0 -0
  110. data/assets/jwplayer/glow/dock/button.png +0 -0
  111. data/assets/jwplayer/glow/glow.xml +115 -0
  112. data/assets/jwplayer/glow/playlist/item.png +0 -0
  113. data/assets/jwplayer/glow/playlist/itemOver.png +0 -0
  114. data/assets/jwplayer/glow/playlist/sliderCapBottom.png +0 -0
  115. data/assets/jwplayer/glow/playlist/sliderCapTop.png +0 -0
  116. data/assets/jwplayer/glow/playlist/sliderRail.png +0 -0
  117. data/assets/jwplayer/glow/playlist/sliderThumb.png +0 -0
  118. data/assets/jwplayer/glow/sharing/embedIcon.png +0 -0
  119. data/assets/jwplayer/glow/sharing/embedScreen.png +0 -0
  120. data/assets/jwplayer/glow/sharing/shareIcon.png +0 -0
  121. data/assets/jwplayer/glow/sharing/shareScreen.png +0 -0
  122. data/assets/jwplayer/player.swf +0 -0
  123. data/assets/stylesheets/screen.scss +14 -0
  124. data/atom.xml +27 -0
  125. data/favicon.png +0 -0
  126. data/index.html +29 -0
  127. data/robots.txt +7 -0
  128. metadata +211 -0
@@ -0,0 +1,151 @@
1
+ function getNav() {
2
+ var mainNav = $('ul.main-navigation, ul[role=main-navigation]').before('<fieldset class="mobile-nav">')
3
+ var mobileNav = $('fieldset.mobile-nav').append('<select>');
4
+ mobileNav.find('select').append('<option value="">Navigate&hellip;</option>');
5
+ var addOption = function(i, option) {
6
+ mobileNav.find('select').append('<option value="' + this.href + '">&raquo; ' + $(this).text() + '</option>');
7
+ }
8
+ mainNav.find('a').each(addOption);
9
+ $('ul.subscription a').each(addOption);
10
+ mobileNav.find('select').bind('change', function(event) {
11
+ if (event.target.value) { window.location.href = event.target.value; }
12
+ });
13
+ }
14
+
15
+ function addSidebarToggler() {
16
+ if(!$('body').hasClass('sidebar-footer')) {
17
+ $('#content').append('<span class="toggle-sidebar"></span>');
18
+ $('.toggle-sidebar').bind('click', function(e) {
19
+ e.preventDefault();
20
+ $('body').toggleClass('collapse-sidebar');
21
+ });
22
+ }
23
+ var sections = $('aside.sidebar > section');
24
+ if (sections.length > 1) {
25
+ sections.each(function(index, section){
26
+ if ((sections.length >= 3) && index % 3 === 0) {
27
+ $(section).addClass("first");
28
+ }
29
+ var count = ((index +1) % 2) ? "odd" : "even";
30
+ $(section).addClass(count);
31
+ });
32
+ }
33
+ if (sections.length >= 3){ $('aside.sidebar').addClass('thirds'); }
34
+ }
35
+
36
+ function testFeatures() {
37
+ var features = ['maskImage'];
38
+ $(features).map(function(i, feature) {
39
+ if (Modernizr.testAllProps(feature)) {
40
+ $('html').addClass(feature);
41
+ } else {
42
+ $('html').addClass('no-'+feature);
43
+ }
44
+ });
45
+ if ("placeholder" in document.createElement("input")) {
46
+ $('html').addClass('placeholder');
47
+ } else {
48
+ $('html').addClass('no-placeholder');
49
+ }
50
+ }
51
+
52
+ function addCodeLineNumbers() {
53
+ if (navigator.appName === 'Microsoft Internet Explorer') { return; }
54
+ $('div.gist-highlight').each(function(code) {
55
+ var tableStart = '<table><tbody><tr><td class="gutter">',
56
+ lineNumbers = '<pre class="line-numbers">',
57
+ tableMiddle = '</pre></td><td class="code">',
58
+ tableEnd = '</td></tr></tbody></table>',
59
+ count = $('.line', code).length;
60
+ for (var i=1;i<=count; i++) {
61
+ lineNumbers += '<span class="line-number">'+i+'</span>\n';
62
+ }
63
+ var table = tableStart + lineNumbers + tableMiddle + '<pre>'+$('pre', code).html()+'</pre>' + tableEnd;
64
+ $(code).html(table);
65
+ });
66
+ }
67
+
68
+ function flashVideoFallback(){
69
+ var flashplayerlocation = "/assets/jwplayer/player.swf",
70
+ flashplayerskin = "/assets/jwplayer/glow/glow.xml";
71
+ $('video').each(function(i, video){
72
+ video = $(video);
73
+ if (!Modernizr.video.h264 && swfobject.getFlashPlayerVersion() || window.location.hash.indexOf("flash-test") !== -1){
74
+ video.children('source[src$=mp4]').first().map(i, function(source){
75
+ var src = $(source).attr('src'),
76
+ id = 'video_'+Math.round(1 + Math.random()*(100000)),
77
+ width = video.attr('width'),
78
+ height = parseInt(video.attr('height'), 10) + 30;
79
+ video.after('<div class="flash-video"><div><div id='+id+'>');
80
+ swfobject.embedSWF(flashplayerlocation, id, width, height + 30, "9.0.0",
81
+ { file : src, image : video.attr('poster'), skin : flashplayerskin } ,
82
+ { movie : src, wmode : "opaque", allowfullscreen : "true" }
83
+ );
84
+ });
85
+ video.remove();
86
+ }
87
+ });
88
+ }
89
+
90
+ function wrapFlashVideos() {
91
+ $('object').each(function(i, object) {
92
+ if( $(object).find('param[name=movie]').length ){
93
+ $(object).wrap('<div class="flash-video">')
94
+ }
95
+ });
96
+ $('iframe[src*=vimeo],iframe[src*=youtube]').wrap('<div class="flash-video">')
97
+ }
98
+
99
+ function renderDeliciousLinks(items) {
100
+ var output = "<ul>";
101
+ for (var i=0,l=items.length; i<l; i++) {
102
+ output += '<li><a href="' + items[i].u + '" title="Tags: ' + (items[i].t == "" ? "" : items[i].t.join(', ')) + '">' + items[i].d + '</a></li>';
103
+ }
104
+ output += "</ul>";
105
+ $('#delicious').html(output);
106
+ }
107
+
108
+ $('document').ready(function() {
109
+ testFeatures();
110
+ wrapFlashVideos();
111
+ flashVideoFallback();
112
+ addCodeLineNumbers();
113
+ getNav();
114
+ addSidebarToggler();
115
+ });
116
+
117
+ // iOS scaling bug fix
118
+ // Rewritten version
119
+ // By @mathias, @cheeaun and @jdalton
120
+ // Source url: https://gist.github.com/901295
121
+ (function(doc) {
122
+ var addEvent = 'addEventListener',
123
+ type = 'gesturestart',
124
+ qsa = 'querySelectorAll',
125
+ scales = [1, 1],
126
+ meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
127
+ function fix() {
128
+ meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
129
+ doc.removeEventListener(type, fix, true);
130
+ }
131
+ if ((meta = meta[meta.length - 1]) && addEvent in doc) {
132
+ fix();
133
+ scales = [0.25, 1.6];
134
+ doc[addEvent](type, fix, true);
135
+ }
136
+ }(document));
137
+
138
+ /*! SWFObject v2.2 modified by Brandon Mathis to contain only what is necessary to dynamically embed flash objects
139
+ * Uncompressed source in javascripts/libs/swfobject-dynamic.js
140
+ * <http://code.google.com/p/swfobject/>
141
+ released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
142
+ */
143
+ var swfobject=function(){function s(a,b,d){var q,k=n(d);if(g.wk&&g.wk<312)return q;if(k){if(typeof a.id==l)a.id=d;if(g.ie&&g.win){var e="",c;for(c in a)if(a[c]!=Object.prototype[c])c.toLowerCase()=="data"?b.movie=a[c]:c.toLowerCase()=="styleclass"?e+=' class="'+a[c]+'"':c.toLowerCase()!="classid"&&(e+=" "+c+'="'+a[c]+'"');c="";for(var f in b)b[f]!=Object.prototype[f]&&(c+='<param name="'+f+'" value="'+b[f]+'" />');k.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+e+">"+c+
144
+ "</object>";q=n(a.id)}else{f=i.createElement(o);f.setAttribute("type",m);for(var h in a)a[h]!=Object.prototype[h]&&(h.toLowerCase()=="styleclass"?f.setAttribute("class",a[h]):h.toLowerCase()!="classid"&&f.setAttribute(h,a[h]));for(e in b)b[e]!=Object.prototype[e]&&e.toLowerCase()!="movie"&&(a=f,c=e,h=b[e],d=i.createElement("param"),d.setAttribute("name",c),d.setAttribute("value",h),a.appendChild(d));k.parentNode.replaceChild(f,k);q=f}}return q}function n(a){var b=null;try{b=i.getElementById(a)}catch(d){}return b}
145
+ function t(a){var b=g.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function u(a){return/[\\\"<>\.;]/.exec(a)!=null&&typeof encodeURIComponent!=l?encodeURIComponent(a):a}var l="undefined",o="object",m="application/x-shockwave-flash",v=window,i=document,j=navigator,g=function(){var a=typeof i.getElementById!=l&&typeof i.getElementsByTagName!=l&&typeof i.createElement!=l,
146
+ b=j.userAgent.toLowerCase(),d=j.platform.toLowerCase(),g=d?/win/.test(d):/win/.test(b),d=d?/mac/.test(d):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,k=!+"\u000b1",e=[0,0,0],c=null;if(typeof j.plugins!=l&&typeof j.plugins["Shockwave Flash"]==o){if((c=j.plugins["Shockwave Flash"].description)&&!(typeof j.mimeTypes!=l&&j.mimeTypes[m]&&!j.mimeTypes[m].enabledPlugin))k=!1,c=c.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(c.replace(/^(.*)\..*$/,"$1"),
147
+ 10),e[1]=parseInt(c.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(c)?parseInt(c.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof v.ActiveXObject!=l)try{var f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(f&&(c=f.GetVariable("$version")))k=!0,c=c.split(" ")[1].split(","),e=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]}catch(h){}return{w3:a,pv:e,wk:b,ie:k,win:g,mac:d}}();return{embedSWF:function(a,b,d,i,k,e,c,f,h){var j={success:!1,id:b};if(g.w3&&!(g.wk&&g.wk<312)&&
148
+ a&&b&&d&&i&&k){d+="";i+="";var p={};if(f&&typeof f===o)for(var m in f)p[m]=f[m];p.data=a;p.width=d;p.height=i;a={};if(c&&typeof c===o)for(var n in c)a[n]=c[n];if(e&&typeof e===o)for(var r in e)typeof a.flashvars!=l?a.flashvars+="&"+r+"="+e[r]:a.flashvars=r+"="+e[r];if(t(k))b=s(p,a,b),j.success=!0,j.ref=b}h&&h(j)},ua:g,getFlashPlayerVersion:function(){return{major:g.pv[0],minor:g.pv[1],release:g.pv[2]}},hasFlashPlayerVersion:t,createSWF:function(a,b,d){if(g.w3)return s(a,b,d)},getQueryParamValue:function(a){var b=
149
+ i.location.search||i.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(a==null)return u(b);for(var b=b.split("&"),d=0;d<b.length;d++)if(b[d].substring(0,b[d].indexOf("="))==a)return u(b[d].substring(b[d].indexOf("=")+1))}return""}}}();
150
+
151
+
@@ -0,0 +1,56 @@
1
+ function pinboardNS_fetch_script(url) {
2
+ //document.writeln('<s'+'cript type="text/javascript" src="' + url + '"></s'+'cript>');
3
+ (function(){
4
+ var pinboardLinkroll = document.createElement('script');
5
+ pinboardLinkroll.type = 'text/javascript';
6
+ pinboardLinkroll.async = true;
7
+ pinboardLinkroll.src = url;
8
+ document.getElementsByTagName('head')[0].appendChild(pinboardLinkroll);
9
+ })();
10
+ }
11
+
12
+ function pinboardNS_show_bmarks(r) {
13
+ var lr = new Pinboard_Linkroll();
14
+ lr.set_items(r);
15
+ lr.show_bmarks();
16
+ }
17
+
18
+ function Pinboard_Linkroll() {
19
+ var items;
20
+
21
+ this.set_items = function(i) {
22
+ this.items = i;
23
+ }
24
+ this.show_bmarks = function() {
25
+ var lines = [];
26
+ for (var i = 0; i < this.items.length; i++) {
27
+ var item = this.items[i];
28
+ var str = this.format_item(item);
29
+ lines.push(str);
30
+ }
31
+ document.getElementById(linkroll).innerHTML = lines.join("\n");
32
+ }
33
+ this.cook = function(v) {
34
+ return v.replace('<', '&lt;').replace('>', '&gt>');
35
+ }
36
+
37
+ this.format_item = function(it) {
38
+ var str = "<li class=\"pin-item\">";
39
+ if (!it.d) { return; }
40
+ str += "<p><a class=\"pin-title\" href=\"" + this.cook(it.u) + "\">" + this.cook(it.d) + "</a>";
41
+ if (it.n) {
42
+ str += "<span class=\"pin-description\">" + this.cook(it.n) + "</span>\n";
43
+ }
44
+ if (it.t.length > 0) {
45
+ for (var i = 0; i < it.t.length; i++) {
46
+ var tag = it.t[i];
47
+ str += " <a class=\"pin-tag\" href=\"https://pinboard.in/u:"+ this.cook(it.a) + "/t:" + this.cook(tag) + "\">" + this.cook(tag).replace(/^\s+|\s+$/g, '') + "</a> ";
48
+ }
49
+ }
50
+ str += "</p></li>\n";
51
+ return str;
52
+ }
53
+ }
54
+ Pinboard_Linkroll.prototype = new Pinboard_Linkroll();
55
+ pinboardNS_fetch_script("https://feeds.pinboard.in/json/v1/u:"+pinboard_user+"/?cb=pinboardNS_show_bmarks\&count="+pinboard_count);
56
+
@@ -0,0 +1,78 @@
1
+ // JSON-P Twitter fetcher for Octopress
2
+ // (c) Brandon Mathis // MIT License
3
+
4
+ /* Sky Slavin, Ludopoli. MIT license. * based on JavaScript Pretty Date * Copyright (c) 2008 John Resig (jquery.com) * Licensed under the MIT license. */
5
+ function prettyDate(time) {
6
+ if (navigator.appName === 'Microsoft Internet Explorer') {
7
+ return "<span>&infin;</span>"; // because IE date parsing isn't fun.
8
+ }
9
+ var say = {
10
+ just_now: " now",
11
+ minute_ago: "1m",
12
+ minutes_ago: "m",
13
+ hour_ago: "1h",
14
+ hours_ago: "h",
15
+ yesterday: "1d",
16
+ days_ago: "d",
17
+ last_week: "1w",
18
+ weeks_ago: "w"
19
+ };
20
+
21
+ var current_date = new Date(),
22
+ current_date_time = current_date.getTime(),
23
+ current_date_full = current_date_time + (1 * 60000),
24
+ date = new Date(time),
25
+ diff = ((current_date_full - date.getTime()) / 1000),
26
+ day_diff = Math.floor(diff / 86400);
27
+
28
+ if (isNaN(day_diff) || day_diff < 0) { return "<span>&infin;</span>"; }
29
+
30
+ return day_diff === 0 && (
31
+ diff < 60 && say.just_now ||
32
+ diff < 120 && say.minute_ago ||
33
+ diff < 3600 && Math.floor(diff / 60) + say.minutes_ago ||
34
+ diff < 7200 && say.hour_ago ||
35
+ diff < 86400 && Math.floor(diff / 3600) + say.hours_ago) ||
36
+ day_diff === 1 && say.yesterday ||
37
+ day_diff < 7 && day_diff + say.days_ago ||
38
+ day_diff === 7 && say.last_week ||
39
+ day_diff > 7 && Math.ceil(day_diff / 7) + say.weeks_ago;
40
+ }
41
+
42
+ function linkifyTweet(text, url) {
43
+ // Linkify urls, usernames, hashtags
44
+ text = text.replace(/(https?:\/\/)([\w\-:;?&=+.%#\/]+)/gi, '<a href="$1$2">$2</a>')
45
+ .replace(/(^|\W)@(\w+)/g, '$1<a href="https://twitter.com/$2">@$2</a>')
46
+ .replace(/(^|\W)#(\w+)/g, '$1<a href="https://search.twitter.com/search?q=%23$2">#$2</a>');
47
+
48
+ // Use twitter's api to replace t.co shortened urls with expanded ones.
49
+ for (var u in url) {
50
+ if(url[u].expanded_url != null){
51
+ var shortUrl = new RegExp(url[u].url, 'g');
52
+ text = text.replace(shortUrl, url[u].expanded_url);
53
+ var shortUrl = new RegExp(">"+(url[u].url.replace(/https?:\/\//, '')), 'g');
54
+ text = text.replace(shortUrl, ">"+url[u].display_url);
55
+ }
56
+ }
57
+ return text
58
+ }
59
+
60
+ function showTwitterFeed(tweets, twitter_user) {
61
+ var timeline = document.getElementById('tweets'),
62
+ content = '';
63
+
64
+ for (var t in tweets) {
65
+ content += '<li>'+'<p>'+'<a href="https://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>';
66
+ }
67
+ timeline.innerHTML = content;
68
+ }
69
+
70
+ function getTwitterFeed(user, count, replies) {
71
+ count = parseInt(count, 10);
72
+ $.ajax({
73
+ url: "https://api.twitter.com/1/statuses/user_timeline/" + user + ".json?trim_user=true&count=" + (count + 20) + "&include_entities=1&exclude_replies=" + (replies ? "0" : "1") + "&callback=?"
74
+ , type: 'jsonp'
75
+ , error: function (err) { $('#tweets li.loading').addClass('error').text("Twitter's busted"); }
76
+ , success: function(data) { showTwitterFeed(data.slice(0, count), user); }
77
+ })
78
+ }
@@ -0,0 +1,115 @@
1
+ <?xml version="1.0"?>
2
+ <skin version="1.1" name="Glow" author="LongTail Video">
3
+
4
+ <settings>
5
+ <setting name="backcolor" value="0x000000" />
6
+ <setting name="frontcolor" value="0xeeeeee" />
7
+ <setting name="lightcolor" value="0xeeeeee" />
8
+ <setting name="screencolor" value="0x000000" />
9
+ </settings>
10
+
11
+ <components>
12
+ <component name="controlbar">
13
+ <settings>
14
+ <setting name="margin" value="0" />
15
+ <setting name="fontsize" value="11" />
16
+ <setting name="fontcolor" value="0xEEEEEE" />
17
+ <setting name="buttoncolor" value="0xEEEEEE" />
18
+ </settings>
19
+
20
+ <layout>
21
+ <group position="left">
22
+ <button name="play" />
23
+ <text name="elapsed" />
24
+ </group>
25
+ <group position="center">
26
+ <slider name="time" />
27
+ </group>
28
+ <group position="right">
29
+ <text name="duration" />
30
+ <button name="blank" />
31
+ <button name="mute" />
32
+ <button name="fullscreen" />
33
+ </group>
34
+ </layout>
35
+
36
+ <elements>
37
+ <element name="background" src="background.png" />
38
+ <element name="capLeft" src="divider.png" />
39
+ <element name="capRight" src="divider.png" />
40
+ <element name="divider" src="divider.png" />
41
+ <element name="blankButton" src="blankButton.png" />
42
+ <element name="fullscreenButton" src="fullscreenButton.png" />
43
+ <element name="fullscreenButtonOver" src="fullscreenButtonOver.png" />
44
+ <element name="muteButton" src="muteButton.png" />
45
+ <element name="muteButtonOver" src="muteButtonOver.png" />
46
+ <element name="pauseButton" src="pauseButton.png" />
47
+ <element name="pauseButtonOver" src="pauseButtonOver.png" />
48
+ <element name="playButton" src="playButton.png" />
49
+ <element name="playButtonOver" src="playButtonOver.png" />
50
+ <element name="timeSliderBuffer" src="timeSliderBuffer.png" />
51
+ <element name="timeSliderCapLeft" src="timeSliderCapLeft.png" />
52
+ <element name="timeSliderCapRight" src="timeSliderCapRight.png" />
53
+ <element name="timeSliderProgress" src="timeSliderProgress.png" />
54
+ <element name="timeSliderRail" src="timeSliderRail.png" />
55
+ <element name="normalscreenButton" src="normalscreenButton.png" />
56
+ <element name="normalscreenButtonOver" src="normalscreenButtonOver.png" />
57
+ <element name="unmuteButton" src="unmuteButton.png" />
58
+ <element name="unmuteButtonOver" src="unmuteButtonOver.png" />
59
+ <element name="volumeSliderRail" src="divider.png" />
60
+ <element name="volumeSliderProgress" src="divider.png" />
61
+ </elements>
62
+ </component>
63
+
64
+ <component name="display">
65
+ <settings>
66
+ <setting name="bufferinterval" value="250" />
67
+ <setting name="bufferrotation" value="90" />
68
+ </settings>
69
+ <elements>
70
+ <element name="background" src="background.png" />
71
+ <element name="playIcon" src="playIcon.png" />
72
+ <element name="muteIcon" src="muteIcon.png" />
73
+ <element name="errorIcon" src="bufferIcon.png" />
74
+ <element name="bufferIcon" src="bufferIcon.png" />
75
+ </elements>
76
+ </component>
77
+
78
+ <component name="dock">
79
+ <settings>
80
+ <setting name="fontcolor" value="0xFFFFFF" />
81
+ </settings>
82
+ <elements>
83
+ <element name="button" src="button.png" />
84
+ </elements>
85
+ </component>
86
+
87
+ <component name="playlist">
88
+ <settings>
89
+ <setting name="fontcolor" value="0xEEEEEE" />
90
+ <setting name="overcolor" value="0xFFFFFF" />
91
+ <setting name="activecolor" value="0xFFFFFF" />
92
+ <setting name="backgroundcolor" value="0x333333" />
93
+ </settings>
94
+ <elements>
95
+ <element name="item" src="item.png" />
96
+ <element name="itemOver" src="itemOver.png" />
97
+ <element name="sliderCapBottom" src="sliderCapBottom.png" />
98
+ <element name="sliderCapTop" src="sliderCapTop.png" />
99
+ <element name="sliderRail" src="sliderRail.png" />
100
+ <element name="sliderThumb" src="sliderThumb.png" />
101
+ </elements>
102
+ </component>
103
+
104
+ <component name="sharing">
105
+ <elements>
106
+ <element name="embedIcon" src="embedIcon.png" />
107
+ <element name="embedScreen" src="embedScreen.png" />
108
+ <element name="shareIcon" src="shareIcon.png" />
109
+ <element name="shareScreen" src="shareScreen.png" />
110
+ </elements>
111
+ </component>
112
+
113
+ </components>
114
+
115
+ </skin>
Binary file
@@ -0,0 +1,14 @@
1
+ ---
2
+ ---
3
+
4
+ $asset-root: "{{ '/assets' | relative_url }}";
5
+
6
+ @use "minicompass/reset";
7
+ @include reset.global-reset;
8
+
9
+ @import "custom/colors";
10
+ @import "custom/fonts";
11
+ @import "custom/layout";
12
+ @import "base";
13
+ @import "partials";
14
+ @import "custom/styles";
data/atom.xml ADDED
@@ -0,0 +1,27 @@
1
+ ---
2
+ layout: null
3
+ ---
4
+ <?xml version="1.0" encoding="utf-8"?>
5
+ <feed xmlns="http://www.w3.org/2005/Atom">
6
+
7
+ <title><![CDATA[{{ site.title | cdata_escape }}]]></title>
8
+ <link href="{{ site.url }}/atom.xml" rel="self"/>
9
+ <link href="{{ site.url }}/"/>
10
+ <updated>{{ site.time | date_to_xmlschema }}</updated>
11
+ <id>{{ site.url }}/</id>
12
+ <author>
13
+ <name><![CDATA[{{ site.author | strip_html }}]]></name>
14
+ {% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
15
+ </author>
16
+ <generator uri="http://octopress.org/">Octopress</generator>
17
+
18
+ {% for post in site.posts limit: 20 %}
19
+ <entry>
20
+ <title type="html"><![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]></title>
21
+ <link href="{{ site.url }}{{ post.url }}"/>
22
+ <updated>{{ post.date | date_to_xmlschema }}</updated>
23
+ <id>{{ site.url }}{{ post.id }}</id>
24
+ <content type="html"><![CDATA[{{ post.content | expand_urls: site.url | cdata_escape }}]]></content>
25
+ </entry>
26
+ {% endfor %}
27
+ </feed>
data/favicon.png ADDED
Binary file
data/index.html ADDED
@@ -0,0 +1,29 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="blog-index">
6
+ {% assign index = true %}
7
+ {% for post in paginator.posts %}
8
+ {% assign content = post.content %}
9
+ <article>
10
+ {% include article.html %}
11
+ </article>
12
+ {% endfor %}
13
+ <div class="pagination">
14
+ {% if paginator.next_page %}
15
+ <a class="prev" href="{{paginator.next_page_path}}">&larr; Older</a>
16
+ {% endif %}
17
+ <a href="/blog/archives">Blog Archives</a>
18
+ {% if paginator.previous_page %}
19
+ <a class="next" href="{{paginator.previous_page_path}}">Newer &rarr;</a>
20
+ {% endif %}
21
+ </div>
22
+ </div>
23
+ <aside class="sidebar">
24
+ {% if site.blog_index_asides.size %}
25
+ {% include_array blog_index_asides %}
26
+ {% else %}
27
+ {% include_array default_asides %}
28
+ {% endif %}
29
+ </aside>
data/robots.txt ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: null
3
+ ---
4
+ User-agent: *
5
+ Disallow:
6
+
7
+ Sitemap: {{ site.url }}/sitemap.xml