Class: VivlioStarter::CLI::Metrics::SentenceCollector

Inherits:
Object
  • Object
show all
Defined in:
lib/vivlio_starter/cli/metrics/sentence_collector.rb

Overview

章本文から位置つきで文を収集する。

Constant Summary collapse

STRUCTURAL =

文ではない構造行(見出し/表/HTMLコメント/コンテナ/画像/引用)。

/\A\s*(?:#|\||<!--|:::|!\[|>)/
SENTENCE_END =
/[。!?!?]+/

Instance Method Summary collapse

Instance Method Details

#collect(content, chapter_num) ⇒ Array<LocatedSentence>

Returns:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/vivlio_starter/cli/metrics/sentence_collector.rb', line 35

def collect(content, chapter_num)
  @results = []
  @buffer = +''
  @start_line = nil

  # コード(フェンス区切り行・内容行)とみなす行番号を Masking で判定する。
  # 行番号を保ったまま、可変長フェンス・入れ子・~~~ に一貫して追従する。
  code_lines = code_fence_lines(content)

  content.each_line.with_index(1) do |raw, lineno|
    next if code_lines.include?(lineno)
    next if reset_on_boundary(raw)

    accumulate(raw, lineno, chapter_num)
  end

  @results
end