+ # Atom XMLファイルを読み込んで解析し、テンプレートファイルにしたがってHTMLに変換するメソッドです
+ def self.to_html(xmlpath, destpath, entry_temppath, html_temppath)
+ # 引数チェック - 全必須
+ if xmlpath.empty? or destpath.empty? or entry_temppath.empty? or html_temppath.empty?
+ raise ArgumentError
+ end
+
+ # 必須ファイル存在チェック
+ unless File.exist?(xmlpath) and File.exist?(entry_temppath) and File.exist?(html_temppath)
+ raise IOError
+ end
+
+ # XML読み込み
+ entrylist = Entry.readxml(xmlpath)
+
+ body = ''
+ entrylist.each { |e|
+ # Entry毎のHTML表示部分を生成
+ body << e.to_template(entry_temppath)
+ }
+
+ # HTML全体のテンプレートを生成
+ html_temp = HtmlWriter.new(html_temppath, binding)
+
+ # HTMLに書き込み
+ myopen(destpath, 'w:utf-8') { |f|
+ f.write(CGI.pretty(html_temp.to_code))
+ }
+ end
+
+ # Entryをテンプレートに沿って変形するメソッド
+ def to_template(temppath)
+ erb = HtmlWriter.new(temppath, binding)
+ title = CGI.unescapeHTML(@attr[:title])
+ date = @attr[:published]
+ content = CGI.unescapeHTML(@attr[:content])
+ erb.to_code
+ end
+
+ # Entry挿入メソッド
+ def self.insert(path, entry)
+ feed = Feed.readxml(path)
+ entrylist = Entry.readxml(path)
+ entrylist.unshift entry
+
+ Feed.to_xml(path, feed, entrylist)
+
+ true
+ end
+
+ # Entry更新メソッド
+ def self.update(path, entry)
+ feed = Feed.readxml(path)
+ entrylist = Entry.readxml(path)
+
+ successed = false
+ entrylist.each_with_index { |e, i|
+ if e.entryid == entry.entryid
+ entrylist[i] = entry
+ successed = true
+ end
+ }
+ Feed.to_xml(path, feed, entrylist) if successed
+
+ successed
+ end
+
+ # Entryロードメソッド
+ def self.select(path, entryid)
+ feed = Feed.readxml(path)
+ entrylist = Entry.readxml(path)
+
+ entry = nil
+ entrylist.each_with_index { |e, i|
+ entry = entrylist[i].dup if e.entryid == entryid
+ }
+
+ entry
+ end
+
+ # Entry消去メソッド
+ def self.delete(path, entryid)
+ feed = Feed.readxml(path)
+ entrylist = Entry.readxml(path)
+
+ successed = false
+ delete_index = -1
+ entrylist.each_with_index { |e, i|
+ if e.entryid == entryid
+ delete_index = i
+ successed = true
+ end
+ }
+
+ if successed
+ entrylist.delete_at delete_index
+ Feed.to_xml(path, feed, entrylist)
+ end
+
+ successed
+ end
+