Class: Ucode::Repo::Writers::ScriptsWriter

Inherits:
Object
  • Object
show all
Includes:
AtomicWrites
Defined in:
lib/ucode/repo/writers/scripts_writer.rb

Overview

Writes output/scripts/<code>.json for every assigned script.

One of the eight per-concern writers split out from AggregateWriter — see Candidate 5 of the 2026-06-29 review.

Instance Method Summary collapse

Methods included from AtomicWrites

#same_content?, #to_pretty_json, #write_atomic

Constructor Details

#initialize(output_root:, scripts:, script_codepoint_ids:) ⇒ ScriptsWriter

Returns a new instance of ScriptsWriter.

Parameters:

  • output_root (Pathname)
  • scripts (Array<Ucode::Models::Script>)

    from Coordinator::Indices

  • script_codepoint_ids (Hash{String => Array<String>})

    ISO 15924 code → cp_id list, accumulated during the streaming pass



22
23
24
25
26
# File 'lib/ucode/repo/writers/scripts_writer.rb', line 22

def initialize(output_root:, scripts:, script_codepoint_ids:)
  @output_root = output_root
  @scripts = scripts
  @script_codepoint_ids = script_codepoint_ids
end

Instance Method Details

#writeInteger

Returns number of script files written.

Returns:

  • (Integer)

    number of script files written



29
30
31
32
33
34
35
36
37
38
# File 'lib/ucode/repo/writers/scripts_writer.rb', line 29

def write
  count = 0
  @scripts.group_by(&:code).each do |code, ranges|
    next if code.nil? || code.empty?

    path = Paths.(@output_root, code)
    count += 1 if write_atomic(path, script_payload(code, ranges))
  end
  count
end