ruby-rails-extensions 0.1.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 +7 -0
- data/CHANGELOG.md +8 -0
- data/LICENSE.txt +21 -0
- data/lib/ruby-rails-extensions/extensions/compact_map.rb +29 -0
- data/lib/ruby-rails-extensions/extensions/current_day.rb +12 -0
- data/lib/ruby-rails-extensions/extensions/current_month.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/current_week.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/day_of_week.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/display_military.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/display_user.rb +30 -0
- data/lib/ruby-rails-extensions/extensions/find_bang.rb +33 -0
- data/lib/ruby-rails-extensions/extensions/find_dupes.rb +16 -0
- data/lib/ruby-rails-extensions/extensions/first_dupe.rb +11 -0
- data/lib/ruby-rails-extensions/extensions/google_format.rb +12 -0
- data/lib/ruby-rails-extensions/extensions/hash_only.rb +27 -0
- data/lib/ruby-rails-extensions/extensions/in_utc.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/input.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/month_and_year.rb +12 -0
- data/lib/ruby-rails-extensions/extensions/month_year.rb +12 -0
- data/lib/ruby-rails-extensions/extensions/overlaps.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/pipe.rb +22 -0
- data/lib/ruby-rails-extensions/extensions/presence_bang.rb +26 -0
- data/lib/ruby-rails-extensions/extensions/remove_reserved_keywords.rb +30 -0
- data/lib/ruby-rails-extensions/extensions/to_bool.rb +47 -0
- data/lib/ruby-rails-extensions/extensions/to_dec.rb +28 -0
- data/lib/ruby-rails-extensions/extensions/to_i.rb +19 -0
- data/lib/ruby-rails-extensions/extensions/to_or_sentence.rb +21 -0
- data/lib/ruby-rails-extensions/extensions/to_sort_i.rb +22 -0
- data/lib/ruby-rails-extensions/extensions/to_x.rb +28 -0
- data/lib/ruby-rails-extensions/extensions/usd_to_f.rb +28 -0
- data/lib/ruby-rails-extensions/extensions/usd_to_i.rb +19 -0
- data/lib/ruby-rails-extensions/extensions/yesno.rb +28 -0
- data/lib/ruby-rails-extensions/version.rb +5 -0
- data/lib/ruby-rails-extensions.rb +91 -0
- metadata +106 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d56af69b3c8476fe02a20b1b9afd927f80e8ac40ff659e5e6654ee590d7ce15e
|
4
|
+
data.tar.gz: 1ce72548d0d1d98c1c77b45c7cf417858bd1b0388a3fd71e6468b00a9c9e8c88
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: '08c4e8c6951e77ebdf318385fcf6d9e490260786e297455e7b5dfc804672659234aba622eeab15d864cb261f1744e9d15bb3ec184e11f4b4ac3694f2cc14fda1'
|
7
|
+
data.tar.gz: bba958f49013cca6f9fcee9bbada3f31c9f8b9a36577aeec19751d393a71e0e857332fe851403f5b0dc189170896d125de4eb6ccd0855d111909adf14c8d262e
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2023 Brands Insurance
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
require 'set'
|
5
|
+
|
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?
|
12
|
+
|
13
|
+
r = []
|
14
|
+
each do |*args|
|
15
|
+
result = yield(*args)
|
16
|
+
r.push(result) unless result.nil?
|
17
|
+
end
|
18
|
+
r
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Set.class_eval do
|
24
|
+
unless method_defined?(:compact_map)
|
25
|
+
extend Forwardable
|
26
|
+
|
27
|
+
def_delegators :to_a, :compact_map
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Date.class_eval do
|
6
|
+
unless method_defined?(:current_month)
|
7
|
+
# :nodoc:
|
8
|
+
def current_month
|
9
|
+
beginning_of_month..end_of_month
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DateTime.class_eval do
|
15
|
+
unless method_defined?(:current_month)
|
16
|
+
# :nodoc:
|
17
|
+
def current_month
|
18
|
+
beginning_of_month..end_of_month
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Date.class_eval do
|
6
|
+
unless method_defined?(:current_week)
|
7
|
+
# @return Range<Date>
|
8
|
+
def current_week
|
9
|
+
beginning_of_week..end_of_week
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DateTime.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
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Date.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
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DateTime.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
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
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
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
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
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Date.class_eval do
|
6
|
+
unless method_defined?(:display_user)
|
7
|
+
# @return [String] - mm/dd/yyyy or m/d/yy
|
8
|
+
def display_user(all = false)
|
9
|
+
strftime(all ? '%m/%d/%Y' : '%-m/%-d/%y')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DateTime.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
|
+
strftime(all ? '%m/%d/%Y %r' : '%-m/%-d/%y %r')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Time.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
|
+
to_datetime.display_user(all)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
module RubyRailsExtensions
|
7
|
+
module Extensions
|
8
|
+
module FindBang
|
9
|
+
class NotFoundError < StandardError
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Array.class_eval do
|
16
|
+
unless method_defined?(:find!)
|
17
|
+
# :nodoc:
|
18
|
+
def find!(&block)
|
19
|
+
x = find(&block)
|
20
|
+
raise(RubyRailsExtensions::Extensions::FindBang::NotFoundError, 'Not found') if x.nil?
|
21
|
+
|
22
|
+
x
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
Set.class_eval do
|
28
|
+
unless method_defined?(:find!)
|
29
|
+
extend Forwardable
|
30
|
+
|
31
|
+
def_delegators :to_a, :find!
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
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!
|
12
|
+
|
13
|
+
results
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
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
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
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
|
16
|
+
end
|
17
|
+
|
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
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
DateTime.class_eval do
|
6
|
+
unless method_defined?(:in_utc)
|
7
|
+
# @return [DateTime]
|
8
|
+
def in_utc
|
9
|
+
utc? ? self : in_time_zone('UTC').to_datetime
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
Time.class_eval do
|
15
|
+
unless method_defined?(:in_utc)
|
16
|
+
# @return [Time]
|
17
|
+
def in_utc
|
18
|
+
utc? ? self : in_time_zone('UTC')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
Date.class_eval do
|
6
|
+
unless method_defined?(:input)
|
7
|
+
# @return [String] - yyyy-mm-dd
|
8
|
+
def input(_all = false)
|
9
|
+
strftime('%F')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
DateTime.class_eval do
|
15
|
+
unless method_defined?(:input)
|
16
|
+
# @return [String] - yyyy-mm-dd[Thh:mm::ss]
|
17
|
+
def input(all = false)
|
18
|
+
strftime(all ? '%F %T' : '%F')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
Array.class_eval do
|
7
|
+
unless method_defined?(:overlaps?)
|
8
|
+
# @return [Boolean]
|
9
|
+
def overlaps?(other)
|
10
|
+
!(self & Array(other)).empty?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Set.class_eval do
|
16
|
+
unless method_defined?(:overlaps?)
|
17
|
+
extend Forwardable
|
18
|
+
|
19
|
+
def_delegators :to_a, :overlaps?
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
Array.class_eval do
|
7
|
+
unless method_defined?(:pipe)
|
8
|
+
# Replace my_array.map(&:method1).map(&:method2) with my_array.pipe(:method1, :method2)
|
9
|
+
# @return [Array]
|
10
|
+
def pipe(*fns)
|
11
|
+
map { |a| fns.reduce(a, &:send) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Set.class_eval do
|
17
|
+
unless method_defined?(:pipe)
|
18
|
+
extend Forwardable
|
19
|
+
|
20
|
+
def_delegators :to_a, :pipe
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyRailsExtensions
|
4
|
+
module Extensions
|
5
|
+
module PresenceBang
|
6
|
+
class BlankObjectError < StandardError
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Object.class_eval do
|
13
|
+
unless method_defined?(:presence!)
|
14
|
+
# Returns self if `present?`
|
15
|
+
#
|
16
|
+
# @raise [BlankObject] if `blank?`
|
17
|
+
#
|
18
|
+
# @return [*]
|
19
|
+
#
|
20
|
+
def presence!
|
21
|
+
raise(RubyRailsExtensions::Extensions::PresenceBang::BlankObjectError, 'Blank object') if blank?
|
22
|
+
|
23
|
+
self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if defined?(ActiveJob::Base)
|
4
|
+
ActiveJob::Base.class_eval do
|
5
|
+
unless method_defined?(:remove_reserved_keywords)
|
6
|
+
# Removes any reserved keywords that can't be passed along.
|
7
|
+
#
|
8
|
+
# @param arguments [...]
|
9
|
+
#
|
10
|
+
# @return [String, Numeric, Hash, Array, nil]
|
11
|
+
#
|
12
|
+
def remove_reserved_keywords(arguments)
|
13
|
+
case arguments
|
14
|
+
when String, Numeric
|
15
|
+
arguments
|
16
|
+
when Hash
|
17
|
+
arguments.each_with_object({}) do |(key, value), obj|
|
18
|
+
next if key.start_with?('_aj')
|
19
|
+
|
20
|
+
obj[key] = remove_reserved_keywords(value)
|
21
|
+
end
|
22
|
+
when Array
|
23
|
+
arguments.map do |arg|
|
24
|
+
remove_reserved_keywords(arg)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
|
5
|
+
TrueClass.class_eval do
|
6
|
+
unless method_defined?(:to_bool)
|
7
|
+
# :nodoc:
|
8
|
+
def to_bool
|
9
|
+
true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
FalseClass.class_eval do
|
15
|
+
unless method_defined?(:to_bool)
|
16
|
+
# :nodoc:
|
17
|
+
def to_bool
|
18
|
+
false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
NilClass.class_eval do
|
24
|
+
unless method_defined?(:to_bool)
|
25
|
+
# :nodoc:
|
26
|
+
def to_bool
|
27
|
+
false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
String.class_eval do
|
33
|
+
unless method_defined?(:to_bool)
|
34
|
+
# :nodoc:
|
35
|
+
def to_bool
|
36
|
+
match?(/^(true|1|t|y|yes)$/i)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Numeric.class_eval do
|
42
|
+
unless method_defined?(:to_bool)
|
43
|
+
extend Forwardable
|
44
|
+
|
45
|
+
def_delegators :to_s, :to_bool
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
NilClass.class_eval do
|
4
|
+
unless method_defined?(:to_dec)
|
5
|
+
# :nodoc:
|
6
|
+
def to_dec(*_args)
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Numeric.class_eval do
|
13
|
+
unless method_defined?(:to_dec)
|
14
|
+
# :nodoc:
|
15
|
+
def to_dec(p = 4)
|
16
|
+
(to_f / 100.0).round(p)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
String.class_eval do
|
22
|
+
unless method_defined?(:to_dec)
|
23
|
+
# :nodoc:
|
24
|
+
def to_dec(p = 4)
|
25
|
+
(to_f / 100.0).round(p)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
TrueClass.class_eval do
|
4
|
+
unless method_defined?(:to_i)
|
5
|
+
# :nodoc:
|
6
|
+
def to_i
|
7
|
+
1
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
FalseClass.class_eval do
|
13
|
+
unless method_defined?(:to_i)
|
14
|
+
# :nodoc:
|
15
|
+
def to_i
|
16
|
+
0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'forwardable'
|
4
|
+
require 'set'
|
5
|
+
|
6
|
+
Array.class_eval do
|
7
|
+
unless method_defined?(:to_or_sentence)
|
8
|
+
# @return [String]
|
9
|
+
def to_or_sentence
|
10
|
+
to_sentence(two_words_connector: ' or ', last_word_connector: ', or ')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
Set.class_eval do
|
16
|
+
unless method_defined?(:to_or_sentence)
|
17
|
+
extend Forwardable
|
18
|
+
|
19
|
+
def_delegators :to_a, :to_or_sentence
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
TrueClass.class_eval do
|
4
|
+
unless method_defined?(:to_sort_i)
|
5
|
+
alias_method :to_sort_i, :to_i
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
FalseClass.class_eval do
|
10
|
+
unless method_defined?(:to_sort_i)
|
11
|
+
alias_method :to_sort_i, :to_i
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
NilClass.class_eval do
|
16
|
+
unless method_defined?(:to_sort_i)
|
17
|
+
# :nodoc:
|
18
|
+
def to_sort_i
|
19
|
+
-1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
TrueClass.class_eval do
|
4
|
+
unless method_defined?(:to_x)
|
5
|
+
# :nodoc:
|
6
|
+
def to_x(*_args)
|
7
|
+
'X'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
FalseClass.class_eval do
|
13
|
+
unless method_defined?(:to_x)
|
14
|
+
# :nodoc:
|
15
|
+
def to_x(unless_true = '')
|
16
|
+
unless_true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
NilClass.class_eval do
|
22
|
+
unless method_defined?(:to_x)
|
23
|
+
# :nodoc:
|
24
|
+
def to_x(unless_true = nil)
|
25
|
+
unless_true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
NilClass.class_eval do
|
4
|
+
unless method_defined?(:usd_to_f)
|
5
|
+
# :nodoc:
|
6
|
+
def usd_to_f
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
Numeric.class_eval do
|
13
|
+
unless method_defined?(:usd_to_f)
|
14
|
+
# :nodoc:
|
15
|
+
def usd_to_f
|
16
|
+
to_f
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
String.class_eval do
|
22
|
+
unless method_defined?(:usd_to_f)
|
23
|
+
# :nodoc:
|
24
|
+
def usd_to_f
|
25
|
+
gsub(/[$,]/, '').to_f
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
NilClass.class_eval do
|
4
|
+
unless method_defined?(:usd_to_i)
|
5
|
+
# :nodoc:
|
6
|
+
def usd_to_i
|
7
|
+
nil
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
String.class_eval do
|
13
|
+
unless method_defined?(:usd_to_i)
|
14
|
+
# :nodoc:
|
15
|
+
def usd_to_i
|
16
|
+
gsub(/[$,]/, '').to_i
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
TrueClass.class_eval do
|
4
|
+
unless method_defined?(:yesno)
|
5
|
+
# :nodoc:
|
6
|
+
def yesno
|
7
|
+
'Yes'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
FalseClass.class_eval do
|
13
|
+
unless method_defined?(:yesno)
|
14
|
+
# :nodoc:
|
15
|
+
def yesno
|
16
|
+
'No'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
NilClass.class_eval do
|
22
|
+
unless method_defined?(:yesno)
|
23
|
+
# :nodoc:
|
24
|
+
def yesno
|
25
|
+
'N/A'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyRailsExtensions
|
4
|
+
# @return [CONFIGURATION]
|
5
|
+
def self.configuration
|
6
|
+
@configuration ||= CONFIGURATION.new
|
7
|
+
end
|
8
|
+
|
9
|
+
# @yield [Configuration]
|
10
|
+
def self.configure
|
11
|
+
yield(configuration)
|
12
|
+
|
13
|
+
gem_list.each do |gem_base|
|
14
|
+
next unless configuration.public_send("#{flag_name(gem_base)}?")
|
15
|
+
|
16
|
+
require_relative("ruby-rails-extensions/extensions/#{gem_base}")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Array<Symbol>]
|
21
|
+
def configuration_flags
|
22
|
+
CONFIGURATION.members
|
23
|
+
end
|
24
|
+
|
25
|
+
module_function :configuration_flags
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# @return [Symbol] the flag name
|
30
|
+
def flag_name(gem_base)
|
31
|
+
:"include_#{gem_base}"
|
32
|
+
end
|
33
|
+
|
34
|
+
module_function :flag_name
|
35
|
+
|
36
|
+
BOOLEAN_GEMS = %i[
|
37
|
+
compact_map
|
38
|
+
current_day
|
39
|
+
current_month
|
40
|
+
current_week
|
41
|
+
day_of_week
|
42
|
+
display_military
|
43
|
+
display_user
|
44
|
+
find_bang
|
45
|
+
find_dupes
|
46
|
+
first_dupe
|
47
|
+
google_format
|
48
|
+
hash_only
|
49
|
+
in_utc
|
50
|
+
input
|
51
|
+
month_and_year
|
52
|
+
month_year
|
53
|
+
overlaps
|
54
|
+
pipe
|
55
|
+
presence_bang
|
56
|
+
remove_reserved_keywords
|
57
|
+
to_bool
|
58
|
+
to_dec
|
59
|
+
to_i
|
60
|
+
to_or_sentence
|
61
|
+
to_sort_i
|
62
|
+
to_x
|
63
|
+
usd_to_f
|
64
|
+
usd_to_i
|
65
|
+
yesno
|
66
|
+
].freeze
|
67
|
+
|
68
|
+
# @return [Array<Symbol>] the list of gems
|
69
|
+
def gem_list
|
70
|
+
BOOLEAN_GEMS
|
71
|
+
end
|
72
|
+
|
73
|
+
module_function :gem_list
|
74
|
+
|
75
|
+
CONFIGURATION = Struct.new(*gem_list.map { |gem| flag_name(gem) }) do
|
76
|
+
members.each do |gem_member|
|
77
|
+
define_method(:"#{gem_member}?") do
|
78
|
+
public_send(gem_member) != false
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Sets all flags to true by default
|
83
|
+
def initialize
|
84
|
+
super
|
85
|
+
|
86
|
+
members.each do |gem_member|
|
87
|
+
public_send("#{gem_member}=", true)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
metadata
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby-rails-extensions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Brands Insurance
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-09-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rubocop
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.28.2
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.28.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop-performance
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.13.3
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.13.3
|
41
|
+
description:
|
42
|
+
email:
|
43
|
+
- documents@brandsinsurance.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- CHANGELOG.md
|
49
|
+
- LICENSE.txt
|
50
|
+
- lib/ruby-rails-extensions.rb
|
51
|
+
- lib/ruby-rails-extensions/extensions/compact_map.rb
|
52
|
+
- lib/ruby-rails-extensions/extensions/current_day.rb
|
53
|
+
- lib/ruby-rails-extensions/extensions/current_month.rb
|
54
|
+
- lib/ruby-rails-extensions/extensions/current_week.rb
|
55
|
+
- lib/ruby-rails-extensions/extensions/day_of_week.rb
|
56
|
+
- lib/ruby-rails-extensions/extensions/display_military.rb
|
57
|
+
- lib/ruby-rails-extensions/extensions/display_user.rb
|
58
|
+
- lib/ruby-rails-extensions/extensions/find_bang.rb
|
59
|
+
- lib/ruby-rails-extensions/extensions/find_dupes.rb
|
60
|
+
- lib/ruby-rails-extensions/extensions/first_dupe.rb
|
61
|
+
- lib/ruby-rails-extensions/extensions/google_format.rb
|
62
|
+
- lib/ruby-rails-extensions/extensions/hash_only.rb
|
63
|
+
- lib/ruby-rails-extensions/extensions/in_utc.rb
|
64
|
+
- lib/ruby-rails-extensions/extensions/input.rb
|
65
|
+
- lib/ruby-rails-extensions/extensions/month_and_year.rb
|
66
|
+
- lib/ruby-rails-extensions/extensions/month_year.rb
|
67
|
+
- lib/ruby-rails-extensions/extensions/overlaps.rb
|
68
|
+
- lib/ruby-rails-extensions/extensions/pipe.rb
|
69
|
+
- lib/ruby-rails-extensions/extensions/presence_bang.rb
|
70
|
+
- lib/ruby-rails-extensions/extensions/remove_reserved_keywords.rb
|
71
|
+
- lib/ruby-rails-extensions/extensions/to_bool.rb
|
72
|
+
- lib/ruby-rails-extensions/extensions/to_dec.rb
|
73
|
+
- lib/ruby-rails-extensions/extensions/to_i.rb
|
74
|
+
- lib/ruby-rails-extensions/extensions/to_or_sentence.rb
|
75
|
+
- lib/ruby-rails-extensions/extensions/to_sort_i.rb
|
76
|
+
- lib/ruby-rails-extensions/extensions/to_x.rb
|
77
|
+
- lib/ruby-rails-extensions/extensions/usd_to_f.rb
|
78
|
+
- lib/ruby-rails-extensions/extensions/usd_to_i.rb
|
79
|
+
- lib/ruby-rails-extensions/extensions/yesno.rb
|
80
|
+
- lib/ruby-rails-extensions/version.rb
|
81
|
+
homepage: https://github.com/BrandsInsurance/rails-extensions
|
82
|
+
licenses:
|
83
|
+
- MIT
|
84
|
+
metadata:
|
85
|
+
rubygems_mfa_required: 'true'
|
86
|
+
source_code_uri: https://github.com/BrandsInsurance/rails-extensions
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: 2.5.3
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubygems_version: 3.0.3
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Loads custom methods on various ruby classes
|
106
|
+
test_files: []
|