_plugins/project-data-plugin.rb (58 lines of code) (raw):
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#--------------------------------------------------------
#
# Process each project, adding in the following attributes:
# - project_id
# - project_name (if not specifically set)
# - project_longname (if not specifically set)
# - project_domain (if not specifically set)
#
# This plugin is set to "highest" priority so that it runs before any other
# plugins and the projects array is therefore available to them.
#
module ProjectDataPlugin
class ProjectDataGenerator < Jekyll::Generator
priority :highest
def generate(site)
projects = Array.new
site.data['projects'].each do | projectId, project|
project['project_id'] = projectId
project['project_name'] = project.fetch("project_name", projectId.capitalize())
project['project_name_lower'] = project["project_name"].downcase
project['project_longname'] = project.fetch("project_longname", project['project_name'] )
project['project_apachename'] = "Apache " + project["project_longname"]
project['project_domain'] = project.fetch("project_domain", projectId + ".apache.org")
if project['attic_issue']
project['attic_issue_link'] = "https://issues.apache.org/jira/browse/" + project['attic_issue']
end
if project['project_shortdesc'].nil?
shortdesc = project['project_description']
idx = shortdesc.index('.')
if idx and idx > 0
shortdesc = shortdesc.slice(0, idx + 1)
end
retired_proj = site.data['committee-retired']['retired'][projectId]
if retired_proj
shortdesc = retired_proj['description']
end
project['project_shortdesc'] = shortdesc
end
if project['project_type'].nil?
project['project_type'] = 'PMC'
end
projects.push(project)
end
site.data['project_array'] = projects.sort_by { |project| project['project_name_lower'] }
## Initialize Array of years from 2009 onwards
current_year = Time.new.year
years = Array.new
year = Hash.new
year['year'] = 2004.to_s
year['projects'] = Array.new
years.push(year)
for i in 2009..current_year do
year = Hash.new
year['year'] = i.to_s
year['projects'] = Array.new
years.push(year)
end
## Populate the projects in the Array
projects = site.data['project_array'].sort_by { |project| project['retirement_date']}.reverse
projects.each do | project|
year = project['retirement_date'].year
i = year - 2008
if i < 0
i = 0
end
years[i]['projects'].push(project)
end
site.data['years_array'] = years.sort_by { |year| year['year'] }.reverse
end
end
end