aboutsummaryrefslogtreecommitdiff
path: root/_plugins/meta.rb
blob: 85f3a754f61f096e29ed9892ca5759836df15f7d (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
module Meta
	class Generator < Jekyll::Generator
		def generate(site)
			# convert yaml @0123456789 (unix timestamps) into ruby Date
			site.data = parse_unix_dates(site.data)

			for page in site.collections['items'] do
				# directly add generated page metadata to `page.meta` in liquid
				page.data['meta'] = site.data['post'][page.slug]

				# set page.authors to author metadata from git+yaml
				page.data['authors'] = site.data['authors'].filter { |author|
					author['git'].intersect?(page.data['meta']['authors'])
				}

				# set page.date to generated date_initial
				page.data['date'] = page.data['meta']['date_initial']
			end
		end

		def parse_unix_dates(data)
			for key, value in data do
				if value.is_a? Hash
					data[key] = parse_unix_dates(value)
					next
				end
				
				next unless value.is_a? String
				next unless value =~ /^@\d+$/
				data[key] = Time.at(Integer(value[1..]))
			end
			return data
		end
	end
end