class Ellipses::Server::Repository

Constants

Error

Attributes

global[R]
root[R]
symbols[R]

Public Class Methods

new(symbols:, global:, directory:) click to toggle source
# File lib/ellipses/server/repository.rb, line 12
def initialize(symbols:, global:, directory:)
  @symbols   = symbols
  @global    = global
  @root      = global.root ? ::File.join(directory, global.root) : directory
  @consumed  = Set.new
end

Private Class Methods

load(directory) click to toggle source
# File lib/ellipses/server/repository.rb, line 40
def load(directory)
  meta = (meta_file = MetaFile.new(directory)).read
  new symbols: Symbols.new(meta.symbols), global: meta.global, directory: meta_file.directory
end

Public Instance Methods

[](string) click to toggle source
# File lib/ellipses/server/repository.rb, line 19
def [](string)
  (chunks = []).tap do
    symbols.resolve(string).each { |symbol| yield_symbol(chunks, symbol) }
    next unless chunks.empty?

    raise Error, "No chunks resolved for symbol: #{string}, which may already have been consumed"
  end
end

Private Instance Methods

yield_symbol(chunks, symbol) click to toggle source
# File lib/ellipses/server/repository.rb, line 30
def yield_symbol(chunks, symbol)
  return if @consumed.include? symbol

  @consumed << symbol
  return if (lines = symbol.payload(root, global.extension)).empty?

  chunks << lines
end