class Prism::Relocation::Repository

A repository is a configured collection of fields and a set of entries that knows how to reparse a source and reify the values.

Attributes

The entries that have been saved on this repository.

The fields that have been configured on this repository.

The source associated with this repository. This will be either a SourceFilepath (the most common use case) or a SourceString.

Public Class Methods

Initialize a new repository with the given source.

# File lib/prism/relocation.rb, line 369
def initialize(source)
  @source = source
  @fields = {}
  @entries = Hash.new { |hash, node_id| hash[node_id] = {} }
end

Public Instance Methods

Configure the character columns field for this repository and return self.

# File lib/prism/relocation.rb, line 415
def character_columns
  field(:character_columns, CharacterColumnsField.new)
end

Configure the character offsets field for this repository and return self.

# File lib/prism/relocation.rb, line 398
def character_offsets
  field(:character_offsets, CharacterOffsetsField.new)
end

Configure the code unit columns field for this repository for a specific encoding and return self.

# File lib/prism/relocation.rb, line 421
def code_unit_columns(encoding)
  field(:code_unit_columns, CodeUnitColumnsField.new(self, encoding))
end

Configure the code unit offsets field for this repository for a specific encoding and return self.

# File lib/prism/relocation.rb, line 404
def code_unit_offsets(encoding)
  field(:code_unit_offsets, CodeUnitOffsetsField.new(self, encoding))
end

Create a code units cache for the given encoding from the source.

# File lib/prism/relocation.rb, line 376
def code_units_cache(encoding)
  source.code_units_cache(encoding)
end

Configure the columns field for this repository and return self.

# File lib/prism/relocation.rb, line 409
def columns
  field(:columns, ColumnsField.new)
end

Configure both the leading and trailing comment fields for this repository and return self.

# File lib/prism/relocation.rb, line 439
def comments
  leading_comments.trailing_comments
end

Configure the filepath field for this repository and return self.

# File lib/prism/relocation.rb, line 381
def filepath
  raise ConfigurationError, "Can only specify filepath for a filepath source" unless source.is_a?(SourceFilepath)
  field(:filepath, FilepathField.new(source.value))
end

Configure the leading comments field for this repository and return self.

# File lib/prism/relocation.rb, line 427
def leading_comments
  field(:leading_comments, LeadingCommentsField.new)
end

Configure the lines field for this repository and return self.

# File lib/prism/relocation.rb, line 387
def lines
  field(:lines, LinesField.new)
end

Configure the offsets field for this repository and return self.

# File lib/prism/relocation.rb, line 392
def offsets
  field(:offsets, OffsetsField.new)
end

Configure the trailing comments field for this repository and return self.

# File lib/prism/relocation.rb, line 433
def trailing_comments
  field(:trailing_comments, TrailingCommentsField.new)
end