Class: Textus::Store::Cursor

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/store/cursor.rb

Overview

Per-role cursor cache under <root>/.state/cursors/<role>. A convenience so ‘textus pulse` (no –since) means “since I last looked”. Gitignored; losing it just re-emits recent deltas, never corrupts the store. ADR 0036/0038.

Instance Method Summary collapse

Constructor Details

#initialize(root:, role:) ⇒ Cursor

Returns a new instance of Cursor.



9
10
11
# File 'lib/textus/store/cursor.rb', line 9

def initialize(root:, role:)
  @path = Store::Geometry.new(root).cursor_path(role)
end

Instance Method Details

#readObject



13
14
15
16
17
# File 'lib/textus/store/cursor.rb', line 13

def read
  Integer(File.read(@path).strip)
rescue Errno::ENOENT, ArgumentError
  0
end

#write(seq) ⇒ Object



19
20
21
22
23
# File 'lib/textus/store/cursor.rb', line 19

def write(seq)
  FileUtils.mkdir_p(File.dirname(@path))
  File.write(@path, seq.to_s)
  seq
end