ruby-rails-extensions 1.1.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/ruby-rails-extensions/extensions/all_keys.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/all_values.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/any_key.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/any_value.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/assign_nil.rb +51 -56
- data/lib/ruby-rails-extensions/extensions/clean_string.rb +22 -30
- data/lib/ruby-rails-extensions/extensions/compact_blank_join.rb +6 -8
- data/lib/ruby-rails-extensions/extensions/compact_map.rb +11 -15
- data/lib/ruby-rails-extensions/extensions/current_day.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/current_month.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/current_week.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/day_of_week.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/display_military.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/display_user.rb +9 -15
- data/lib/ruby-rails-extensions/extensions/find_bang.rb +7 -11
- data/lib/ruby-rails-extensions/extensions/find_dupes.rb +8 -10
- data/lib/ruby-rails-extensions/extensions/first_dupe.rb +4 -6
- data/lib/ruby-rails-extensions/extensions/google_format.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/hash_only.rb +16 -20
- data/lib/ruby-rails-extensions/extensions/humanize_symbol.rb +2 -4
- data/lib/ruby-rails-extensions/extensions/in_utc.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/input.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/month_and_year.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/month_year.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/no_keys.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/no_values.rb +3 -5
- data/lib/ruby-rails-extensions/extensions/only_some.rb +16 -18
- data/lib/ruby-rails-extensions/extensions/overlaps.rb +5 -9
- data/lib/ruby-rails-extensions/extensions/pipe.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/presence_bang.rb +9 -11
- data/lib/ruby-rails-extensions/extensions/quarter_dates.rb +28 -34
- data/lib/ruby-rails-extensions/extensions/range_add.rb +36 -38
- data/lib/ruby-rails-extensions/extensions/range_multiply.rb +36 -38
- data/lib/ruby-rails-extensions/extensions/remove_reserved_keywords.rb +18 -20
- data/lib/ruby-rails-extensions/extensions/safe_parse.rb +15 -21
- data/lib/ruby-rails-extensions/extensions/select_present.rb +2 -6
- data/lib/ruby-rails-extensions/extensions/select_present_join.rb +1 -3
- data/lib/ruby-rails-extensions/extensions/set_to_sentence.rb +2 -4
- data/lib/ruby-rails-extensions/extensions/to_bool.rb +14 -24
- data/lib/ruby-rails-extensions/extensions/to_dec.rb +9 -15
- data/lib/ruby-rails-extensions/extensions/to_i.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/to_local.rb +8 -12
- data/lib/ruby-rails-extensions/extensions/to_negative_i.rb +22 -28
- data/lib/ruby-rails-extensions/extensions/to_nonzero_i.rb +22 -28
- data/lib/ruby-rails-extensions/extensions/to_or_sentence.rb +5 -9
- data/lib/ruby-rails-extensions/extensions/to_positive_i.rb +22 -28
- data/lib/ruby-rails-extensions/extensions/to_sort_i.rb +5 -11
- data/lib/ruby-rails-extensions/extensions/to_x.rb +9 -15
- data/lib/ruby-rails-extensions/extensions/todays_date.rb +9 -12
- data/lib/ruby-rails-extensions/extensions/uniq_map.rb +13 -15
- data/lib/ruby-rails-extensions/extensions/usd_to_f.rb +9 -15
- data/lib/ruby-rails-extensions/extensions/usd_to_i.rb +6 -10
- data/lib/ruby-rails-extensions/extensions/weighted_sum.rb +16 -18
- data/lib/ruby-rails-extensions/extensions/yesno.rb +9 -15
- data/lib/ruby-rails-extensions/extensions/zero_range.rb +14 -16
- data/lib/ruby-rails-extensions/version.rb +1 -1
- metadata +2 -2
@@ -3,45 +3,35 @@
|
|
3
3
|
require 'forwardable'
|
4
4
|
|
5
5
|
TrueClass.class_eval do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
true
|
10
|
-
end
|
6
|
+
# :nodoc:
|
7
|
+
def to_bool
|
8
|
+
true
|
11
9
|
end
|
12
10
|
end
|
13
11
|
|
14
12
|
FalseClass.class_eval do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
false
|
19
|
-
end
|
13
|
+
# :nodoc:
|
14
|
+
def to_bool
|
15
|
+
false
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
23
19
|
NilClass.class_eval do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
false
|
28
|
-
end
|
20
|
+
# :nodoc:
|
21
|
+
def to_bool
|
22
|
+
false
|
29
23
|
end
|
30
24
|
end
|
31
25
|
|
32
26
|
String.class_eval do
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
match?(/^(true|1|t|y|yes)$/i)
|
37
|
-
end
|
27
|
+
# :nodoc:
|
28
|
+
def to_bool
|
29
|
+
match?(/^(true|1|t|y|yes)$/i)
|
38
30
|
end
|
39
31
|
end
|
40
32
|
|
41
33
|
Numeric.class_eval do
|
42
|
-
|
43
|
-
extend Forwardable
|
34
|
+
extend Forwardable
|
44
35
|
|
45
|
-
|
46
|
-
end
|
36
|
+
def_delegators :to_s, :to_bool
|
47
37
|
end
|
@@ -1,28 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
NilClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
nil
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def to_dec(*_args)
|
6
|
+
nil
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
Numeric.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
(to_f / 100.0).round(p)
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def to_dec(p = 4)
|
13
|
+
(to_f / 100.0).round(p)
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
17
|
String.class_eval do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
(to_f / 100.0).round(p)
|
26
|
-
end
|
18
|
+
# :nodoc:
|
19
|
+
def to_dec(p = 4)
|
20
|
+
(to_f / 100.0).round(p)
|
27
21
|
end
|
28
22
|
end
|
@@ -1,19 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
TrueClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
1
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def to_i
|
6
|
+
1
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
FalseClass.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
0
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def to_i
|
13
|
+
0
|
18
14
|
end
|
19
15
|
end
|
@@ -5,22 +5,18 @@ if defined?(ActiveSupport::TimeWithZone)
|
|
5
5
|
require 'forwardable'
|
6
6
|
|
7
7
|
Time.class_eval do
|
8
|
-
|
9
|
-
extend Forwardable
|
8
|
+
extend Forwardable
|
10
9
|
|
11
|
-
|
12
|
-
end
|
10
|
+
def_delegators :to_datetime, :to_local
|
13
11
|
end
|
14
12
|
|
15
13
|
DateTime.class_eval do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
in_time_zone(RubyRailsExtensions.configuration.default_time_zone || 'Eastern Time (US & Canada)').to_datetime
|
23
|
-
end
|
14
|
+
# Converts to an Eastern time zone
|
15
|
+
#
|
16
|
+
# @return [DateTime]
|
17
|
+
#
|
18
|
+
def to_local
|
19
|
+
in_time_zone(RubyRailsExtensions.configuration.default_time_zone || 'Eastern Time (US & Canada)').to_datetime
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
@@ -1,45 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
String.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
val = to_i
|
4
|
+
# Calls `to_i` and returns the value if it is negative
|
5
|
+
#
|
6
|
+
# @return [Integer, Nil]
|
7
|
+
#
|
8
|
+
def to_negative_i
|
9
|
+
val = to_i
|
11
10
|
|
12
|
-
|
11
|
+
return unless val.negative?
|
13
12
|
|
14
|
-
|
15
|
-
end
|
13
|
+
val
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
17
|
Numeric.class_eval do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
val = to_i
|
18
|
+
# Calls `to_i` and returns the value if it is negative
|
19
|
+
#
|
20
|
+
# @return [Integer, Nil]
|
21
|
+
#
|
22
|
+
def to_negative_i
|
23
|
+
val = to_i
|
27
24
|
|
28
|
-
|
25
|
+
return unless val.negative?
|
29
26
|
|
30
|
-
|
31
|
-
end
|
27
|
+
val
|
32
28
|
end
|
33
29
|
end
|
34
30
|
|
35
31
|
NilClass.class_eval do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
nil
|
43
|
-
end
|
32
|
+
# Calls `to_i` and returns the value if it is negative
|
33
|
+
#
|
34
|
+
# @return [Nil]
|
35
|
+
#
|
36
|
+
def to_negative_i
|
37
|
+
nil
|
44
38
|
end
|
45
39
|
end
|
@@ -1,45 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
String.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
val = to_i
|
4
|
+
# Calls `to_i` and returns the value if it is nonzero
|
5
|
+
#
|
6
|
+
# @return [Integer, Nil]
|
7
|
+
#
|
8
|
+
def to_nonzero_i
|
9
|
+
val = to_i
|
11
10
|
|
12
|
-
|
11
|
+
return if val.zero?
|
13
12
|
|
14
|
-
|
15
|
-
end
|
13
|
+
val
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
17
|
Numeric.class_eval do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
val = to_i
|
18
|
+
# Calls `to_i` and returns the value if it is nonzero
|
19
|
+
#
|
20
|
+
# @return [Integer, Nil]
|
21
|
+
#
|
22
|
+
def to_nonzero_i
|
23
|
+
val = to_i
|
27
24
|
|
28
|
-
|
25
|
+
return if val.zero?
|
29
26
|
|
30
|
-
|
31
|
-
end
|
27
|
+
val
|
32
28
|
end
|
33
29
|
end
|
34
30
|
|
35
31
|
NilClass.class_eval do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
nil
|
43
|
-
end
|
32
|
+
# Calls `to_i` and returns the value if it is nonzero
|
33
|
+
#
|
34
|
+
# @return [Integer, Nil]
|
35
|
+
#
|
36
|
+
def to_nonzero_i
|
37
|
+
nil
|
44
38
|
end
|
45
39
|
end
|
@@ -4,18 +4,14 @@ require 'forwardable'
|
|
4
4
|
require 'set'
|
5
5
|
|
6
6
|
Array.class_eval do
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
to_sentence(two_words_connector: ' or ', last_word_connector: ', or ')
|
11
|
-
end
|
7
|
+
# @return [String]
|
8
|
+
def to_or_sentence
|
9
|
+
to_sentence(two_words_connector: ' or ', last_word_connector: ', or ')
|
12
10
|
end
|
13
11
|
end
|
14
12
|
|
15
13
|
Set.class_eval do
|
16
|
-
|
17
|
-
extend Forwardable
|
14
|
+
extend Forwardable
|
18
15
|
|
19
|
-
|
20
|
-
end
|
16
|
+
def_delegators :to_a, :to_or_sentence
|
21
17
|
end
|
@@ -1,45 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
String.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
val = to_i
|
4
|
+
# Calls `to_i` and returns the value if it is positive
|
5
|
+
#
|
6
|
+
# @return [Integer, Nil]
|
7
|
+
#
|
8
|
+
def to_positive_i
|
9
|
+
val = to_i
|
11
10
|
|
12
|
-
|
11
|
+
return unless val.positive?
|
13
12
|
|
14
|
-
|
15
|
-
end
|
13
|
+
val
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
17
|
Numeric.class_eval do
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
val = to_i
|
18
|
+
# Calls `to_i` and returns the value if it is positive
|
19
|
+
#
|
20
|
+
# @return [Integer, Nil]
|
21
|
+
#
|
22
|
+
def to_positive_i
|
23
|
+
val = to_i
|
27
24
|
|
28
|
-
|
25
|
+
return unless val.positive?
|
29
26
|
|
30
|
-
|
31
|
-
end
|
27
|
+
val
|
32
28
|
end
|
33
29
|
end
|
34
30
|
|
35
31
|
NilClass.class_eval do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
nil
|
43
|
-
end
|
32
|
+
# Calls `to_i` and returns the value if it is positive
|
33
|
+
#
|
34
|
+
# @return [Integer, Nil]
|
35
|
+
#
|
36
|
+
def to_positive_i
|
37
|
+
nil
|
44
38
|
end
|
45
39
|
end
|
@@ -1,22 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
TrueClass.class_eval do
|
4
|
-
|
5
|
-
alias_method :to_sort_i, :to_i
|
6
|
-
end
|
4
|
+
alias_method :to_sort_i, :to_i
|
7
5
|
end
|
8
6
|
|
9
7
|
FalseClass.class_eval do
|
10
|
-
|
11
|
-
alias_method :to_sort_i, :to_i
|
12
|
-
end
|
8
|
+
alias_method :to_sort_i, :to_i
|
13
9
|
end
|
14
10
|
|
15
11
|
NilClass.class_eval do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
-1
|
20
|
-
end
|
12
|
+
# :nodoc:
|
13
|
+
def to_sort_i
|
14
|
+
-1
|
21
15
|
end
|
22
16
|
end
|
@@ -1,28 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
TrueClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
'X'
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def to_x(*_args)
|
6
|
+
'X'
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
FalseClass.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
unless_true
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def to_x(unless_true = '')
|
13
|
+
unless_true
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
17
|
NilClass.class_eval do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
unless_true
|
26
|
-
end
|
18
|
+
# :nodoc:
|
19
|
+
def to_x(unless_true = nil)
|
20
|
+
unless_true
|
27
21
|
end
|
28
22
|
end
|
@@ -1,17 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
Time.zone.now.to_local.to_date
|
13
|
-
end
|
14
|
-
end
|
3
|
+
# Requires `ActiveSupport::TimeWithZone` and `Time#to_local`
|
4
|
+
Date.class_eval do
|
5
|
+
class << self
|
6
|
+
# Returns today according to Eastern time
|
7
|
+
#
|
8
|
+
# @return [Date]
|
9
|
+
#
|
10
|
+
def todays_date
|
11
|
+
Time.zone.now.to_local.to_date
|
15
12
|
end
|
16
13
|
end
|
17
14
|
end
|
@@ -1,25 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Array.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
return to_enum(:uniq_map) unless block_given?
|
4
|
+
# Same as `my_array.map(&block).uniq`
|
5
|
+
#
|
6
|
+
# @return [Array, Enumerable]
|
7
|
+
#
|
8
|
+
def uniq_map
|
9
|
+
return to_enum(:uniq_map) unless block_given?
|
11
10
|
|
12
|
-
|
11
|
+
results = []
|
13
12
|
|
14
|
-
|
15
|
-
|
13
|
+
each do |*args|
|
14
|
+
result = yield(*args)
|
16
15
|
|
17
|
-
|
16
|
+
next if results.include?(result)
|
18
17
|
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
return results
|
18
|
+
results.push(result)
|
23
19
|
end
|
20
|
+
|
21
|
+
return results
|
24
22
|
end
|
25
23
|
end
|
@@ -1,28 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
NilClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
nil
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def usd_to_f
|
6
|
+
nil
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
Numeric.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
to_f
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def usd_to_f
|
13
|
+
to_f
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
17
|
String.class_eval do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
gsub(/[$,]/, '').to_f
|
26
|
-
end
|
18
|
+
# :nodoc:
|
19
|
+
def usd_to_f
|
20
|
+
gsub(/[$,]/, '').to_f
|
27
21
|
end
|
28
22
|
end
|
@@ -1,19 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
NilClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
nil
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def usd_to_i
|
6
|
+
nil
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
String.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
gsub(/[$,]/, '').to_i
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def usd_to_i
|
13
|
+
gsub(/[$,]/, '').to_i
|
18
14
|
end
|
19
15
|
end
|
@@ -1,25 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
Array.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
)
|
19
|
-
end
|
20
|
-
|
21
|
-
val * (10**(size - index))
|
4
|
+
# Sums the array with each element weighing 10 times as the next.
|
5
|
+
# Expects `self` to be [Array<Numeric>]
|
6
|
+
#
|
7
|
+
# @raise [RubyRailsExtensions::Errors::NonNumericError] if any element is not Numeric
|
8
|
+
#
|
9
|
+
# @return [Integer]
|
10
|
+
#
|
11
|
+
def weighted_sum
|
12
|
+
each_with_index.sum do |val, index|
|
13
|
+
unless Numeric === val
|
14
|
+
raise(
|
15
|
+
RubyRailsExtensions::Errors::NonNumericError,
|
16
|
+
"Wrong element type (given #{val.class}, expected Numeric)"
|
17
|
+
)
|
22
18
|
end
|
19
|
+
|
20
|
+
val * (10**(size - index))
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
@@ -1,28 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
TrueClass.class_eval do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
'Yes'
|
8
|
-
end
|
4
|
+
# :nodoc:
|
5
|
+
def yesno
|
6
|
+
'Yes'
|
9
7
|
end
|
10
8
|
end
|
11
9
|
|
12
10
|
FalseClass.class_eval do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
'No'
|
17
|
-
end
|
11
|
+
# :nodoc:
|
12
|
+
def yesno
|
13
|
+
'No'
|
18
14
|
end
|
19
15
|
end
|
20
16
|
|
21
17
|
NilClass.class_eval do
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
'N/A'
|
26
|
-
end
|
18
|
+
# :nodoc:
|
19
|
+
def yesno
|
20
|
+
'N/A'
|
27
21
|
end
|
28
22
|
end
|