# 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

entries [R]

The entries that have been saved on this repository.

fields [R]

The fields that have been configured on this repository.

source [R]

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

### Public Class Methods

new (source)
Source

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

Initialize a new repository with the given source.

### Public Instance Methods

character_columns ()
Source

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

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

character_offsets ()
Source

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

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

code_unit_columns (encoding)
Source

    # 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 columns field for this repository for a specific encoding and return self.

code_unit_offsets (encoding)
Source

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

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

code_units_cache (encoding)
Source

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

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

columns ()
Source

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

Configure the columns field for this repository and return self.

comments ()
Source

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

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

filepath ()
Source

    # 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 filepath field for this repository and return self.

leading_comments ()
Source

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

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

lines ()
Source

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

Configure the lines field for this repository and return self.

offsets ()
Source

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

Configure the offsets field for this repository and return self.

trailing_comments ()
Source

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

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

### Private Instance Methods

field (name, value)
Source

    # File lib/prism/relocation.rb, line 487
    def field(name, value)
      raise ConfigurationError, "Cannot specify multiple #{name} fields" if @fields.key?(name)
      @fields[name] = value
      self
    end

Append the given field to the repository and return the repository so that these calls can be chained.