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 +7 -0
- data/lib/jekyll/itafroma/archive_generator.rb +50 -0
- data/lib/jekyll/itafroma/archive_page.rb +47 -0
- metadata +45 -0
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: []
|