Sha256: 3ab7e5961105a996b9b49a76022025229926babb1aa90bcbe9044ca07189dcae

Contents?: true

Size: 1.07 KB

Versions: 187

Compression:

Stored size: 1.07 KB

Contents

require "pathname"
require "set"

module CC
  class Workspace
    class PathTree
      autoload :DirNode, "cc/workspace/path_tree/dir_node"
      autoload :FileNode, "cc/workspace/path_tree/file_node"

      def self.node_for_pathname(pathname)
        if pathname.directory?
          DirNode.new(pathname.to_s)
        else
          FileNode.new(pathname.to_s)
        end
      end

      def self.for_path(path)
        new(node_for_pathname(Pathname.new(path)))
      end

      def initialize(root_node)
        @root_node = root_node
      end

      def clone
        self.class.new(root_node.clone)
      end

      def exclude_paths(paths)
        paths.each { |path| root_node.remove(*normalized_path_pieces(path)) }
      end

      def include_paths(paths)
        paths.each { |path| root_node.add(*normalized_path_pieces(path)) }
      end

      delegate :all_paths, to: :root_node

      private

      attr_reader :root_node

      def normalized_path_pieces(path)
        Pathname.new(path).cleanpath.to_s.split(File::SEPARATOR).reject(&:blank?)
      end
    end
  end
end

Version data entries

187 entries across 187 versions & 2 rubygems

Version Path
codeclimate-0.41.0 lib/cc/workspace/path_tree.rb
codeclimate-0.40.3 lib/cc/workspace/path_tree.rb
codeclimate-0.40.2 lib/cc/workspace/path_tree.rb
codeclimate-0.40.1 lib/cc/workspace/path_tree.rb
codeclimate-0.40.0 lib/cc/workspace/path_tree.rb
codeclimate-0.39.0 lib/cc/workspace/path_tree.rb
codeclimate-0.38.1 lib/cc/workspace/path_tree.rb
codeclimate-0.38.0 lib/cc/workspace/path_tree.rb
codeclimate-0.37.0 lib/cc/workspace/path_tree.rb
codeclimate-0.36.0 lib/cc/workspace/path_tree.rb
codeclimate-0.35.2 lib/cc/workspace/path_tree.rb
codeclimate-0.35.1 lib/cc/workspace/path_tree.rb
codeclimate-0.35.0 lib/cc/workspace/path_tree.rb
codeclimate-0.34.1 lib/cc/workspace/path_tree.rb
codeclimate-0.34.0 lib/cc/workspace/path_tree.rb
codeclimate-0.33.0 lib/cc/workspace/path_tree.rb
codeclimate-0.32.1 lib/cc/workspace/path_tree.rb
codeclimate-0.32.0 lib/cc/workspace/path_tree.rb
codeclimate-0.32.0.rc1 lib/cc/workspace/path_tree.rb
codeclimate-0.31.1 lib/cc/workspace/path_tree.rb