aboutsummaryrefslogtreecommitdiff
blob: 2f357c7762f7057271d51be4a286d72e280c9b21 (plain)
1
2
3
4
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
33
34
35
36
37
38
39
40
41
42
43
module Gentoo
  class HerdsGenerator < Jekyll::Generator
    XML = '_data/herds.xml'

    def generate(site)
      xml = Nokogiri::XML(File.open(XML))
      
      site.data['herds'] ||= {}

      xml.xpath('/herds/herd').each do |item|
        item_data = {}

        name = item.xpath('./name').first.text

        item_data['email'] = item.xpath('./email/text()').first.content
        item_data['description'] = item.xpath('./description/text()').first.text

        ns_maint = item.xpath('./maintainer')
        item_data['maintainers'] = [] if ns_maint.size > 0
        ns_maint.each do |maint|
          maint_data = {
            'email' => maint.xpath('./email/text()').first.text,
            'name' => nil,
            'role' => nil,
          }

          ns_name = maint.xpath('./name/text()')
          maint_data['name'] = ns_name.first.text if ns_name.size > 0

          ns_role = maint.xpath('./role/text()')
          maint_data['role'] = ns_role.first.text if ns_role.size > 0

          item_data['maintainers'] << maint_data
        end

        ns_maintproj = item.xpath('./maintainingproject/text()')
        item_data['proj'] = ns_maintproj.first.text if ns_maintproj.size > 0

        site.data['herds'][name] = item_data
      end
    end
  end
end