class Ellipses::Client::Repository

Constants

File

Attributes

config[R]
loader[R]

Public Class Methods

new(loader, config) click to toggle source
# File lib/ellipses/client/repository.rb, line 22
def initialize(loader, config)
  @loader = loader
  @config = config
  @files  = {}
  @memo   = {}
end

Public Instance Methods

[](path) click to toggle source
# File lib/ellipses/client/repository.rb, line 29
def [](path)
  @files[memo(path)].source
end
dump() click to toggle source
# File lib/ellipses/client/repository.rb, line 49
def dump
  meta = Meta.new []

  each do |path, file|
    next unless file.registered
    next unless (source = file.source).series

    meta << Meta::Source.new(source: path, series: source.series)
  end

  meta
end
each_source() { |source| ... } click to toggle source
# File lib/ellipses/client/repository.rb, line 33
def each_source
  each { |_, file| yield(file.source) }
end
load(loader) click to toggle source
# File lib/ellipses/client/repository.rb, line 37
def load(loader)
  Dir.chdir loader.directory do
    loader.read.each { |meta| register_internal(meta.source, Source.from_file(meta.source, config, meta.series)) }
  end
end
register(path) click to toggle source
# File lib/ellipses/client/repository.rb, line 62
def register(path)
  if @files.key?(key = memo(path))
    return @files[key].tap { |file| file.registered = true }.source
  end

  register_internal(key, Source.from_file(path, config))
end
registered?(path) click to toggle source
# File lib/ellipses/client/repository.rb, line 76
def registered?(path)
  return false unless @files.key?(key = memo(path))

  @files[key].registered
end
save(all: true) click to toggle source
# File lib/ellipses/client/repository.rb, line 43
def save(all: true)
  n = 0
  each { |_, file| file.save(all: all) and (n += 1) }
  n.positive?
end
unregister(path) click to toggle source
# File lib/ellipses/client/repository.rb, line 70
def unregister(path)
  return unless @files.key?(key = memo(path))

  @files[key].tap { |file| file.registered = false }.source
end

Private Instance Methods

each(&block) click to toggle source
# File lib/ellipses/client/repository.rb, line 88
def each(&block)
  Dir.chdir(loader.directory) { @files.each(&block) }
end
memo(path) click to toggle source
# File lib/ellipses/client/repository.rb, line 84
def memo(path)
  @memo[path] ||= Support.deflate_path(path, loader.directory)
end
register_internal(key, source) click to toggle source
# File lib/ellipses/client/repository.rb, line 92
def register_internal(key, source)
  @files[key] = File.new path:       key,
                         source:     source,
                         digest:     Support.digest(*source.lines),
                         registered: true

  source
end