#!/usr/bin/ruby
require 'erb'
require 'rss'
require '../bin/rss_cdata.rb'
require '../bin/newsparser.rb'

# Layout class
class Layout
  extend ERB::DefMethod
  def_erb_method('layout', '../template/layout-news.html.erb')
end

# 
urlhead="http://vinelinux.org/"
newsdir="./"
topdir=".."
tmpdir = topdir+'/template/'
targetname="news"
rssname=targetname+'.rdf'

header=File.open(topdir+"/template/header.tmpl")
footer=File.open(topdir+"/template/footer.tmpl")

# Create rss object
rss = RSS::Maker.make("1.0") do |maker|
  maker.channel.about = "http://vinelinux.org/news/rss"
  maker.channel.title = "お知らせ"
  maker.channel.description = "Vine Linux からのお知らせです"
  maker.channel.link = "http://vinelinux.org/news/"
  maker.items.do_sort = true

# create news indexhtml contents
newsindex = <<EOF
<h1>Vine Linux からのお知らせ</h1>
<div class="news">
<table>
EOF

# create all news page
Dir.open(newsdir) { |dir|
 for filename in dir.grep(/.dat$/).sort.reverse

  news = NewsParser.new IO.read(newsdir+filename)
  titletext = news.item['title'].gsub("\n","").gsub(/<[^>]+>/,"").strip
  $header_title = 'Vine Linux News - '+titletext

  # index content
  newsindex += <<-EOF
  <tr>
   <td class="date">[#{news.item['date']}]</td>
   <td class="title"><a href="/#{targetname}/#{filename.gsub(/.dat/,".html")}">
       #{titletext}</a></td>
  </tr>
  EOF

  # rss
  rssitem = maker.items.new_item
  rssitem.link = urlhead+"#{targetname}/#{filename.gsub(/.dat/,".html")}"
  rssitem.title = news.item['title']
  rssitem.date = Time.parse(news.item['date'].gsub(/\,/,"/"))
  rssitem.dc_date = Time.parse(news.item['date'].gsub(/\,/,"/"))
  rssitem.content_encoded = news.item['description']

  # news page content
  newshtml = <<-EOF
<h1>#{news.item['title']}</h1>
<div class="ads-middle-linkunit">
<script type="text/javascript"><!--
google_ad_client = "pub-0334540465096658";
/* vinelinux link-unit */
google_ad_slot = "4566651758";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<div align="right">発行日:#{news.item['date']}</div>
<div class="news">
<p>
#{news.item['description']}
</p>
</div>
  EOF

  # wrtite news page
  template = ERB.new(newshtml)
  newfile = open(filename.gsub(/.dat/,".html"), "w")
  newfile.puts Layout.new.layout { template.result }
  newfile.close
 end
}

newsindex += <<EOF
</table>
</div>
EOF

# write news indexhtml
template = ERB.new(newsindex)
newsindexhtml = open("index.html", "w")
newsindexhtml.puts Layout.new.layout { template.result }
newsindexhtml.close

end

# write news rss
File.open(rssname, "w") do |file|
  file.puts rss.to_s
end
