class I18n::Processes::Scanners::Files::CachingFileFinderProvider

Finds the files and provides their contents.

@note This class is thread-safe. All methods are cached. @since 0.9.0

Public Class Methods

new(exclude: []) click to toggle source

@param exclude [Array<String>]

# File lib/i18n/processes/scanners/files/caching_file_finder_provider.rb, line 12
def initialize(exclude: [])
  @cache = {}
  @mutex = Mutex.new
  @defaults = { exclude: exclude }
end

Public Instance Methods

get(**file_finder_args) click to toggle source

Initialize a {CachingFileFinder} or get one from cache based on the constructor arguments.

@param (see FileFinder#initialize) @return [CachingFileFinder]

# File lib/i18n/processes/scanners/files/caching_file_finder_provider.rb, line 22
def get(**file_finder_args)
  @cache[file_finder_args] || @mutex.synchronize do
    @cache[file_finder_args] ||= begin
      args = file_finder_args.dup
      args[:exclude] = @defaults[:exclude] + (args[:exclude] || [])
      args[:exclude].uniq!
      CachingFileFinder.new(**args)
    end
  end
end