Module: Prism::Relocation
- Defined in:
- lib/prism/relocation.rb
Overview
Prism parses deterministically for the same input. This provides a nice property that is exposed through the #node_id API on nodes. Effectively this means that for the same input, these values will remain consistent every time the source is parsed. This means we can reparse the source same with a #node_id value and find the exact same node again.
The Relocation module provides an API around this property. It allows you to “save” nodes and locations using a minimal amount of memory (just the node_id and a field identifier) and then reify them later.
Defined Under Namespace
Classes: CharacterColumnsField, CharacterOffsetsField, CodeUnitColumnsField, CodeUnitOffsetsField, ColumnsField, CommentsField, Entry, FilepathField, LeadingCommentsField, LinesField, OffsetsField, Repository, Source, SourceFilepath, SourceString, TrailingCommentsField
Class Method Summary collapse
-
.filepath(value) ⇒ Object
Create a new repository for the given filepath.
-
.string(value) ⇒ Object
Create a new repository for the given string.
Class Method Details
.filepath(value) ⇒ Object
Create a new repository for the given filepath.
495 496 497 |
# File 'lib/prism/relocation.rb', line 495 def self.filepath(value) Repository.new(SourceFilepath.new(value)) end |
.string(value) ⇒ Object
Create a new repository for the given string.
500 501 502 |
# File 'lib/prism/relocation.rb', line 500 def self.string(value) Repository.new(SourceString.new(value)) end |