Class: Mdlint::Linter::Rules::JapaneseSentenceLength

Inherits:
Mdlint::Linter::Rule show all
Includes:
JapaneseHelpers
Defined in:
lib/mdlint/linter/rules/japanese.rb,
sig/internal.rbs

Constant Summary

Constants included from JapaneseHelpers

Mdlint::Linter::Rules::JapaneseHelpers::CJK, Mdlint::Linter::Rules::JapaneseHelpers::JAPANESE

Instance Attribute Summary

Attributes inherited from Mdlint::Linter::Rule

#violations

Instance Method Summary collapse

Methods included from JapaneseHelpers

#each_inline, #line_for, #prose_content

Methods inherited from Mdlint::Linter::Rule

#add_violation, #fix, inherited, #initialize

Constructor Details

This class inherits a constructor from Mdlint::Linter::Rule

Instance Method Details

#check(tokens, _source) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/mdlint/linter/rules/japanese.rb', line 109

def check(tokens, _source)
  maximum = @options.fetch(:sentence_length, 80).to_i
  return @violations if maximum <= 0

  each_inline(tokens) do |token|
    prose_content(token).split(/(?<=[。!?!?])\s*/).each do |sentence|
      next if sentence.empty? || sentence.each_char.count <= maximum

      add_violation(
        message: "Sentence length #{sentence.each_char.count} exceeds #{maximum}",
        line: line_for(token),
        fixable: false
      )
    end
  end
  @violations
end