A repository is a configured collection of fields and a set of entries that knows how to reparse a source and reify the values.
The source associated with this repository. This will be either a SourceFilepath
(the most common use case) or a SourceString
.
The fields that have been configured on this repository.
The entries that have been saved on this repository.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/lib/prism/relocation.rb, line 409
def columns
field(:columns, ColumnsField.new)
end
Configure the columns field for this repository and return self.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/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.
# File tmp/rubies/ruby-3.4.1/lib/prism/relocation.rb, line 387
def lines
field(:lines, LinesField.new)
end
Configure the lines field for this repository and return self.
# File tmp/rubies/ruby-3.4.1/lib/prism/relocation.rb, line 392
def offsets
field(:offsets, OffsetsField.new)
end
Configure the offsets field for this repository and return self.
# File tmp/rubies/ruby-3.4.1/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.