lib/ruby-rails-extensions.rb in ruby-rails-extensions-0.2.0 vs lib/ruby-rails-extensions.rb in ruby-rails-extensions-1.0.0.pre.rc.1
- old
+ new
@@ -1,21 +1,42 @@
# frozen_string_literal: true
-require_relative 'ruby-rails-extensions/errors'
-
module RubyRailsExtensions
- class Configuration
+ # @return [CONFIGURATION]
+ def self.configuration
+ @configuration ||= CONFIGURATION.new
+ end
+
+ # @yield [Configuration]
+ def self.configure
+ yield(configuration)
+
+ gem_list.each do |gem_base|
+ if configuration.public_send("#{flag_name(gem_base)}?")
+ require_relative("ruby-rails-extensions/extensions/#{gem_base}")
+ end
+ end
+ end
+
+ # @return [Array<Symbol>]
+ def configuration_flags
+ CONFIGURATION.members
+ end
+
+ module_function :configuration_flags
+
+ private
+
+ # @return [Symbol] the flag name
+ def flag_name(gem_base)
+ :"include_#{gem_base}"
+ end
+
+ module_function :flag_name
+
BOOLEAN_GEMS = %i[
- all_keys
- all_values
- any_key
- any_value
- assign_nil
- boolean_scope
- clean_string
compact_map
- compact_blank_join
current_day
current_month
current_week
day_of_week
display_military
@@ -23,107 +44,48 @@
find_bang
find_dupes
first_dupe
google_format
hash_only
- humanize_symbol
in_utc
input
month_and_year
month_year
- no_keys
- no_values
- only_some
overlaps
pipe
presence_bang
- quarter_dates
- range_add
- range_multiply
remove_reserved_keywords
- safe_parse
- select_present
- select_present_join
- set_to_sentence
to_bool
to_dec
to_i
- to_local
- to_negative_i
- to_nonzero_i
to_or_sentence
- to_positive_i
to_sort_i
to_x
- todays_date
- uniq_map
usd_to_f
usd_to_i
- weighted_sum
yesno
- zero_range
].freeze
- attr_accessor :default_time_zone
-
- # @return [Symbol] the flag name
- def self.flag_name(gem_base)
- :"include_#{gem_base}"
+ # @return [Array<Symbol>] the list of gems
+ def gem_list
+ BOOLEAN_GEMS
end
- BOOLEAN_GEMS.each do |extension_name|
- include_extension = flag_name(extension_name)
+ module_function :gem_list
- attr_accessor include_extension
-
- define_method(:"#{extension_name}?") do
- public_send(include_extension) != false
+ CONFIGURATION = Struct.new(*gem_list.map { |gem| flag_name(gem) }) do
+ members.each do |gem_member|
+ define_method(:"#{gem_member}?") do
+ public_send(gem_member) != false
+ end
end
- end
- # Sets all flags to true by default
- def initialize
- super
+ # Sets all flags to true by default
+ def initialize
+ super
- BOOLEAN_GEMS.each do |extension_name|
- include_extension = flag_name(extension_name)
-
- public_send("#{include_extension}=", true)
+ members.each do |gem_member|
+ public_send("#{gem_member}=", true)
+ end
end
end
-
- # @return [Array<Symbol>]
- def flags
- BOOLEAN_GEMS.map { |f| flag_name(f) }
- end
-
- private
-
- # @return [Symbol] the flag name
- def flag_name(gem_base)
- self.class.flag_name(gem_base)
- end
- end
-
- # @return [Configuration]
- def self.configuration
- @configuration ||= Configuration.new
- end
-
- # @yield [Configuration]
- def self.configure
- yield(configuration)
-
- Configuration::BOOLEAN_GEMS.each do |extension|
- next unless configuration.public_send("#{extension}?")
-
- require_relative("ruby-rails-extensions/extensions/#{extension}")
- end
- end
-
- # @return [Array<Symbol>]
- def configuration_flags
- configuration.flags
- end
-
- module_function :configuration_flags
end