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