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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/lib/ruby-rails-extensions/extensions/all_keys.rb +3 -5
  4. data/lib/ruby-rails-extensions/extensions/all_values.rb +3 -5
  5. data/lib/ruby-rails-extensions/extensions/any_key.rb +3 -5
  6. data/lib/ruby-rails-extensions/extensions/any_value.rb +3 -5
  7. data/lib/ruby-rails-extensions/extensions/assign_nil.rb +51 -56
  8. data/lib/ruby-rails-extensions/extensions/clean_string.rb +22 -30
  9. data/lib/ruby-rails-extensions/extensions/compact_blank_join.rb +6 -8
  10. data/lib/ruby-rails-extensions/extensions/compact_map.rb +11 -15
  11. data/lib/ruby-rails-extensions/extensions/current_day.rb +3 -5
  12. data/lib/ruby-rails-extensions/extensions/current_month.rb +6 -10
  13. data/lib/ruby-rails-extensions/extensions/current_week.rb +6 -10
  14. data/lib/ruby-rails-extensions/extensions/day_of_week.rb +6 -10
  15. data/lib/ruby-rails-extensions/extensions/display_military.rb +6 -10
  16. data/lib/ruby-rails-extensions/extensions/display_user.rb +9 -15
  17. data/lib/ruby-rails-extensions/extensions/find_bang.rb +7 -11
  18. data/lib/ruby-rails-extensions/extensions/find_dupes.rb +8 -10
  19. data/lib/ruby-rails-extensions/extensions/first_dupe.rb +4 -6
  20. data/lib/ruby-rails-extensions/extensions/google_format.rb +3 -5
  21. data/lib/ruby-rails-extensions/extensions/hash_only.rb +16 -20
  22. data/lib/ruby-rails-extensions/extensions/humanize_symbol.rb +2 -4
  23. data/lib/ruby-rails-extensions/extensions/in_utc.rb +6 -10
  24. data/lib/ruby-rails-extensions/extensions/input.rb +6 -10
  25. data/lib/ruby-rails-extensions/extensions/month_and_year.rb +3 -5
  26. data/lib/ruby-rails-extensions/extensions/month_year.rb +3 -5
  27. data/lib/ruby-rails-extensions/extensions/no_keys.rb +3 -5
  28. data/lib/ruby-rails-extensions/extensions/no_values.rb +3 -5
  29. data/lib/ruby-rails-extensions/extensions/only_some.rb +16 -18
  30. data/lib/ruby-rails-extensions/extensions/overlaps.rb +5 -9
  31. data/lib/ruby-rails-extensions/extensions/pipe.rb +6 -10
  32. data/lib/ruby-rails-extensions/extensions/presence_bang.rb +9 -11
  33. data/lib/ruby-rails-extensions/extensions/quarter_dates.rb +28 -34
  34. data/lib/ruby-rails-extensions/extensions/range_add.rb +36 -38
  35. data/lib/ruby-rails-extensions/extensions/range_multiply.rb +36 -38
  36. data/lib/ruby-rails-extensions/extensions/remove_reserved_keywords.rb +18 -20
  37. data/lib/ruby-rails-extensions/extensions/safe_parse.rb +15 -21
  38. data/lib/ruby-rails-extensions/extensions/select_present.rb +2 -6
  39. data/lib/ruby-rails-extensions/extensions/select_present_join.rb +1 -3
  40. data/lib/ruby-rails-extensions/extensions/set_to_sentence.rb +2 -4
  41. data/lib/ruby-rails-extensions/extensions/to_bool.rb +14 -24
  42. data/lib/ruby-rails-extensions/extensions/to_dec.rb +9 -15
  43. data/lib/ruby-rails-extensions/extensions/to_i.rb +6 -10
  44. data/lib/ruby-rails-extensions/extensions/to_local.rb +8 -12
  45. data/lib/ruby-rails-extensions/extensions/to_negative_i.rb +22 -28
  46. data/lib/ruby-rails-extensions/extensions/to_nonzero_i.rb +22 -28
  47. data/lib/ruby-rails-extensions/extensions/to_or_sentence.rb +5 -9
  48. data/lib/ruby-rails-extensions/extensions/to_positive_i.rb +22 -28
  49. data/lib/ruby-rails-extensions/extensions/to_sort_i.rb +5 -11
  50. data/lib/ruby-rails-extensions/extensions/to_x.rb +9 -15
  51. data/lib/ruby-rails-extensions/extensions/todays_date.rb +9 -12
  52. data/lib/ruby-rails-extensions/extensions/uniq_map.rb +13 -15
  53. data/lib/ruby-rails-extensions/extensions/usd_to_f.rb +9 -15
  54. data/lib/ruby-rails-extensions/extensions/usd_to_i.rb +6 -10
  55. data/lib/ruby-rails-extensions/extensions/weighted_sum.rb +16 -18
  56. data/lib/ruby-rails-extensions/extensions/yesno.rb +9 -15
  57. data/lib/ruby-rails-extensions/extensions/zero_range.rb +14 -16
  58. data/lib/ruby-rails-extensions/version.rb +1 -1
  59. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e8f9814c953c52a6b56ec84e47dcb454cfab59a93b0df09b9ab13c4316dde06
4
- data.tar.gz: a048a5ade66c437bd04dabd3b144d91c60db8fc9743df5844731c7623ee8016a
3
+ metadata.gz: 55be0ba360ddc75f362e31c5e4dd863f6816b897e3fb722db748698a379e586f
4
+ data.tar.gz: 879cdcb54384e5927bacbad99714f54c2d737a86f55aac79d4f97d83de658b59
5
5
  SHA512:
6
- metadata.gz: b3cbde7896d269f925aa33a25be9e7d9819a2ef351a4681b56f3afc1794c8e5d6c8e4104fd7b0570c9cd0ed3e30dcb2e1722442edb3b3322e031022500dd25ee
7
- data.tar.gz: 74694442b83d70c7c7562838879014ecee55a5e9b66392be54414c20f1c6f7457375f9907ae11c2cc9a0787836deaa618c3ccc444516c50678abc53626915245
6
+ metadata.gz: 868b8f77e7e7ec4d974ac7af0e0f07352362d009ff1ab748868965a072f4c7cafd1ea9ec44ec30a6828f19a7d59a9ec1b4bafd7272a25fde053f7d442809f6ca
7
+ data.tar.gz: 43d272c9b3bc33ccceef003fc3f4e8be1bb3dd6ec83dd6b42879186e7c52dab68c57b0cfa8b6fe5a5660e756a06c0b2110fab411bed6d1e239b5866c8a310a58
data/CHANGELOG.md CHANGED
@@ -1,6 +1,14 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 2.0.0 (2024-07-26)
5
+ ------------------
6
+
7
+ * Possible breaking change:
8
+ * The check for `method_defined?` was removed because the whole point of this gem is to define the methonds in that
9
+ block. This means there are some things assumed the developer using this gem already has, from this gem or rails,
10
+ e.g. `Enumerable#compact_blank_join` relies on `Enumerable#compact_blank`
11
+
4
12
  1.1.1 (2024-03-01)
5
13
  ------------------
6
14
 
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hash.class_eval do
4
- unless method_defined?(:all_keys?)
5
- # @see Enumerable#all?
6
- def all_keys?(...)
7
- keys.all?(...)
8
- end
4
+ # @see Enumerable#all?
5
+ def all_keys?(...)
6
+ keys.all?(...)
9
7
  end
10
8
  end
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hash.class_eval do
4
- unless method_defined?(:all_values?)
5
- # @see Enumerable#all?
6
- def all_values?(...)
7
- values.all?(...)
8
- end
4
+ # @see Enumerable#all?
5
+ def all_values?(...)
6
+ values.all?(...)
9
7
  end
10
8
  end
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hash.class_eval do
4
- unless method_defined?(:any_key?)
5
- # @see Enumerable#any?
6
- def any_key?(...)
7
- keys.any?(...)
8
- end
4
+ # @see Enumerable#any?
5
+ def any_key?(...)
6
+ keys.any?(...)
9
7
  end
10
8
  end
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hash.class_eval do
4
- unless method_defined?(:any_value?)
5
- # @see Enumerable#any?
6
- def any_value?(...)
7
- values.any?(...)
8
- end
4
+ # @see Enumerable#any?
5
+ def any_value?(...)
6
+ values.any?(...)
9
7
  end
10
8
  end
@@ -1,67 +1,62 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- if defined?(ActiveModel::AttributeAssignment) && Hash.method_defined?(:stringify_keys)
4
- module ActiveModel
5
- module AttributeAssignment
6
- unless method_defined?(:assign_nil_attributes)
7
- # Allows you to set nil attributes by passing in a hash of attributes with
8
- # keys matching the attribute names.
9
- #
10
- # @raise [ActiveModel::ForbiddenAttributesError] If the passed hash responds to `permitted?` method
11
- # and the return value of this method is +false+.
12
- #
13
- # @example
14
- #
15
- # class Cat
16
- # include ActiveModel::AttributeAssignment
17
- # attr_accessor :name, :status
18
- # end
19
- #
20
- # cat = Cat.new
21
- # cat.assign_nil_attributes(name: "Gorby")
22
- # cat.name # => 'Gorby'
23
- # cat.status # => nil
24
- # cat.assign_nil_attributes(status: "yawning")
25
- # cat.name # => 'Gorby'
26
- # cat.status # => 'yawning'
27
- # cat.assign_nil_attributes(status: "sleeping")
28
- # cat.name # => 'Gorby'
29
- # cat.status # => 'yawning'
30
- #
31
- # @param new_attributes
32
- #
33
- # @return [void]
34
- #
35
- def assign_nil_attributes(new_attributes)
36
- unless new_attributes.respond_to?(:stringify_keys)
37
- raise(ArgumentError, 'When assigning attributes, you must pass a hash as an argument.')
38
- end
3
+ # requires `ActiveModel::AttributeAssignment` and `Hash#stringify_keys`
4
+ module ActiveModel
5
+ module AttributeAssignment
6
+ # Allows you to set nil attributes by passing in a hash of attributes with
7
+ # keys matching the attribute names.
8
+ #
9
+ # @raise [ActiveModel::ForbiddenAttributesError] If the passed hash responds to `permitted?` method
10
+ # and the return value of this method is +false+.
11
+ #
12
+ # @example
13
+ #
14
+ # class Cat
15
+ # include ActiveModel::AttributeAssignment
16
+ # attr_accessor :name, :status
17
+ # end
18
+ #
19
+ # cat = Cat.new
20
+ # cat.assign_nil_attributes(name: "Gorby")
21
+ # cat.name # => 'Gorby'
22
+ # cat.status # => nil
23
+ # cat.assign_nil_attributes(status: "yawning")
24
+ # cat.name # => 'Gorby'
25
+ # cat.status # => 'yawning'
26
+ # cat.assign_nil_attributes(status: "sleeping")
27
+ # cat.name # => 'Gorby'
28
+ # cat.status # => 'yawning'
29
+ #
30
+ # @param new_attributes
31
+ #
32
+ # @return [void]
33
+ #
34
+ def assign_nil_attributes(new_attributes)
35
+ unless new_attributes.respond_to?(:stringify_keys)
36
+ raise(ArgumentError, 'When assigning attributes, you must pass a hash as an argument.')
37
+ end
39
38
 
40
- return if new_attributes.empty?
39
+ return if new_attributes.empty?
41
40
 
42
- attributes = new_attributes.stringify_keys
41
+ attributes = new_attributes.stringify_keys
43
42
 
44
- _assign_nil_attributes(sanitize_for_mass_assignment(attributes))
45
- end
46
- end
43
+ _assign_nil_attributes(sanitize_for_mass_assignment(attributes))
44
+ end
47
45
 
48
- private
46
+ private
49
47
 
50
- unless private_method_defined?(:_assign_nil_attributes)
51
- # Assign any `nil` attribute
52
- #
53
- # @param attributes [Hash]
54
- #
55
- # @return [void]
56
- #
57
- def _assign_nil_attributes(attributes)
58
- attributes.each do |k, v|
59
- next unless v.nil?
48
+ # Assign any `nil` attribute
49
+ #
50
+ # @param attributes [Hash]
51
+ #
52
+ # @return [void]
53
+ #
54
+ def _assign_nil_attributes(attributes)
55
+ attributes.each do |k, v|
56
+ next unless v.nil?
60
57
 
61
- _assign_attribute(k, v)
62
- end
63
- end
58
+ _assign_attribute(k, v)
64
59
  end
65
- end
60
+ end
66
61
  end
67
62
  end
@@ -1,41 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  String.class_eval do
4
- unless method_defined?(:clean!)
5
- # Remove all non-UTF-8 chars from a string.
6
- #
7
- # @param replace_with [String, nil] What to replace invalid chars with.
8
- #
9
- # @return [String]
10
- #
11
- def clean!(replace_with = '')
12
- replace(encode('UTF-8', invalid: :replace, undef: :replace, replace: replace_with))
13
- end
4
+ # Remove all non-UTF-8 chars from a string.
5
+ #
6
+ # @param replace_with [String, nil] What to replace invalid chars with.
7
+ #
8
+ # @return [String]
9
+ #
10
+ def clean!(replace_with = '')
11
+ replace(encode('UTF-8', invalid: :replace, undef: :replace, replace: replace_with))
14
12
  end
15
13
 
16
- unless method_defined?(:clean)
17
- # @see {#clean!}
18
- def clean(replace_with = '')
19
- dup.clean!(replace_with)
20
- end
14
+ # @see {#clean!}
15
+ def clean(replace_with = '')
16
+ dup.clean!(replace_with)
21
17
  end
22
18
 
23
- unless method_defined?(:clean_binary!)
24
- # Remove all non-UTF-8 chars from a string and convert to binary.
25
- #
26
- # @param replace_with [String, nil] What to replace invalid chars with.
27
- #
28
- # @return [String]
29
- #
30
- def clean_binary!(replace_with = '')
31
- replace(encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: replace_with))
32
- end
19
+ # Remove all non-UTF-8 chars from a string and convert to binary.
20
+ #
21
+ # @param replace_with [String, nil] What to replace invalid chars with.
22
+ #
23
+ # @return [String]
24
+ #
25
+ def clean_binary!(replace_with = '')
26
+ replace(encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: replace_with))
33
27
  end
34
28
 
35
- unless method_defined?(:clean_binary)
36
- # @see {#clean_binary!}
37
- def clean_binary(replace_with = '')
38
- dup.clean_binary!(replace_with)
39
- end
29
+ # @see {#clean_binary!}
30
+ def clean_binary(replace_with = '')
31
+ dup.clean_binary!(replace_with)
40
32
  end
41
33
  end
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Enumerable.class_eval do
4
- if method_defined?(:compact_blank) && !method_defined?(:compact_blank_join)
5
- # Joins the elements together after calling `compact_blank`
6
- #
7
- # @return [String]
8
- #
9
- def compact_blank_join(using = '')
10
- compact_blank.join(using)
11
- end
4
+ # Joins the elements together after calling `compact_blank`
5
+ #
6
+ # @return [String]
7
+ #
8
+ def compact_blank_join(using = '')
9
+ compact_blank.join(using)
12
10
  end
13
11
  end
@@ -4,26 +4,22 @@ require 'forwardable'
4
4
  require 'set'
5
5
 
6
6
  Array.class_eval do
7
- unless method_defined?(:compact_map)
8
- # @return [Array]
9
- # Similar to `filter_map` but excludes `nil` instead of falsy
10
- def compact_map
11
- return to_enum(:compact_map) unless block_given?
7
+ # @return [Array]
8
+ # Similar to `filter_map` but excludes `nil` instead of falsy
9
+ def compact_map
10
+ return to_enum(:compact_map) unless block_given?
12
11
 
13
- r = []
14
- each do |*args|
15
- result = yield(*args)
16
- r.push(result) unless result.nil?
17
- end
18
- r
12
+ r = []
13
+ each do |*args|
14
+ result = yield(*args)
15
+ r.push(result) unless result.nil?
19
16
  end
17
+ r
20
18
  end
21
19
  end
22
20
 
23
21
  Set.class_eval do
24
- unless method_defined?(:compact_map)
25
- extend Forwardable
22
+ extend Forwardable
26
23
 
27
- def_delegators :to_a, :compact_map
28
- end
24
+ def_delegators :to_a, :compact_map
29
25
  end
@@ -3,10 +3,8 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:current_day)
7
- # :nodoc:
8
- def current_day
9
- beginning_of_day..end_of_day
10
- end
6
+ # :nodoc:
7
+ def current_day
8
+ beginning_of_day..end_of_day
11
9
  end
12
10
  end
@@ -3,19 +3,15 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:current_month)
7
- # :nodoc:
8
- def current_month
9
- beginning_of_month..end_of_month
10
- end
6
+ # :nodoc:
7
+ def current_month
8
+ beginning_of_month..end_of_month
11
9
  end
12
10
  end
13
11
 
14
12
  Date.class_eval do
15
- unless method_defined?(:current_month)
16
- # :nodoc:
17
- def current_month
18
- beginning_of_month..end_of_month
19
- end
13
+ # :nodoc:
14
+ def current_month
15
+ beginning_of_month..end_of_month
20
16
  end
21
17
  end
@@ -3,19 +3,15 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:current_week)
7
- # @return Range<DateTime>
8
- def current_week
9
- beginning_of_week..end_of_week
10
- end
6
+ # @return Range<DateTime>
7
+ def current_week
8
+ beginning_of_week..end_of_week
11
9
  end
12
10
  end
13
11
 
14
12
  Date.class_eval do
15
- unless method_defined?(:current_week)
16
- # @return Range<Date>
17
- def current_week
18
- beginning_of_week..end_of_week
19
- end
13
+ # @return Range<Date>
14
+ def current_week
15
+ beginning_of_week..end_of_week
20
16
  end
21
17
  end
@@ -3,19 +3,15 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:day_of_week)
7
- # @return [String] - Full day word
8
- def day_of_week
9
- strftime('%A')
10
- end
6
+ # @return [String] - Full day word
7
+ def day_of_week
8
+ strftime('%A')
11
9
  end
12
10
  end
13
11
 
14
12
  Date.class_eval do
15
- unless method_defined?(:day_of_week)
16
- # @return [String] - Full day word
17
- def day_of_week
18
- strftime('%A')
19
- end
13
+ # @return [String] - Full day word
14
+ def day_of_week
15
+ strftime('%A')
20
16
  end
21
17
  end
@@ -3,19 +3,15 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:display_military)
7
- # @return [String]
8
- def display_military(all = false)
9
- strftime(all ? '%m/%d/%Y %T' : '%-m/%-d/%y %T')
10
- end
6
+ # @return [String]
7
+ def display_military(all = false)
8
+ strftime(all ? '%m/%d/%Y %T' : '%-m/%-d/%y %T')
11
9
  end
12
10
  end
13
11
 
14
12
  Time.class_eval do
15
- unless method_defined?(:display_military)
16
- # @return [String]
17
- def display_military(all = false)
18
- to_datetime.display_military(all)
19
- end
13
+ # @return [String]
14
+ def display_military(all = false)
15
+ to_datetime.display_military(all)
20
16
  end
21
17
  end
@@ -3,28 +3,22 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:display_user)
7
- # @return [String] - mm/dd/yyyy HH:MM:SS AM/PM or m/d/yy HH:MM:SS AM/PM
8
- def display_user(all = false)
9
- strftime(all ? '%m/%d/%Y %r' : '%-m/%-d/%y %r')
10
- end
6
+ # @return [String] - mm/dd/yyyy HH:MM:SS AM/PM or m/d/yy HH:MM:SS AM/PM
7
+ def display_user(all = false)
8
+ strftime(all ? '%m/%d/%Y %r' : '%-m/%-d/%y %r')
11
9
  end
12
10
  end
13
11
 
14
12
  Time.class_eval do
15
- unless method_defined?(:display_user)
16
- # @return [String] - mm/dd/yyyy or m/d/yy
17
- def display_user(all = false)
18
- to_datetime.display_user(all)
19
- end
13
+ # @return [String] - mm/dd/yyyy or m/d/yy
14
+ def display_user(all = false)
15
+ to_datetime.display_user(all)
20
16
  end
21
17
  end
22
18
 
23
19
  Date.class_eval do
24
- unless method_defined?(:display_user)
25
- # @return [String] - mm/dd/yyyy or m/d/yy
26
- def display_user(all = false)
27
- strftime(all ? '%m/%d/%Y' : '%-m/%-d/%y')
28
- end
20
+ # @return [String] - mm/dd/yyyy or m/d/yy
21
+ def display_user(all = false)
22
+ strftime(all ? '%m/%d/%Y' : '%-m/%-d/%y')
29
23
  end
30
24
  end
@@ -4,21 +4,17 @@ require 'forwardable'
4
4
  require 'set'
5
5
 
6
6
  Array.class_eval do
7
- unless method_defined?(:find!)
8
- # :nodoc:
9
- def find!(&block)
10
- x = find(&block)
11
- raise(RubyRailsExtensions::Errors::NotFoundError, 'Not found') if x.nil?
7
+ # :nodoc:
8
+ def find!(&block)
9
+ x = find(&block)
10
+ raise(RubyRailsExtensions::Errors::NotFoundError, 'Not found') if x.nil?
12
11
 
13
- x
14
- end
12
+ x
15
13
  end
16
14
  end
17
15
 
18
16
  Set.class_eval do
19
- unless method_defined?(:find!)
20
- extend Forwardable
17
+ extend Forwardable
21
18
 
22
- def_delegators :to_a, :find!
23
- end
19
+ def_delegators :to_a, :find!
24
20
  end
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Array.class_eval do
4
- unless method_defined?(:find_dupes)
5
- # @param threshold [Integer] default 1
6
- #
7
- # @return [Array] excluding items that appear more than `threshold` times
8
- #
9
- def find_dupes(threshold = 1)
10
- results = select { |item| count(item) > threshold }
11
- results.uniq!
4
+ # @param threshold [Integer] default 1
5
+ #
6
+ # @return [Array] excluding items that appear more than `threshold` times
7
+ #
8
+ def find_dupes(threshold = 1)
9
+ results = select { |item| count(item) > threshold }
10
+ results.uniq!
12
11
 
13
- results
14
- end
12
+ results
15
13
  end
16
14
  end
@@ -1,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Array.class_eval do
4
- unless method_defined?(:first_dupe)
5
- # @param threshold [Integer] default 1
6
- # @return [*] first items that appears more than `threshold` times
7
- def first_dupe(threshold = 1)
8
- find { |item| count(item) > threshold }
9
- end
4
+ # @param threshold [Integer] default 1
5
+ # @return [*] first items that appears more than `threshold` times
6
+ def first_dupe(threshold = 1)
7
+ find { |item| count(item) > threshold }
10
8
  end
11
9
  end
@@ -3,10 +3,8 @@
3
3
  require 'date'
4
4
 
5
5
  DateTime.class_eval do
6
- unless method_defined?(:google_format)
7
- # @return [String] yyyy-mm-ddThh:mm:ss+hhmm
8
- def google_format
9
- strftime('%FT%T%z')
10
- end
6
+ # @return [String] yyyy-mm-ddThh:mm:ss+hhmm
7
+ def google_format
8
+ strftime('%FT%T%z')
11
9
  end
12
10
  end
@@ -1,27 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Hash.class_eval do
4
- unless method_defined?(:only)
5
- # The opposite of +Hash.except+.
6
- # ~/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.5/lib/active_support/core_ext/hash/except.rb
7
- # https://apidock.com/rails/Hash/except
8
- #
9
- # Selects only the supplied keys.
10
- #
11
- # http://api.rubyonrails.org/classes/Hash.html#method-i-slice
12
- #
13
- def only(*keys)
14
- slice(*keys)
15
- end
4
+ # The opposite of +Hash.except+.
5
+ # ~/.rvm/gems/ruby-2.1.2/gems/activesupport-4.2.5/lib/active_support/core_ext/hash/except.rb
6
+ # https://apidock.com/rails/Hash/except
7
+ #
8
+ # Selects only the supplied keys.
9
+ #
10
+ # http://api.rubyonrails.org/classes/Hash.html#method-i-slice
11
+ #
12
+ def only(*keys)
13
+ slice(*keys)
16
14
  end
17
15
 
18
- unless method_defined?(:only!)
19
- # See +only+
20
- #
21
- # http://apidock.com/rails/v4.1.8/Hash/extract%21
22
- #
23
- def only!(*keys)
24
- slice!(*keys)
25
- end
16
+ # See +only+
17
+ #
18
+ # http://apidock.com/rails/v4.1.8/Hash/extract%21
19
+ #
20
+ def only!(*keys)
21
+ slice!(*keys)
26
22
  end
27
23
  end
@@ -3,9 +3,7 @@
3
3
  require 'forwardable'
4
4
 
5
5
  Symbol.class_eval do
6
- unless method_defined?(:humanize)
7
- extend Forwardable
6
+ extend Forwardable
8
7
 
9
- def_delegators :to_s, :humanize
10
- end
8
+ def_delegators :to_s, :humanize
11
9
  end