class Prism::Relocation::Repository

仓库是一个配置好的字段集合,以及一组知道如何重新解析源代码并物化值的条目。

属性

entries[R]

已保存在此仓库中的条目。

fields[R]

已在此仓库中配置的字段。

source[R]

与此仓库关联的源代码。这将会是一个 SourceFilepath (最常见的用例) 或一个 SourceString

公共类方法

new(source) 点击切换源代码

使用给定的源代码初始化一个新的仓库。

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

公共实例方法

character_columns() 点击切换源代码

为此仓库配置字符列字段并返回自身。

# File prism/relocation.rb, line 415
def character_columns
  field(:character_columns, CharacterColumnsField.new)
end
character_offsets() 点击切换源代码

为此仓库配置字符偏移字段并返回自身。

# File prism/relocation.rb, line 398
def character_offsets
  field(:character_offsets, CharacterOffsetsField.new)
end
code_unit_columns(encoding) 点击切换源代码

为此仓库配置特定编码的代码单元列字段并返回自身。

# File prism/relocation.rb, line 421
def code_unit_columns(encoding)
  field(:code_unit_columns, CodeUnitColumnsField.new(self, encoding))
end
code_unit_offsets(encoding) 点击切换源代码

为此仓库配置特定编码的代码单元偏移字段并返回自身。

# File prism/relocation.rb, line 404
def code_unit_offsets(encoding)
  field(:code_unit_offsets, CodeUnitOffsetsField.new(self, encoding))
end
code_units_cache(encoding) 点击切换源代码

从源代码为给定编码创建代码单元缓存。

# File prism/relocation.rb, line 376
def code_units_cache(encoding)
  source.code_units_cache(encoding)
end
columns() 点击切换源代码

为此仓库配置列字段并返回自身。

# File prism/relocation.rb, line 409
def columns
  field(:columns, ColumnsField.new)
end
comments() 点击切换源代码

为此仓库配置前导和尾随注释字段并返回自身。

# File prism/relocation.rb, line 439
def comments
  leading_comments.trailing_comments
end
filepath() 点击切换源代码

为此仓库配置文件路径字段并返回自身。

# File 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
leading_comments() 点击切换源代码

为此仓库配置前导注释字段并返回自身。

# File prism/relocation.rb, line 427
def leading_comments
  field(:leading_comments, LeadingCommentsField.new)
end
lines() 点击切换源代码

为此仓库配置行字段并返回自身。

# File prism/relocation.rb, line 387
def lines
  field(:lines, LinesField.new)
end
offsets() 点击切换源代码

为此仓库配置偏移字段并返回自身。

# File prism/relocation.rb, line 392
def offsets
  field(:offsets, OffsetsField.new)
end
trailing_comments() 点击切换源代码

为此仓库配置尾随注释字段并返回自身。

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

私有实例方法

field(name, value) 点击切换源代码

将给定的字段追加到仓库并返回仓库,以便这些调用可以链式调用。

# File 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