class Jekyll::ProjectGenerator

Public Instance Methods

generate(site) click to toggle source
# File lib/dsm-portfolio-plugin.rb, line 78
def generate(site)
    # Select and group posts by subdirectory
    postsByProject = site.posts.docs.group_by { |post| post.id[/.*(?=\/)/] }

    # Iterate over groupings
    postsByProject.each do |grouping|
        projectId = grouping[0]
        projectFiles = grouping[1]

        projectUrls = {}
        projectCode = -1

        # Give each file one-off values and assess availability.
        projectFiles.each do |file|
            # Give each the project Id
            file.data['project_id'] = projectId
            # Give each the project title
            file.data['project_title'] = file.data['title'][/.*(?=\/)/]
            # Give each a type
            file.data['type'] = file.basename_without_ext

            if !file.data['project_code'].nil?
                projectCode = file.data['project_code']
            end

            projectUrls[file.data['type']] = file.url
        end

        # Add singling URLs based on type.
        projectFiles.each do |file|
            file.data['project_urls'] = projectUrls
            file.data['project_code'] = projectCode
        end
    end
end