increments/js_rails_routes

View on GitHub
lib/js_rails_routes/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module JSRailsRoutes
  class Configuration
    attr_accessor :include_paths,
                  :exclude_paths,
                  :include_names,
                  :exclude_names,
                  :exclude_engines,
                  :output_dir,
                  :camelize,
                  :target,
                  :route_filter,
                  :route_set_filter

    def initialize # rubocop:disable Metrics/AbcSize
      self.include_paths = /.*/
      self.exclude_paths = /^$/
      self.include_names = /.*/
      self.exclude_names = /^$/
      self.exclude_engines = /^$/
      self.camelize = nil
      self.output_dir = Rails.root.join('app', 'assets', 'javascripts')
      self.target = 'js'
      self.route_filter = ->(_route) { true }
      self.route_set_filter = ->(_route_set) { true }
    end

    # @param env [Hash{String=>String}]
    def configure_with_env_vars(env = ENV) # rubocop:disable Metrics/AbcSize
      %w[include_paths exclude_paths include_names exclude_names exclude_engines].each do |name|
        public_send("#{name}=", Regexp.new(env[name])) if env[name]
      end
      self.output_dir = env['output_dir'] if env['output_dir']
      self.camelize = env['camelize'].presence.to_sym if env['camelize']
      self.target = env['target'] if env['target']
    end
  end
end