jekyll-itafroma-archive 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9fdcedde2eea0b108d65ffa44065e14333114e0e
4
+ data.tar.gz: 8454bbea78dc1b3056054321e03faa2e9e485bb9
5
+ SHA512:
6
+ metadata.gz: 135741b59c67fc76594d0e43701143a8bd78949bd7f31ed7f3878874a88de95859c03f169aebe2e07b9aca7206338b5580ee1322ae92195df91c6d245fe0b1fe
7
+ data.tar.gz: 70ab00ad0b32852267b656ed3a98a18e2fb5f5b95a13b01130f6cd07ac9f52a82f8ee9237d36708a8ec4d17bef68409a6517da305f047018958737b48cc9c751
@@ -0,0 +1,50 @@
1
+ #
2
+ # Generates archive pages for year, month, and day.
3
+ #
4
+ # An archive listing will be created for each year, month, and day that
5
+ # contains a post.
6
+ #
7
+ # Author:: Mark Trapp
8
+ # Copyright: Copyright (c) 2013 Mark Trapp
9
+ # License:: MIT
10
+
11
+ module Jekyll
12
+ module Itafroma
13
+ class ArchiveGenerator < Generator
14
+ safe true
15
+
16
+ def generate(site)
17
+ layout = site.config['archive']['layout'] || 'archive'
18
+ if site.layouts.key? layout
19
+ exclude_categories = site.config['archive']['exclude'] || []
20
+ posts = site.posts.select do |post|
21
+ (post.categories & exclude_categories).empty?
22
+ end
23
+ site.pages += generate_archive_pages(site, posts, '%Y/%m/%d')
24
+ site.pages += generate_archive_pages(site, posts, '%Y/%m')
25
+ site.pages += generate_archive_pages(site, posts, '%Y')
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def generate_archive_pages(site, posts, pattern)
32
+ pages = []
33
+ collate(posts, pattern).each do |_, collated_posts|
34
+ pages << ArchivePage.new(site, site.source, pattern, collated_posts)
35
+ end
36
+ pages
37
+ end
38
+
39
+ def collate(posts, pattern)
40
+ collated = {}
41
+ posts.each do |post|
42
+ key = post.data['date'].strftime(pattern)
43
+ collated[key] ||= []
44
+ collated[key] << post
45
+ end
46
+ collated
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # An archive listing page.
3
+ #
4
+ # Author:: Mark Trapp
5
+ # Copyright: Copyright (c) 2013 Mark Trapp
6
+ # License:: MIT
7
+ # Acknowledgements:: Inspired by the work done by nlindley and ilkka on Github:
8
+ # https://gist.github.com/nlindley/6409459
9
+ # https://gist.github.com/nlindley/6409441
10
+ # https://gist.github.com/ilkka/707020
11
+ # https://gist.github.com/ilkka/707909
12
+
13
+ module Jekyll
14
+ module Itafroma
15
+ ##
16
+ # Represents an archive listing page.
17
+
18
+ class ArchivePage < Page
19
+ def initialize(site, base, pattern, posts)
20
+ @site = site
21
+ @base = base
22
+ @dir = posts.first.date.strftime(pattern)
23
+ @name = 'index.html'
24
+
25
+ process(@name)
26
+
27
+ layout = site.config['archive']['layout'] || 'archive'
28
+ read_yaml(File.join(base, '_layouts'), "#{layout}.html")
29
+
30
+ data['posts'] = posts
31
+ data['date'] = {
32
+ 'value' => posts.first.date,
33
+ 'pattern' => pattern,
34
+ }
35
+ end
36
+
37
+ def url
38
+ base = site.config['archive']['path'] || '/'
39
+ File.join(base, @dir, 'index.html')
40
+ end
41
+
42
+ def to_liquid
43
+ data.deep_merge('url' => url, 'content' => content)
44
+ end
45
+ end
46
+ end
47
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-itafroma-archive
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Mark Trapp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-03 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Jekyll plugin to create a set of archive pages.
14
+ email: mark@marktrapp.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/jekyll/itafroma/archive_generator.rb
20
+ - lib/jekyll/itafroma/archive_page.rb
21
+ homepage: http://marktrapp.com/projects/jekyll-archive
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.0.6
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Jekyll plugin to create a set of archive pages.
45
+ test_files: []