blob: 073537e72b462881912ae5e89e6622af9e022286 (
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# coding: utf-8
require 'erb'
require 'set'
require 'yaml'
require 'page_local'
require 'page_remote'
require 'config'
class IndexPage < LocalPage
def initialize(dirname)
super(dirname)
end
def _metadata
if @metadata.nil?
yamlfile = _infile+"/index.yaml"
if File::exist?(yamlfile)
@metadata = YAML::load(File::read(yamlfile))
else
@metadata = {}
end
end
@metadata
end
def _ls
@ls ||= Dir::entries(_infile)
.select{|fname|not fname.start_with?(".")}
.map{|fname|"#{_infile}/#{fname}"}
.select{|path|Dir::exist?(path) or Config::get.html_suffixes.include?(File::extname(path).gsub(/^[.]/, ''))}
end
def pages
if @pages.nil?
@pages = []
for path in _ls
if Dir::exist?(path)
page = IndexPage::new(path)
@pages.unshift(page)
@pages += page.pages
else
@pages.unshift(LocalPage::new(path))
end
end
for data in _metadata['external']
@pages.unshift(RemotePage::new(data))
end
end
@pages
end
def _published
return nil
end
def _updated
return nil
end
def _years
return Set[]
end
end
ERB::new(File::read("tmpl/index.atom.erb")).def_method(IndexPage, 'atom()', "tmpl/index.atom.erb")
ERB::new(File::read("tmpl/index.md.erb")).def_method(IndexPage, '_input()', "tmpl/index.md.erb")
|