Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Javaプログラマーが学ぶRuby基礎/RDoc

  • 概要

RDocについて説明します。

  • RDocとは

Rubyソースコード中のコメントを元にドキュメントを出力します。
JavaJavaDocにあたるものですね。
JavaDocとの相違点は、HTMLの代わりに独自の文法を利用することも可能で
シンプルに表示内容の整形を行えること。
JavaDocの/** **/ のような専用のコメントを利用しなくてもよい。
出力されたファイルにソースコードが表示される
メソッド名をクリックするとメソッドのコードを確認出来る!)

  • RDocの実行

rbファイルのある階層でrdocコマンドを実行。
コマンドの詳細などはrdoc --help参照。

  • RDocのサンプル

先日作成したDateUtil.rbを参考にして
RDocを生成します。

    • DateUtieのRDoc対応版
=begin rdoc
=日付ユーティリティ
日付関連の処理を行います。
===Author tbpgr
===Create 2012/01/30
===Update 2012/01/30
=end
class DateUtil
=begin rdoc
==日時減算処理
	日時TOから日時FROMを引いた値を返却する
===Param timeFrom 日時FROM
===Param timeFrom 日時TO
===Return 日時の差分
===Contract 日時FROM>=日時FROMかつ24時間未満なら計算結果を返却する
===Contract 日時FROM>=日時FROMかつ24時間以上なら「時刻が不正です」というメッセージを返却する
===Contract 日時FROM<日時FROMなら「時刻が不正です」というメッセージを返却する
=end
	def self.calcDateDiff(timeFrom, timeTo)
		dateDiff = timeTo - timeFrom
		case dateDiff
		when 0..86399
			diffHour = (dateDiff/3600).to_i
			diffMinute = ((dateDiff-(3600*diffHour))/60).to_i
			diffSec = (dateDiff-(60*(diffMinute))-(3600*(diffHour))).to_i
			ret = "#{diffHour}時間#{diffMinute}#{diffSec}"
		# 比較結果(エラー)
		else
			"時刻が不正です\n"
		end
	end
	
=begin rdoc
==年月日時分秒の文字列から年を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	年部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:2012
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 年文字列
===Contract 引数の文字列の1文字目から4文字分を返却する
===Contract 文字数が3文字以下の場合は例外発生
=end
	def self.getYear(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(0,4)
	end
	
=begin rdoc
==年月日時分秒の文字列から月を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	月部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:01
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 月文字列
===Contract 引数の文字列の6文字目から2文字分を返却する
===Contract 文字数が1文字以下の場合は例外発生
=end
	def self.getMonth(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(5,2)
	end
	
=begin rdoc
==年月日時分秒の文字列から日を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	月部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:30
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 日文字列
===Contract 引数の文字列の9文字目から2文字分を返却する
===Contract 文字数が1文字以下の場合は例外発生
=end
	def self.getDay(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(8,2)
	end
	
=begin rdoc
==年月日時分秒の文字列から時を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	時部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:00
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 時文字列
===Contract 引数の文字列の12文字目から2文字分を返却する
===Contract 文字数が1文字以下の場合は例外発生
=end
	def self.getHour(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(11,2)
	end
	
=begin rdoc
==年月日時分秒の文字列から分を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	分部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:38
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 分文字列
===Contract 引数の文字列の15文字目から2文字分を返却する
===Contract 文字数が1文字以下の場合は例外発生
=end
	def self.getMinutes(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(14,2)
	end
	
=begin rdoc
==年月日時分秒の文字列から秒を取得
	yyyy/mm/dd hh:ss:mm形式の文字列から
	秒部分のみを取得する。
	例)
	入力:2012/01/30 00:38:05
	出力:05
===Param yyyymmddhhssmm 年月日時分秒の文字列
===Return 秒文字列
===Contract 引数の文字列の18文字目から2文字分を返却する
===Contract 文字数が1文字以下の場合は例外発生
=end
	def self.getSeconds(yyyymmddhhssmm)
		yyyymmddhhssmm.slice(17,2)
	end

end
    • RDoc出力イメージ

こんな感じになります。

ソースコードの確認も可能