diff options
-rw-r--r-- | .themes/classic/sass/partials/_syntax.scss | 2 | ||||
-rw-r--r-- | .themes/classic/source/_includes/asides/github.html | 30 | ||||
-rw-r--r-- | .themes/classic/source/javascripts/github.js | 43 | ||||
-rw-r--r-- | .themes/classic/source/javascripts/twitter.js | 4 | ||||
-rw-r--r-- | Rakefile | 22 | ||||
-rw-r--r-- | _config.yml | 8 | ||||
-rw-r--r-- | plugins/category_generator.rb | 4 |
7 files changed, 100 insertions, 13 deletions
diff --git a/.themes/classic/sass/partials/_syntax.scss b/.themes/classic/sass/partials/_syntax.scss index 7e8ed8d5..25e8d329 100644 --- a/.themes/classic/sass/partials/_syntax.scss +++ b/.themes/classic/sass/partials/_syntax.scss @@ -177,7 +177,7 @@ li code { .s1 { color: $solar-cyan !important; } /* Literal.String.Single */ //.ss { color: #990073 } /* Literal.String.Symbol */ //.il { color: #009999 } /* Literal.Number.Integer.Long */ - div { .gd, .gd .x, .gi, .gi .x { display: block; }} + div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }} } .highlight, .gist-highlight { diff --git a/.themes/classic/source/_includes/asides/github.html b/.themes/classic/source/_includes/asides/github.html new file mode 100644 index 00000000..935ccff0 --- /dev/null +++ b/.themes/classic/source/_includes/asides/github.html @@ -0,0 +1,30 @@ +{% if site.github_user %} +<section> + <h1>Github Repos</h1> + <ul id="gh_repos"> + <li class="loading">Status updating...</li> + </ul> + {% if site.github_show_profile_link %} + <a href="https://github.com/{{site.github_user}}">@{{site.github_user}}</a> on Github + {% endif %} + <script type="text/javascript"> + $.domReady(function(){ + if (!window.jXHR){ + var jxhr = document.createElement('script'); + jxhr.type = 'text/javascript'; + jxhr.src = '{{ root_url}}/javascripts/libs/jXHR.js'; + var s = document.getElementsByTagName('script')[0]; + s.parentNode.insertBefore(jxhr, s); + } + + github.showRepos({ + user: '{{site.github_user}}', + count: {{site.github_repo_count}}, + skip_forks: {{site.github_skip_forks}}, + target: '#gh_repos' + }); + }); + </script> + <script src="{{ root_url }}/javascripts/github.js" type="text/javascript"> </script> +</section> +{% endif %} diff --git a/.themes/classic/source/javascripts/github.js b/.themes/classic/source/javascripts/github.js new file mode 100644 index 00000000..623d493f --- /dev/null +++ b/.themes/classic/source/javascripts/github.js @@ -0,0 +1,43 @@ +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; + } + 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; + }); + + 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(); + } + }; +})();
\ No newline at end of file diff --git a/.themes/classic/source/javascripts/twitter.js b/.themes/classic/source/javascripts/twitter.js index 1f1b2f91..a4e85557 100644 --- a/.themes/classic/source/javascripts/twitter.js +++ b/.themes/classic/source/javascripts/twitter.js @@ -68,7 +68,7 @@ function prettyDate(time) { var diff = ((current_date_full - date.getTime()) / 1000); var day_diff = Math.floor(diff / 86400); - if (isNaN(day_diff) || day_diff < 0 || day_diff >= 31) return; + if (isNaN(day_diff) || day_diff < 0) return "<span>∞</span>"; return day_diff == 0 && ( diff < 60 && say.just_now || @@ -78,5 +78,5 @@ function prettyDate(time) { diff < 86400 && Math.floor(diff / 3600) + say.hours_ago) || day_diff == 1 && say.yesterday || day_diff < 7 && day_diff + say.days_ago || - day_diff < 31 && Math.ceil(day_diff / 7) + say.weeks_ago; + day_diff > 7 && Math.ceil(day_diff / 7) + say.weeks_ago; } @@ -95,6 +95,11 @@ task :new_post, :title do |t, args| args.with_defaults(:title => 'new-post') title = args.title filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}" + if File.exist?(filename) + puts "### #{filename} Already exists. Overwrite? y/n:" + response = $stdin.gets.chomp.downcase + next unless response == 'y' + end puts "Creating new post: #{filename}" open(filename, 'w') do |post| system "mkdir -p #{source_dir}/#{posts_dir}/"; @@ -122,6 +127,11 @@ task :new_page, :filename do |t, args| filename = "#{name}.#{extension}" mkdir_p page_dir file = page_dir + filename + if File.exist?(file) + puts "### #{file} Already exists. Overwrite? y/n:" + response = $stdin.gets.chomp.downcase + next unless response == 'y' + end puts "Creating new page: #{file}" open(file, 'w') do |page| page.puts "---" @@ -176,15 +186,13 @@ desc "Move source to source.old, install source theme updates, replace source/_i task :update_source, :theme do |t, args| theme = args.theme || 'classic' if File.directory?("#{source_dir}.old") - puts "removed existing #{source_dir}.old directory" + puts "## Removed existing #{source_dir}.old directory" rm_r "#{source_dir}.old", :secure=>true end - mv source_dir, "#{source_dir}.old" - puts "moved #{source_dir} into #{source_dir}.old/" - mkdir_p source_dir - cp_r "#{themes_dir}/"+theme+"/source/.", source_dir - cp_r "#{source_dir}.old/.", source_dir, :preserve=>true - cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/" + cp_r "#{source_dir}/.", "#{source_dir}.old" + puts "## Copied #{source_dir} into #{source_dir}.old/" + cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true + cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir puts "## Updated #{source_dir} ##" diff --git a/_config.yml b/_config.yml index 00dc8aa4..6d472bf6 100644 --- a/_config.yml +++ b/_config.yml @@ -36,7 +36,7 @@ excerpt_link: "Read on →" # "Continue reading" link text at the bottom of # list each of the sidebar modules you want to include, in the order you want them to appear. # To add custom asides, create files in /source/_includes/custom/asides/ and add them to the list like 'custom/asides/custom_aside_name.html' -default_asides: [asides/recent_posts.html, asides/twitter.html, asides/delicious.html, asides/pinboard.html] +default_asides: [asides/recent_posts.html, asides/github.html, asides/twitter.html, asides/delicious.html, asides/pinboard.html] # Each layout uses the default asides, but they can have their own asides instead. Simply uncomment the lines below # and add an array with the asides you want to use. @@ -48,6 +48,12 @@ default_asides: [asides/recent_posts.html, asides/twitter.html, asides/delicious # 3rd Party Settings # # ----------------------- # +# Github repositories +github_user: +github_repo_count: 0 +github_show_profile_link: true +github_skip_forks: true + # Twitter twitter_user: twitter_tweet_count: 4 diff --git a/plugins/category_generator.rb b/plugins/category_generator.rb index 97fb9f30..a7658458 100644 --- a/plugins/category_generator.rb +++ b/plugins/category_generator.rb @@ -69,7 +69,7 @@ module Jekyll if self.layouts.key? 'category_index' dir = self.config['category_dir'] || 'categories' self.categories.keys.each do |category| - self.write_category_index(File.join(dir, UnicodeUtils.nfkd(category).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').to_s), category) + self.write_category_index(File.join(dir, UnicodeUtils.nfkd(category).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').gsub(/-{2,}/, '-').to_s), category) end # Throw an exception if the layout couldn't be found. @@ -106,7 +106,7 @@ module Jekyll def category_links(categories) dir = @context.registers[:site].config['category_dir'] categories = categories.sort!.map do |item| - "<a class='category' href='/#{dir}/#{UnicodeUtils.nfkd(item).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').to_s}/'>#{item}</a>" + "<a class='category' href='/#{dir}/#{UnicodeUtils.nfkd(item).gsub(/[^\x00-\x7F]/, '').gsub(/_|\W/, '-').gsub(/-{2,}/, '-').to_s}/'>#{item}</a>" end case categories.length |