1 | #!/usr/bin/ruby |
---|
2 | # -*- encoding: utf-8 -*- |
---|
3 | require 'erb' |
---|
4 | |
---|
5 | contentsdir = 'contents.d/' |
---|
6 | tmpdir = 'tmp/' |
---|
7 | |
---|
8 | class Layout |
---|
9 | require './bin/render_rss.rb' |
---|
10 | include RenderRss |
---|
11 | extend ERB::DefMethod |
---|
12 | tmpldir = 'template/' |
---|
13 | def_erb_method('layout', File.join(tmpldir, 'layout.html.erb')) |
---|
14 | def_erb_method('layout_top', File.join(tmpldir, 'layout-top.html.erb')) |
---|
15 | def_erb_method('layout_pkginfo', File.join(tmpldir, 'layout-pkginfo.html.erb')) |
---|
16 | def_erb_method('layout_members', File.join(tmpldir, 'layout-members.html.erb')) |
---|
17 | end |
---|
18 | |
---|
19 | Dir::glob(File.join(contentsdir, "*.html")) do |filename| |
---|
20 | |
---|
21 | template = ERB.new(IO.read(filename),nil,'<>') |
---|
22 | filebasename = File.basename(filename) |
---|
23 | newfile = open(File.join(tmpdir, filebasename), "w") |
---|
24 | |
---|
25 | header_title_base = 'Vine Linux' |
---|
26 | |
---|
27 | layout = Layout.new |
---|
28 | |
---|
29 | case filebasename |
---|
30 | when /index.html/ |
---|
31 | layout_type = "layout_top" |
---|
32 | when /projectvine.html/ |
---|
33 | layout_type = "layout_members" |
---|
34 | when /package-info.html/ |
---|
35 | layout_type = "layout_pkginfo" |
---|
36 | else |
---|
37 | layout_type = "layout" |
---|
38 | end |
---|
39 | |
---|
40 | title=File.read(filename).lines.grep(/h1 class=\"title/).first |
---|
41 | if title |
---|
42 | $header_title = header_title_base+' - '+title.gsub(/.*>(.*)<.*/,"\\1").chomp |
---|
43 | else |
---|
44 | $header_title = header_title_base |
---|
45 | end |
---|
46 | |
---|
47 | newfile.puts layout.send(layout_type) { template.result } |
---|
48 | newfile.close |
---|
49 | |
---|
50 | end |
---|