Sha256: ce89dc85a15d1683d70663fcc8796358efbbe872b22ec849730dcb6944989690

Contents?: true

Size: 1.13 KB

Versions: 4

Compression:

Stored size: 1.13 KB

Contents

module Valise
  class StemDecorator < SearchRoot
    def initialize(stem, search_root)
      @stem, @search_root = stem, search_root
    end

    def under_stem(path)
      segments = unpath(path)
      top_part = segments[0...@stem.length]
      if top_part == @stem
        return segments[@stem.length..-1]
      else
        raise PathOutsideOfRoot
      end
    end

    def inspect
      "#{self.class.name.split(":").last}:[#{@stem.join("/")}]#{@search_root.inspect}"
    end

    def each
      @search_root.each do |path|
        yield(@stem + path)
      end
    end

    def full_path(segments)
      segments = under_stem(segments)
      @search_root.full_path(segments)
    end

    def write(item)
      @search_root.write(item)
    end

    def writable?(segments)
      @search_root.writable?(under_stem(segments))
    rescue PathOutsideOfRoot
      return false
    end

    def present?(segments)
      @search_root.present?(under_stem(segments))
    rescue PathOutsideOfRoot
      return false
    end

    def insert(item)
      @search_root.insert(item)
    end

    def get_from(item)
      @search_root.get_from(item)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
valise-0.6 lib/valise/stem-decorator.rb
valise-0.5 lib/valise/stem-decorator.rb
valise-0.4 lib/valise/stem-decorator.rb
valise-0.3 lib/valise/stem-decorator.rb