Class: Mdlint::Linter::Rules::JapaneseStyle

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



85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/mdlint/linter/rules/japanese.rb', line 85

def check(tokens, _source)
  prose = tokens.filter_map { |token| prose_content(token) if token.type == :inline }.join("\n")
  has_desu_masu = prose.match?(/です(?:。|\z)|ます(?:。|\z)|でした(?:。|\z)|ません(?:。|\z)/)
  has_de_aru = prose.match?(/である(?:。|\z)|だ(?:。|\z)|であった(?:。|\z)/)
  return @violations unless has_desu_masu && has_de_aru

  token = tokens.find { |candidate| candidate.type == :inline }
  add_violation(
    message: "Avoid mixing desu-masu and de-aru styles",
    line: line_for(token),
    fixable: false
  )
  @violations
end