jekyll-detail-generator 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/jekyll-detail-generator.rb +52 -0
  3. metadata +60 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8aeaa9e6150539df06b20c54c7d468e5f553da35e21a2e3fbdd33156cdda3c23
4
+ data.tar.gz: 3615bd81568a935b6f0611f671660a6a5d1fe0b0b93db42888ddb7db35b275cc
5
+ SHA512:
6
+ metadata.gz: c38f388f9c4e118db33eb5275eba76b3ea94964d70fc9261daaa658dc1b8b25bd8bd1641be6f40c8504fd3c3a84b3a35b48aed21e3c0c5a5399b134b4fd6a2be
7
+ data.tar.gz: e1b2d29dc5fa526147d8dc22925fa41f564f3d5e26e9f818036856644d6f6304f54b5f862e5c2aa93764531c8196f23c3ece466d98e6145210f1e393a6dbb203
@@ -0,0 +1,52 @@
1
+ module JekyllDetailGenerator
2
+ class JekyllDetailGenerator < Jekyll::Generator
3
+ def generate(site)
4
+ data = site.config["detail_page_gen"]
5
+ if data
6
+ data.each do |spec|
7
+ collection = spec["collection"]
8
+ layout = spec["layout"]
9
+ title_property = spec["title_property"]
10
+ url_property = spec["url_property"]
11
+ children_property = spec["children_property"]
12
+
13
+ site.collections[collection].docs.each do |collection|
14
+ collection.data[children_property].each do |element|
15
+ site.pages << DetailPage.new(site, element, collection.data["name"], layout, element[title_property], element[url_property])
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ class DetailPage < Jekyll::Page
24
+ def initialize(site, item, collection_name, layout, title, url)
25
+ @site = site # the current site instance.
26
+ @base = site.source # path to the source directory.
27
+ @dir = collection_name + "/" + url # the directory the page will reside in.
28
+
29
+ # All pages have the same filename, so define attributes straight away.
30
+ @basename = 'index' # filename without the extension.
31
+ @ext = '.html' # the extension.
32
+ @name = 'index.html' # basically @basename + @ext.
33
+
34
+ self.process(@name)
35
+ base_path = @site.layouts[layout].path
36
+ base_path.slice! @site.layouts[layout].name
37
+ self.read_yaml(base_path, @site.layouts[layout].name)
38
+
39
+ self.data["item"] = item
40
+ end
41
+
42
+ # Placeholders that are used in constructing page URL.
43
+ def url_placeholders
44
+ {
45
+ :path => @dir,
46
+ :category => @dir,
47
+ :basename => basename,
48
+ :output_ext => output_ext,
49
+ }
50
+ end
51
+ end
52
+ end
metadata ADDED
@@ -0,0 +1,60 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-detail-generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Ben McLean
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: jekyll
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.8.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.8.3
27
+ description:
28
+ email:
29
+ - benmclean007@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - lib/jekyll-detail-generator.rb
35
+ homepage:
36
+ licenses:
37
+ - MIT
38
+ metadata:
39
+ homepage_uri: https://github.com/benmmclean/jekyll-detail-generator
40
+ source_code_uri: https://github.com/benmmclean/jekyll-detail-generator
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 2.6.0
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubygems_version: 3.3.5
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: A Jekyll generator to create pages for each element of a collection
60
+ test_files: []