Class: ModularJekyll::Generator

Inherits:
Jekyll::Generator
  • Object
show all
Defined in:
lib/modular-jekyll.rb

Instance Method Summary collapse

Instance Method Details

#create_modular_content(page, modules, modules_dir) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/modular-jekyll.rb', line 5

def create_modular_content(page, modules, modules_dir)
    content = ''

    modules.each do | mod |
        module_html = '';
        params = Hash.new

        if mod.is_a? String
            # If we've a string, just load the file
            module_html = File.read File.join Dir.pwd, modules_dir, "#{mod}.html"
        else
            # Otherwise, we have params. Load the file and inject the params
            mod.select do |modName, modParams|
                module_html = File.read File.join Dir.pwd, modules_dir, "#{modName}.html"
                params['include'] = modParams
            end
        end

        # Pass page into our partial
        params['page'] = page
        tmpl = Liquid::Template.parse(module_html).render(params)

        # Append it to the content
        content += tmpl
    end

    content
end

#generate(site) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/modular-jekyll.rb', line 34

def generate(site)
    modules_dir = '_includes/modules'
    if site.config['modules']
        modules_dir = site.config['modules']
    end

    site.pages.map do | page |
        if page.data['modules']
            page.data['moduleContent'] = create_modular_content(
                page,
                page.data['modules'],
                modules_dir
            )
        end

        page
    end
end