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 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.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 370
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-4.0.0/lib/prism/relocation.rb, line 416
def character_columns
field(:character_columns, CharacterColumnsField.new)
end
Configure the character columns field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 399
def character_offsets
field(:character_offsets, CharacterOffsetsField.new)
end
Configure the character offsets field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 422
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-4.0.0/lib/prism/relocation.rb, line 405
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-4.0.0/lib/prism/relocation.rb, line 377
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-4.0.0/lib/prism/relocation.rb, line 410
def columns
field(:columns, ColumnsField.new)
end
Configure the columns field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 440
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-4.0.0/lib/prism/relocation.rb, line 488
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-4.0.0/lib/prism/relocation.rb, line 382
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-4.0.0/lib/prism/relocation.rb, line 428
def leading_comments
field(:leading_comments, LeadingCommentsField.new)
end
Configure the leading comments field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 388
def lines
field(:lines, LinesField.new)
end
Configure the lines field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 393
def offsets
field(:offsets, OffsetsField.new)
end
Configure the offsets field for this repository and return self.
# File tmp/rubies/ruby-4.0.0/lib/prism/relocation.rb, line 434
def trailing_comments
field(:trailing_comments, TrailingCommentsField.new)
end
Configure the trailing comments field for this repository and return self.