1 | #!/usr/bin/ruby |
---|
2 | require 'erb' |
---|
3 | require 'rss' |
---|
4 | require '../bin/rss_cdata.rb' |
---|
5 | require '../bin/newsparser.rb' |
---|
6 | |
---|
7 | # Layout class |
---|
8 | class Layout |
---|
9 | extend ERB::DefMethod |
---|
10 | def_erb_method('layout', '../template/layout-news.html.erb') |
---|
11 | end |
---|
12 | |
---|
13 | # |
---|
14 | urlhead="http://vinelinux.org/" |
---|
15 | eventsdir="./" |
---|
16 | topdir=".." |
---|
17 | tmpdir = topdir+'/template/' |
---|
18 | |
---|
19 | header=File.open(topdir+"/template/header.tmpl") |
---|
20 | footer=File.open(topdir+"/template/footer.tmpl") |
---|
21 | |
---|
22 | # Create rss object |
---|
23 | rss = RSS::Maker.make("1.0") do |maker| |
---|
24 | maker.channel.about = "http://vinelinux.org/event/rss" |
---|
25 | maker.channel.title = "Vine Linux イベント情報" |
---|
26 | maker.channel.description = "Vine Linux 関連のイベント情報です" |
---|
27 | maker.channel.link = "http://vinelinux.org/events/" |
---|
28 | maker.items.do_sort = true |
---|
29 | |
---|
30 | # create events indexhtml contents |
---|
31 | eventsindex = <<EOF |
---|
32 | <h1>Vine Linux のイベント情報</h1> |
---|
33 | <div class="news"> |
---|
34 | <p> |
---|
35 | Project Vine が主催、後援または協力のイベント・セミナー・勉強会の情報です。<br/> |
---|
36 | ユーザの皆さんが主導で企画されたイベントでもこちらに掲載することができますので、 |
---|
37 | ML, IRC や Project Vine 宛にお問い合せください。 |
---|
38 | </p> |
---|
39 | <table> |
---|
40 | EOF |
---|
41 | |
---|
42 | # create all events page |
---|
43 | Dir.open(eventsdir) { |dir| |
---|
44 | for filename in dir.grep(/.dat$/).sort.reverse |
---|
45 | |
---|
46 | events = NewsParser.new IO.read(eventsdir+filename) |
---|
47 | titletext = events.item['title'].gsub("\n","").gsub(/<[^>]+>/,"").strip |
---|
48 | |
---|
49 | # index content |
---|
50 | eventsindex += <<-EOF |
---|
51 | <tr> |
---|
52 | <td class="date">[#{events.item['date']}]</td> |
---|
53 | <td class="title"><a href="#{events.item['url']}"> |
---|
54 | #{titletext}</a></td> |
---|
55 | </tr> |
---|
56 | EOF |
---|
57 | |
---|
58 | # rss |
---|
59 | rssitem = maker.items.new_item |
---|
60 | rssitem.link = "#{events.item['url']}" |
---|
61 | if events.item['date'].gsub(/\,/,"") < Time.now.strftime('%Y%m%d') |
---|
62 | rssitem.title = "#{events.item['title']} (終了しました)" |
---|
63 | else |
---|
64 | rssitem.title = events.item['title'] |
---|
65 | end |
---|
66 | rssitem.date = Time.parse(events.item['date'].gsub(/\,/,"/")) |
---|
67 | rssitem.dc_date = Time.parse(events.item['date'].gsub(/\,/,"/")) |
---|
68 | rssitem.content_encoded = events.item['title'] |
---|
69 | |
---|
70 | end |
---|
71 | } |
---|
72 | |
---|
73 | eventsindex += <<EOF |
---|
74 | </table> |
---|
75 | </div> |
---|
76 | EOF |
---|
77 | |
---|
78 | # write events indexhtml |
---|
79 | template = ERB.new(eventsindex) |
---|
80 | eventsindexhtml = open("index.html", "w") |
---|
81 | eventsindexhtml.puts Layout.new.layout { template.result } |
---|
82 | eventsindexhtml.close |
---|
83 | |
---|
84 | end |
---|
85 | |
---|
86 | # write events rss |
---|
87 | File.open("events.rdf", "w") do |file| |
---|
88 | file.puts rss.to_s |
---|
89 | end |
---|