Module: VivlioStarter::CLI::PreProcessCommands::IssueRegistry

Defined in:
lib/vivlio_starter/cli/pre_process/issue_registry.rb

Defined Under Namespace

Classes: Counts, Issue

Class Method Summary collapse

Class Method Details

.countsCounts

全体の件数を返す

Returns:



65
# File 'lib/vivlio_starter/cli/pre_process/issue_registry.rb', line 65

def counts = tally(issues)

.issuesObject

蓄積された全指摘のコピーを返す(呼び出し側での絞り込み用)



61
# File 'lib/vivlio_starter/cli/pre_process/issue_registry.rb', line 61

def issues = @monitor.synchronize { @issues.dup }

.record(severity:, category:, message:, chapter: nil, line: nil) ⇒ Issue

指摘を 1 件記録する。

Parameters:

  • severity (Symbol)

    :error または :warn

  • category (Symbol)

    発生源の種別(:image / :link / :guard など)

  • message (String)

    著者向けの短い説明(逐次ログとは独立)

  • chapter (String, nil) (defaults to: nil)

    章ファイル名。拡張子付き・パス付きでも可。横断的な指摘は nil

  • line (Integer, nil) (defaults to: nil)

    行番号

Returns:

  • (Issue)

    記録した指摘



54
55
56
57
58
# File 'lib/vivlio_starter/cli/pre_process/issue_registry.rb', line 54

def record(severity:, category:, message:, chapter: nil, line: nil)
  issue = Issue.new(chapter: normalize_chapter(chapter), line:, severity:, category:, message:)
  @monitor.synchronize { @issues << issue }
  issue
end

.reset!Object

蓄積をリセットする(preflight / build 開始時に呼ぶ)



43
44
45
# File 'lib/vivlio_starter/cli/pre_process/issue_registry.rb', line 43

def reset!
  @monitor.synchronize { @issues = [] }
end

.summary_by_chapterHash{String, nil => Counts}

章ごとの件数を返す。キーは章 basename、章に紐付かない指摘は nil キーにまとまる。

Returns:

  • (Hash{String, nil => Counts})


69
70
71
# File 'lib/vivlio_starter/cli/pre_process/issue_registry.rb', line 69

def summary_by_chapter
  issues.group_by(&:chapter).transform_values { tally(it) }
end