Sha256: 10c50b35636caa033cd079b89717d01549370c41724ef13ec7317f35511dd9d7

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 KB

Contents

require 'memfs/filesystem_access'

module MemFs
  module Fake
    class Symlink < Entry
      include MemFs::FilesystemAccess

      attr_reader :target

      def dereferenced
        @dereferenced ||= fs.find!(target).dereferenced
      end

      def dereferenced_name
        real_target.dereferenced_name
      end

      def dereferenced_path
        dereferenced.dereferenced_path
      end

      def find(path)
        dereferenced.find(path)
      rescue Errno::ENOENT
        nil
      end

      def initialize(path, target)
        super(path)
        @target = target
      end

      def method_missing(meth, *args, &block)
        if dereferenced.respond_to?(meth)
          dereferenced.public_send(meth, *args, &block)
        else
          super
        end
      end

      def respond_to_missing?(meth, include_private)
        dereferenced.respond_to?(meth, include_private) || super
      end

      def type
        'link'
      end

      private

      def real_target
        fs.find(target) || Entry.new(target)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
memfs-1.0.0 lib/memfs/fake/symlink.rb
memfs-0.5.0 lib/memfs/fake/symlink.rb
memfs-0.4.3 lib/memfs/fake/symlink.rb
memfs-0.4.2 lib/memfs/fake/symlink.rb
memfs-0.4.1 lib/memfs/fake/symlink.rb
memfs-0.4.0 lib/memfs/fake/symlink.rb
memfs-0.3.0 lib/memfs/fake/symlink.rb
memfs-0.2.0 lib/memfs/fake/symlink.rb
memfs-0.1.0 lib/memfs/fake/symlink.rb