jekyll-itafroma-archive 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.
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: []