diff --git a/src/MixedChecker.js b/src/MixedChecker.js index b868e8b..b3bb7d7 100644 --- a/src/MixedChecker.js +++ b/src/MixedChecker.js @@ -82,7 +82,11 @@ export default class MixedChecker { } isOver() { - return this.dearuCount !== 0 && this.desumasuCount !== 0; + return ( + (this.options.preferDesumasu && this.dearuCount !== 0) || + (this.options.preferDearu && this.desumasuCount !== 0) || + (this.dearuCount !== 0 && this.desumasuCount !== 0) + ); } /** diff --git a/test/no-mix-dearu-desumasu-test.js b/test/no-mix-dearu-desumasu-test.js index 084ffcf..12cc6c4 100644 --- a/test/no-mix-dearu-desumasu-test.js +++ b/test/no-mix-dearu-desumasu-test.js @@ -246,6 +246,7 @@ Total: } ] }, + // 箇条書き間での混在 { text: ` @@ -502,6 +503,152 @@ Total: column: 12 } ] + }, + + // 混在はしていないがpreferInの設定と一致していない場合 + { + text: `今日はいい天気である。 +明日はいい天気である。`, + options: { + preferInBody: "ですます" + }, + errors: [ + // preferInで"ですます"が設定されているため、"である"に統一された文章でも、"ですます"を優先する + { + message: `本文: "である"調 と "ですます"調 が混在 +=> "ですます"調 の文体に、次の "である"調 の箇所があります: "である。" +Total: +である : 2 +ですます: 0 +`, + line: 1, + column: 8 + }, + { + message: `本文: "である"調 と "ですます"調 が混在 +=> "ですます"調 の文体に、次の "である"調 の箇所があります: "である。" +Total: +である : 2 +ですます: 0 +`, + line: 2, + column: 8 + } + ] + }, + { + text: `今日はいい天気ですね。 +明日はいい天気ですね。`, + options: { + preferInBody: "である" + }, + errors: [ + // preferInで"である"が設定されているため、"ですます"に統一された文章でも、"である"を優先する + { + message: `本文: "である"調 と "ですます"調 が混在 +=> "である"調 の文体に、次の "ですます"調 の箇所があります: "ですね。" +Total: +である : 0 +ですます: 2 +`, + line: 1, + column: 8 + }, + { + message: `本文: "である"調 と "ですます"調 が混在 +=> "である"調 の文体に、次の "ですます"調 の箇所があります: "ですね。" +Total: +である : 0 +ですます: 2 +`, + line: 2, + column: 8 + } + ] + }, + { + text: ` +# 今日はいい天気である +`, + options: { + preferInHeader: "ですます" + }, + errors: [ + // preferInで"ですます"が設定されているため、"である"に統一された文章でも、"ですます"を優先する + { + message: `見出し: "である"調 と "ですます"調 が混在 +=> "ですます"調 の文体に、次の "である"調 の箇所があります: "である" +Total: +である : 1 +ですます: 0 +`, + line: 2, + column: 10 + } + ] + }, + { + text: ` +# 今日はいい天気になりますね +`, + options: { + preferInHeader: "である" + }, + errors: [ + // preferInで"である"が設定されているため、"ですます"に統一された文章でも、"である"を優先する + { + message: `見出し: "である"調 と "ですます"調 が混在 +=> "である"調 の文体に、次の "ですます"調 の箇所があります: "ますね" +Total: +である : 0 +ですます: 1 +`, + line: 2, + column: 13 + } + ] + }, + { + text: ` +- 今日はいい天気である +`, + options: { + preferInList: "ですます" + }, + errors: [ + // preferInで"ですます"が設定されているため、"である"に統一された文章でも、"ですます"を優先する + { + message: `箇条書き: "である"調 と "ですます"調 が混在 +=> "ですます"調 の文体に、次の "である"調 の箇所があります: "である" +Total: +である : 1 +ですます: 0 +`, + line: 2, + column: 10 + } + ] + }, + { + text: ` +- 今日はいい天気になりますね +`, + options: { + preferInList: "である" + }, + errors: [ + // preferInで"である"が設定されているため、"ですます"に統一された文章でも、"である"を優先する + { + message: `箇条書き: "である"調 と "ですます"調 が混在 +=> "である"調 の文体に、次の "ですます"調 の箇所があります: "ますね" +Total: +である : 0 +ですます: 1 +`, + line: 2, + column: 13 + } + ] } ] });