Class: Rigor::Analysis::BufferBinding

Inherits:
Data
  • Object
show all
Defined in:
lib/rigor/analysis/buffer_binding.rb

Overview

Binds one logical project path (the path the user is editing, e.g. ‘lib/foo.rb`) to a physical file containing the in-flight buffer bytes (e.g. `/tmp/9539itfeh2.rb`). When the runner / workers / pre-passes need to read source for the logical path, they read from the physical path instead; when they emit a `Diagnostic`, the path is the logical one so editors highlight the buffer the user is actually looking at.

See ‘docs/design/20260516-editor-mode.md` for the design. The CLI surfaces this through paired `–tmp-file` / `–instead-of` flags on `rigor check` and `rigor type-of`; programmatic callers pass a `BufferBinding` to `Runner.new`.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#logical_pathObject (readonly)

Returns the value of attribute logical_path

Returns:

  • (Object)

    the current value of logical_path



17
18
19
# File 'lib/rigor/analysis/buffer_binding.rb', line 17

def logical_path
  @logical_path
end

#physical_pathObject (readonly)

Returns the value of attribute physical_path

Returns:

  • (Object)

    the current value of physical_path



17
18
19
# File 'lib/rigor/analysis/buffer_binding.rb', line 17

def physical_path
  @physical_path
end

Instance Method Details

#display_path(path) ⇒ Object

Returns the path the caller should report in user-facing output (diagnostics, run stats) when it currently holds the physical path. The inverse of ‘#resolve`. Non-physical paths pass through unchanged, so it is safe to stamp every outgoing path through this helper.



31
32
33
# File 'lib/rigor/analysis/buffer_binding.rb', line 31

def display_path(path)
  path == physical_path ? logical_path : path
end

#resolve(path) ⇒ Object

Returns the physical path to read bytes from when the caller is about to parse ‘path`. For non-logical paths returns the input unchanged. Cheap to call on every path; the binding is singular today (one buffer per run).



22
23
24
# File 'lib/rigor/analysis/buffer_binding.rb', line 22

def resolve(path)
  path == logical_path ? physical_path : path
end