Sha256: bc6bc2051152dad4c28e2fbd308d31c64cc846cfa99fb9d0c6230b9bf56c672d

Contents?: true

Size: 1.32 KB

Versions: 13

Compression:

Stored size: 1.32 KB

Contents

module FakeFS
  class FakeFile
    attr_accessor :name, :parent, :content, :mtime

    class Inode
      def initialize(file_owner)
        @content = ""
        @links   = [file_owner]
      end

      attr_accessor :content
      attr_accessor :links

      def link(file)
        links << file unless links.include?(file)
        file.inode = self
      end

      def unlink(file)
        links.delete(file)
      end

      def clone
        clone = super
        clone.content = content.dup
        clone
      end
    end

    def initialize(name = nil, parent = nil)
      @name   = name
      @parent = parent
      @inode  = Inode.new(self)
      @mtime  = Time.now
    end

    attr_accessor :inode

    def content
      @inode.content
    end

    def content=(str)
      @inode.content = str
    end

    def links
      @inode.links
    end

    def link(other_file)
      @inode.link(other_file)
    end

    def clone(parent = nil)
      clone = super()
      clone.parent = parent if parent
      clone.inode  = inode.clone
      clone
    end

    def entry
      self
    end

    def inspect
      "(FakeFile name:#{name.inspect} parent:#{parent.to_s.inspect} size:#{content.size})"
    end

    def to_s
      File.join(parent.to_s, name)
    end

    def delete
      inode.unlink(self)
      parent.delete(self)
    end
  end
end

Version data entries

13 entries across 13 versions & 4 rubygems

Version Path
vim-jar-0.1.2.0001 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.1.2 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.1.1 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.1.0 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.0.3 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.0.2 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
vim-jar-0.0.1 bundler/ruby/1.8/gems/fakefs-0.2.1/lib/fakefs/fake/file.rb
ktheory-fakefs-0.2.1.1 lib/fakefs/fake/file.rb
simple-templater-0.0.1.3 vendor/fakefs/lib/fakefs/fake/file.rb
simple-templater-0.0.1.2 vendor/fakefs/lib/fakefs/fake/file.rb
simple-templater-0.0.1.1 vendor/fakefs/lib/fakefs/fake/file.rb
simple-templater-0.0.1 vendor/fakefs/lib/fakefs/fake/file.rb
fakefs-0.2.1 lib/fakefs/fake/file.rb