Core Ext Integer

目次

試した環境

$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]
$ bundle exec ruby -r active_support -e 'puts ActiveSupport::VERSION::STRING'
4.0.0.rc1

Integer へ機能を追加する方法

require 'active_support/core_ext/integer'

Inflections

1st 2nd などのような序数に関連したメソッドが実装されています。

この機能だけ読み込みする方法

require 'active_support/core_ext/integer/inflections'

#ordinize

1st'2nd などの序数形式の文字列に変更します。

ActiveSupport::Inflector.ordinalize に丸投げします。

#ordinal

1st'2nd などの序数形式にする場合に付加する文字列を替えします。

ActiveSupport::Inflector.ordinalize に丸投げします。

Multiple

その数で割ったときに余りがないかどうかチェックするメソッド multiple_of?が実装されています。

この機能だけ読み込みする方法

require 'active_support/core_ext/integer/multiple'

#multiple_of?

self が 引数number で割り切れるかどうかを確認するメソッドです。 引数number が 0の場合は必ず false を返します。

10.multiple_of? 0
# => false
10.multiple_of? 1
# => true
10.multiple_of? 2
# => true
10.multiple_of? 3
# => false

Time

monthsyears というメソッドを実装しています。このメソッドのおかげで、1.months のような書き方ができます。 実際に生成される値の型は ActiveSupport::Duration です。

この機能だけ読み込みする方法

require 'active_support/core_ext/integer/time'

読み込みするファイル

#months

self ヶ月間を表す秒数を返します。

例:

2.months
# => 5184000
2 * 30 * 24 * 60 * 60
# => 5184000

month というエイリアスがあります。

#years

self年間を表す秒数を返します。 うるう年が考慮されていて、365日と4分の1日という扱いです。

2.years
# => 63115200.0
2 * 365.25 * 24 * 60 * 60
# => 63115200.0

year というエイリアスがあります。