Blog
2006/09/20のBlog
[ 17:31 ]
[ Ruby ]
実際に実行するファイル
多分Javaでいうmainのような形になってるはず。
なんかこの辺りをどう作っていいのかが不明
モジュールとかね
#ファイル操作の為
require 'fileutils'
#記事クラス
require 'article'
#記事ファイル
$source = 'article.csv'
#記事を表示する
def printArticle
File::open($source) {|f|
f.each {|line|
article = Article::lineToArticle(line)
puts article
}
}
puts
end
#入力
def inputArticle
puts '投稿'
article = Article.new
puts '名前は?'
article.name = gets.chomp
puts '本文'
article.message = gets.chomp
return article
end
#記事をCSVとして書き込む
def writeArticle(article)
File::open($source,'a+') {|file|
count = 0
file.each {
count += 1
}
article.id = count.to_s
file.puts(article.toCSVLine)
}
end
#記事を削除する
def deleteArticle
puts '削除する記事番号を入力'
id = gets.chomp
if(id != ~/\d/)
puts '数字を入力してください'
else
filelist = []
File.open($source, "r") {|f|
f.each do |line|
lines = line.split(',')
if(lines[0] != id)
filelist.push line.chomp
end
end
}
File.open($source, 'w') {|f|
filelist.each {|line|
f.puts(line)
}
}
end
end
#メニュー
topmessage = <<eos printarticle else 2) ########################### !file.exist?($source) 2:閲覧 while if(mode="=" end eos true topmessage if elsif(mode="=" deletearticle 操作を選択 3) 1:投稿 #本処理 9) 3:削除 9:終了 break '閲覧' fileutils.touch($source) puts 'end' 1) mode="gets.chomp.to_i" '不正な入力' writearticle(article) article="inputArticle">
多分Javaでいうmainのような形になってるはず。
なんかこの辺りをどう作っていいのかが不明
モジュールとかね
#ファイル操作の為
require 'fileutils'
#記事クラス
require 'article'
#記事ファイル
$source = 'article.csv'
#記事を表示する
def printArticle
File::open($source) {|f|
f.each {|line|
article = Article::lineToArticle(line)
puts article
}
}
puts
end
#入力
def inputArticle
puts '投稿'
article = Article.new
puts '名前は?'
article.name = gets.chomp
puts '本文'
article.message = gets.chomp
return article
end
#記事をCSVとして書き込む
def writeArticle(article)
File::open($source,'a+') {|file|
count = 0
file.each {
count += 1
}
article.id = count.to_s
file.puts(article.toCSVLine)
}
end
#記事を削除する
def deleteArticle
puts '削除する記事番号を入力'
id = gets.chomp
if(id != ~/\d/)
puts '数字を入力してください'
else
filelist = []
File.open($source, "r") {|f|
f.each do |line|
lines = line.split(',')
if(lines[0] != id)
filelist.push line.chomp
end
end
}
File.open($source, 'w') {|f|
filelist.each {|line|
f.puts(line)
}
}
end
end
#メニュー
topmessage = <<eos printarticle else 2) ########################### !file.exist?($source) 2:閲覧 while if(mode="=" end eos true topmessage if elsif(mode="=" deletearticle 操作を選択 3) 1:投稿 #本処理 9) 3:削除 9:終了 break '閲覧' fileutils.touch($source) puts 'end' 1) mode="gets.chomp.to_i" '不正な入力' writearticle(article) article="inputArticle">
[ 17:12 ]
[ Ruby ]
コメントの書き方とか、
実行単位とかよくわからんけど
一応完成
アクセサの自動生成の際に、setterが
オブジェクト参照変数.setter(値)
として使用できず、
オブジェクト参照変数.変数名 = 値
なのが少し気持ち悪い
#記事オブジェクト
class Article
#曜日の日本語文字列表現の為のクラス変数
#@@wdays = ['日', '月', '火', '水', '木', '金', '土']
##ローカル変数
@id
@name
@message
@date
#整形済み文字列変数
@fdate
#コンストラクタ
def initialize (name, message)
@name = name
@message = message
@date = Time.new
@fdate = nil
end
#コンストラクタ
def initialize
@date = Time.new
@fdate = nil
end
#アクセサを生成
attr_accessor :id, :name, :message, :date
def getFdate
if (@fdate == nil)
@fdate = @date.strftime("%Y/%y/%d (#{@@wdays[@date.wday]}) %H:%M:%S")
end
return @fdate
end
def setFdate(date)
@fdate = date
end
#文字列表現
def to_s
return "\tid:#{@id}
\tname:#{@name}
\tmessage:#{@message}
\tdate:#{@fdate}"
end
#記事オブジェクトをCSV形式の行に
def toCSVLine
s = "#{@id},#{@name},#{@message},#{getFdate}"
return s
end
#クラスメソッド:CSV一行分をオブジェクトに
def Article.lineToArticle(line)
lineArray = line.split(/\s*,\s*/)
if(lineArray.size != 4)
puts '行が不正'
exit
else
article = Article.new
article.id=lineArray[0]
article.name=lineArray[1]
article.message=lineArray[2]
article.setFdate(lineArray[3])
return article
end
end
end
実行単位とかよくわからんけど
一応完成
アクセサの自動生成の際に、setterが
オブジェクト参照変数.setter(値)
として使用できず、
オブジェクト参照変数.変数名 = 値
なのが少し気持ち悪い
#記事オブジェクト
class Article
#曜日の日本語文字列表現の為のクラス変数
#@@wdays = ['日', '月', '火', '水', '木', '金', '土']
##ローカル変数
@id
@name
@message
@date
#整形済み文字列変数
@fdate
#コンストラクタ
def initialize (name, message)
@name = name
@message = message
@date = Time.new
@fdate = nil
end
#コンストラクタ
def initialize
@date = Time.new
@fdate = nil
end
#アクセサを生成
attr_accessor :id, :name, :message, :date
def getFdate
if (@fdate == nil)
@fdate = @date.strftime("%Y/%y/%d (#{@@wdays[@date.wday]}) %H:%M:%S")
end
return @fdate
end
def setFdate(date)
@fdate = date
end
#文字列表現
def to_s
return "\tid:#{@id}
\tname:#{@name}
\tmessage:#{@message}
\tdate:#{@fdate}"
end
#記事オブジェクトをCSV形式の行に
def toCSVLine
s = "#{@id},#{@name},#{@message},#{getFdate}"
return s
end
#クラスメソッド:CSV一行分をオブジェクトに
def Article.lineToArticle(line)
lineArray = line.split(/\s*,\s*/)
if(lineArray.size != 4)
puts '行が不正'
exit
else
article = Article.new
article.id=lineArray[0]
article.name=lineArray[1]
article.message=lineArray[2]
article.setFdate(lineArray[3])
return article
end
end
end
[ 17:09 ]
[ Ruby ]
なにかと評判のRuby
いつもはじめようと思っては挫折
の繰り返しだったRuby
とりあえずまとまった時間が出来たので1日だけど・・・
いじってみようと。
Javaの魅力は強い型付けにあるとおもってるので
Rubyはちょっと。。。。
なんて言い訳がましいことを捨てようと
いじってからでいいじゃないと!
とりあえずCUI掲示板を作ってみようと!
続く
いつもはじめようと思っては挫折
の繰り返しだったRuby
とりあえずまとまった時間が出来たので1日だけど・・・
いじってみようと。
Javaの魅力は強い型付けにあるとおもってるので
Rubyはちょっと。。。。
なんて言い訳がましいことを捨てようと
いじってからでいいじゃないと!
とりあえずCUI掲示板を作ってみようと!
続く
2006/09/16のBlog
[ 19:49 ]
[ しゃれ ]
[ 18:18 ]
[ しゃれ ]