Sha256: 1ebfc41d8e82c3d91e0d56e178c318d332c377e7e258b61d000d5ae076dff467

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

module StrictTodo
  class FindFile
    private_class_method :new

    class << self
      #
      # @param [StrictTodo::Config] config YamlロードされHash化されたConfig情報
      # @param [String] base_dir 起点となるディレクトリ
      #
      # @return [Array<String>] ファイルのパス情報
      #
      def perform(config:, base_dir:)
        results = []
        Dir.glob('**/*', File::FNM_DOTMATCH, base: base_dir) do |path|
          # ディレクトリならば更に再起探索を行う
          if File.directory?(path)
            next
          end

          if acceptable?(dir_path: path, config: config)
            results.push(path)
          end
        end
        results
      end

      private

      #
      # @param [String] dir_path ディレクトリパス
      # @param [StrictTodo::Config] config YamlロードされHash化されたConfig情報
      #
      def acceptable?(dir_path:, config:)
        return false if not config.permit_extensions.include?(File.extname(dir_path))
        return false if config.exclude_match.include?(dir_path.split("/").first)

        true
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
strict-todo-0.0.2 lib/strict_todo/find_file.rb
strict-todo-0.0.1 lib/strict_todo/find_file.rb