Class: Overrides::Generator

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

Instance Method Summary collapse

Instance Method Details

#configure_page(page, override_directory, site) ⇒ Object



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

def configure_page(page, override_directory, site)
    override_file = File.join(override_directory, page.path)
    if File.exists?(override_file)
        override_content = File.read(override_file)

        # Lets merge the old page data with any overrides
        matches = Jekyll::Document::YAML_FRONT_MATTER_REGEXP.match(override_content)
        if matches[0]
            page.data = page.data.merge(SafeYAML.load(matches[0]))
        end

        page.content = override_content.gsub(matches[0], '')
    end

    return page
end

#generate(site) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jekyll/overrides.rb', line 18

def generate(site)
    return if not override_directory = site.config['overrides']

    # Let's gather pages that exist in our override directory, in case
    # they aren't originally defined in our source directory`
    Dir["#{override_directory}/**/*.{md,html}"].each do |path|
        site.pages << OverridePage.new(
            site,
            override_directory.gsub(/\/$/, '') + '/',
            '',
            '/' + path.gsub(override_directory, '').gsub(/^\//, '')
        )
    end

    site.pages.map { | page | configure_page(page, override_directory, site) }
end