jekyll-modular 0.0.1

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/modular-content.rb +50 -0
  3. 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: []