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.66.0 lib/cc/workspace/path_tree.rb
codeclimate-0.65.0 lib/cc/workspace/path_tree.rb
codeclimate-0.64.0 lib/cc/workspace/path_tree.rb
codeclimate-0.63.7 lib/cc/workspace/path_tree.rb
codeclimate-0.63.6 lib/cc/workspace/path_tree.rb
codeclimate-0.63.5 lib/cc/workspace/path_tree.rb
codeclimate-0.63.4 lib/cc/workspace/path_tree.rb
codeclimate-0.63.3 lib/cc/workspace/path_tree.rb
codeclimate-0.63.2 lib/cc/workspace/path_tree.rb
codeclimate-0.63.1 lib/cc/workspace/path_tree.rb
codeclimate-0.63.0 lib/cc/workspace/path_tree.rb
codeclimate-0.62.0 lib/cc/workspace/path_tree.rb
codeclimate-0.61.1 lib/cc/workspace/path_tree.rb
codeclimate-0.61.0 lib/cc/workspace/path_tree.rb
codeclimate-0.60.1 lib/cc/workspace/path_tree.rb
codeclimate-0.60.0 lib/cc/workspace/path_tree.rb
codeclimate-0.59.1 lib/cc/workspace/path_tree.rb
codeclimate-0.59.0 lib/cc/workspace/path_tree.rb
codeclimate-0.58.0 lib/cc/workspace/path_tree.rb
codeclimate-0.57.0 lib/cc/workspace/path_tree.rb