From 33839673df92989d16bcc87f8ea75700d8991c21 Mon Sep 17 00:00:00 2001 From: ima1zumi Date: Mon, 12 Apr 2021 18:39:32 +0900 Subject: [PATCH] Update Warning.warn and Kernel.warn since 3.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Warning.warn, Warning#warn, Kernel.warn は Ruby 3.0.0 から引数に category を受け取れるようになったため追加しました。 ref: https://bugs.ruby-lang.org/issues/17122 --- refm/api/src/_builtin/Warning | 24 ++++++++++++++++++++++++ refm/api/src/_builtin/functions | 19 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/refm/api/src/_builtin/Warning b/refm/api/src/_builtin/Warning index 8854e95d6c..1ae49582f9 100644 --- a/refm/api/src/_builtin/Warning +++ b/refm/api/src/_builtin/Warning @@ -38,7 +38,11 @@ category の警告を表示するかどうかのフラグを設定します。 @see [[m:Warning.[] ]] #@end +#@since 3.0.0 +--- warn(message, category: nil) -> nil +#@else --- warn(message) -> nil +#@end 引数 message を標準エラー出力 [[m:$stderr]] に出力します。 @@ -47,6 +51,17 @@ category の警告を表示するかどうかのフラグを設定します。 またオーバーライドしたメソッドからは super を呼び出すことで、デフォルトの動作である [[m:$stderr]] への出力ができます。 #@samplecode +#@since 3.0.0 +module Warning + # 警告メッセージに category を表示し、message 末尾に !!! を追加する + def self.warn(message, category: nil) + super("#{category} warning : #{message.chomp}!!!\n") + end +end + +warn("hoge", category: :deprecated) +# => deprecated warning : hoge!!! +#@else warn "hoge" # => hoge module Warning @@ -58,14 +73,21 @@ end warn "hoge" # => hoge!!! #@end +#@end @param message 出力するオブジェクトを指定します。 +@param category 警告のカテゴリを指定します。サポートされている category については [[m:Warning.[] ]] を参照してください。 + @see [[m:Kernel.#warn]], [[m:Warning#warn]] == Public Instance Methods +#@since 3.0.0 +--- warn(message, category: nil) -> nil +#@else --- warn(message) -> nil +#@end 引数 message を標準エラー出力 [[m:$stderr]] に出力します。 @@ -73,6 +95,8 @@ warn "hoge" # => hoge!!! @param message 出力するオブジェクトを指定します。 +@param category 警告のカテゴリを指定します。サポートされている category については [[m:Warning.[] ]] を参照してください。 + #@# TODO: messageに改行を渡さないとそのまま出力されるように見えるため、確認してから記載する。 #@# Writes warning message msg to $stderr, followed by a newline if the message does not end in a newline. diff --git a/refm/api/src/_builtin/functions b/refm/api/src/_builtin/functions index 8c75e75488..4da565c577 100644 --- a/refm/api/src/_builtin/functions +++ b/refm/api/src/_builtin/functions @@ -1574,11 +1574,15 @@ to_s メソッドにより文字列に変換してから出力します。 @see [[m:Kernel.#print]], [[m:Kernel.#p]], [[m:IO#puts]] +#@since 3.0.0 +--- warn(*message, uplevel: nil, category: nil) -> nil +#@else #@since 2.5.0 --- warn(*message, uplevel: nil) -> nil #@else --- warn(*message) -> nil #@end +#@end message を 標準エラー出力 [[m:$stderr]] に出力します。 [[m:$VERBOSE]] フラグ が nil のときは何も出力しません。 @@ -1600,6 +1604,9 @@ nil #@since 2.5.0 @param uplevel いくつ前の呼び出し元のファイル名と行番号を表示するかを0以上の数値で指定します。 nil の場合は表示しません。 #@end +#@since 3.0.0 +@param category 警告のカテゴリを指定します。サポートされている category については [[m:Warning.[] ]] を参照してください。 +#@end @raise IOError 標準エラー出力が書き込み用にオープンされていなければ発生します。 @raise Errno::EXXX 出力に失敗した場合に発生します。 @@ -1620,6 +1627,18 @@ foo #@end #@end +#@since 3.0.0 +#@samplecode category の例 +Warning[:deprecated] = true # 非推奨の警告を表示する +warn("deprecated!!", category: :deprecated) +# => deprecated! + +Warning[:deprecated] = false # 非推奨の警告を表示しない +warn("deprecated!!", category: :deprecated) +# 警告は出力されない +#@end +#@end + #@since 2.4.0 @see [[m:Warning#warn]], [[m:$stderr]],[[m:$VERBOSE]] #@else