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
(Source source) → void
Source
# File lib/prism/relocation.rb, line 496 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
() → self
Source
# File lib/prism/relocation.rb, line 558 def character_columns field(:character_columns, CharacterColumnsField.new) end
Configure the character columns field for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 535 def character_offsets field(:character_offsets, CharacterOffsetsField.new) end
Configure the character offsets field for this repository and return self.
(Encoding encoding) → self
Source
# File lib/prism/relocation.rb, line 566 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.
(Encoding encoding) → self
Source
# File lib/prism/relocation.rb, line 543 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.
(Encoding encoding) → _CodeUnitsCache
Source
# File lib/prism/relocation.rb, line 505 def code_units_cache(encoding) source.code_units_cache(encoding) end
Create a code units cache for the given encoding from the source.
() → self
Source
# File lib/prism/relocation.rb, line 550 def columns field(:columns, ColumnsField.new) end
Configure the columns field for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 590 def comments leading_comments.trailing_comments end
Configure both the leading and trailing comment fields for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 512 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.
() → self
Source
# File lib/prism/relocation.rb, line 574 def leading_comments field(:leading_comments, LeadingCommentsField.new) end
Configure the leading comments field for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 520 def lines field(:lines, LinesField.new) end
Configure the lines field for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 527 def offsets field(:offsets, OffsetsField.new) end
Configure the offsets field for this repository and return self.
() → self
Source
# File lib/prism/relocation.rb, line 582 def trailing_comments field(:trailing_comments, TrailingCommentsField.new) end
Configure the trailing comments field for this repository and return self.
Private Instance Methods
(Symbol name, _Field) → self
Source
# File lib/prism/relocation.rb, line 644 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.