jekyll-modular 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/modular-content.rb +50 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c7060785039cb4e27c8a7ceee3eaa07a3dd7a7de
|
4
|
+
data.tar.gz: 43dcd043444713c30a9d238e6547c4d3a03d0d01
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 03b7e51129868e40d866ecd1526f56bf35ee7ad64ac3dc4b67aeff603c0c80fe306c289b2b880b71301a884859b492032cb8bcaa7872bcbeea56e33e1d6f6e7f
|
7
|
+
data.tar.gz: d21f690a092426d49a70850f21dd40f0238a879941dabe2fc47a7a91a01f1b68ffcf48712249c6235ac4d399f55f0aca0d83893a8dbafb22be41c957726d0e76
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Jekyll
|
2
|
+
class ModularContent < Jekyll::Tags::IncludeTag
|
3
|
+
def parse_module(modules_dir, module_name, page, context, site)
|
4
|
+
include_data = Hash.new
|
5
|
+
module_path = nil
|
6
|
+
|
7
|
+
if module_name.is_a? String
|
8
|
+
module_path = File.join(modules_dir, "#{module_name}.html")
|
9
|
+
else
|
10
|
+
module_name.select do |file_name, params|
|
11
|
+
module_path = File.join(modules_dir, "#{file_name}.html")
|
12
|
+
include_data = params
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context['include'] = include_data
|
17
|
+
|
18
|
+
module_html = site.liquid_renderer
|
19
|
+
.file(module_path)
|
20
|
+
.parse(read_file(module_path, context))
|
21
|
+
.render!(context)
|
22
|
+
context['include'] = nil
|
23
|
+
|
24
|
+
module_html
|
25
|
+
end
|
26
|
+
|
27
|
+
def render(context)
|
28
|
+
site = context.registers[:site]
|
29
|
+
page_data = context.environments.first['page']
|
30
|
+
page = site.pages.detect { |page| page.url == page_data['url']}
|
31
|
+
renderer = Jekyll::Renderer.new(site, page, {})
|
32
|
+
|
33
|
+
modules_dir = File.join(site.source, '_includes/modules')
|
34
|
+
if site.config['modules']
|
35
|
+
modules_dir = File.join(site.source, site.config['modules'])
|
36
|
+
end
|
37
|
+
|
38
|
+
return unless page.data['modules']
|
39
|
+
|
40
|
+
html = ''
|
41
|
+
page.data['modules'].each do |mod_name|
|
42
|
+
html += parse_module(modules_dir, mod_name, page, context, site)
|
43
|
+
end
|
44
|
+
|
45
|
+
html
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
Liquid::Template.register_tag('modular_content', Jekyll::ModularContent)
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-modular
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Scott Dover
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-22 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email:
|
15
|
+
- scott.dover@researchsquare.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/modular-content.rb
|
21
|
+
homepage: https://github.com/researchsquare/jekyll-modular
|
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.6.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: A modular approach to jekyll content
|
45
|
+
test_files: []
|