hanlint 0.0.18 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +17 -16
  2. package/data/calqueFrame.json +20 -20
  3. package/data/cliches.json +33 -33
  4. package/data/confusable.json +20 -20
  5. package/data/easyWords.json +12 -12
  6. package/data/exemplars.json +30 -30
  7. package/data/hiddenDeps.txt +11 -11
  8. package/data/japaneseLoan.json +27 -27
  9. package/data/koreanProse.txt +31 -31
  10. package/data/patterns.json +26 -26
  11. package/data/phraseRepeat.json +2 -2
  12. package/data/platformApis.txt +11 -11
  13. package/data/redundantPair.json +16 -16
  14. package/data/ruleDocs.json +56 -56
  15. package/data/screenNarration.json +10 -10
  16. package/data/screenSentence.json +12 -12
  17. package/data/screenTone.json +6 -6
  18. package/data/screenWord.json +70 -70
  19. package/data/spacing.json +11 -11
  20. package/data/spelling.json +29 -29
  21. package/data/translationese.json +23 -24
  22. package/data/usageCounts.report.json +2 -2
  23. package/data/version.json +1 -1
  24. package/package.json +1 -1
  25. package/src/analysis/grammar/ending.js +1 -1
  26. package/src/analysis/grammar/hangul.js +4 -4
  27. package/src/analysis/grammar/josa.js +1 -1
  28. package/src/analysis/grammar/register.js +1 -1
  29. package/src/analysis/grammar/voice.js +1 -1
  30. package/src/analysis/index.js +2 -2
  31. package/src/analysis/josa.js +1 -1
  32. package/src/analysis/splitSentences.js +1 -1
  33. package/src/analysis/tokenize.js +13 -13
  34. package/src/baseline/store.js +8 -8
  35. package/src/cli/help.js +11 -11
  36. package/src/cli/main.js +135 -124
  37. package/src/cli/walk.js +1 -1
  38. package/src/cli/welcome.js +8 -8
  39. package/src/config/loadConfig.js +3 -3
  40. package/src/config/patch.js +6 -6
  41. package/src/config/readerContract.js +26 -26
  42. package/src/config/settings.js +30 -28
  43. package/src/config/toml.js +9 -9
  44. package/src/data/exemplars.js +21 -21
  45. package/src/data/load.js +6 -6
  46. package/src/data/operations.js +14 -14
  47. package/src/data/patches.js +10 -10
  48. package/src/data/patterns.js +5 -5
  49. package/src/data/profiles.js +5 -5
  50. package/src/data/prose.js +5 -5
  51. package/src/document/model.js +4 -4
  52. package/src/document/parseMarkdown.js +7 -7
  53. package/src/document/plainText.js +3 -3
  54. package/src/document/sourceText.js +24 -24
  55. package/src/edit/applyFixes.js +0 -0
  56. package/src/fingerprint/build.js +6 -6
  57. package/src/fingerprint/codeBlocks.js +3 -3
  58. package/src/fingerprint/codeMarkers.js +4 -4
  59. package/src/fingerprint/dictionaries.js +7 -7
  60. package/src/fingerprint/markers.js +7 -7
  61. package/src/fingerprint/readerState.js +9 -9
  62. package/src/fingerprint/sourceSentence.js +1 -1
  63. package/src/fingerprint/topics.js +1 -1
  64. package/src/guard/contract.js +6 -6
  65. package/src/guard/editLocality.js +1 -1
  66. package/src/guard/outline.js +1 -1
  67. package/src/guard/receipt.js +13 -13
  68. package/src/guard/surface.js +4 -4
  69. package/src/index.js +6 -6
  70. package/src/learn/edits.js +2 -2
  71. package/src/learn/operations.js +1 -1
  72. package/src/regex.js +2 -2
  73. package/src/report/compactReport.js +3 -3
  74. package/src/report/fingerprintJson.js +2 -2
  75. package/src/report/githubReport.js +1 -1
  76. package/src/report/jsonReport.js +2 -2
  77. package/src/report/registerMatch.js +2 -2
  78. package/src/report/sheet.js +16 -16
  79. package/src/report/textReport.js +12 -12
  80. package/src/report/writingSpec.js +15 -15
  81. package/src/rules/code/inputFileSource.js +1 -1
  82. package/src/rules/code/installImport.js +2 -2
  83. package/src/rules/code/platformApi.js +1 -1
  84. package/src/rules/document/countMismatch.js +2 -1
  85. package/src/rules/document/enoughOnce.js +2 -1
  86. package/src/rules/document/fieldEcho.js +10 -6
  87. package/src/rules/document/keywordHeading.js +1 -1
  88. package/src/rules/document/keywordMissing.js +1 -1
  89. package/src/rules/document/noQuestion.js +2 -2
  90. package/src/rules/document/promiseRecall.js +1 -1
  91. package/src/rules/document/tableOddCell.js +1 -1
  92. package/src/rules/finding.js +4 -4
  93. package/src/rules/paragraph/factListParagraph.js +1 -1
  94. package/src/rules/paragraph/paraFragment.js +1 -1
  95. package/src/rules/readerDebt.js +1 -1
  96. package/src/rules/registry.js +26 -26
  97. package/src/rules/sentence/connectorRepeat.js +2 -1
  98. package/src/rules/sentence/danglingDeixis.js +1 -1
  99. package/src/rules/sentence/dash.js +1 -1
  100. package/src/rules/sentence/deixis.js +1 -1
  101. package/src/rules/sentence/doubleNegative.js +2 -1
  102. package/src/rules/sentence/doublePassive.js +2 -1
  103. package/src/rules/sentence/draftHistory.js +2 -1
  104. package/src/rules/sentence/endingRepeat.js +3 -2
  105. package/src/rules/sentence/euiChain.js +1 -1
  106. package/src/rules/sentence/fillerOpener.js +1 -1
  107. package/src/rules/sentence/imperativePeriod.js +1 -1
  108. package/src/rules/sentence/longSentence.js +1 -1
  109. package/src/rules/sentence/negationRedefine.js +1 -1
  110. package/src/rules/sentence/numberOrphan.js +1 -1
  111. package/src/rules/sentence/outsideProfile.js +8 -3
  112. package/src/rules/sentence/phraseRepeat.js +2 -1
  113. package/src/rules/shared/candidates.js +2 -2
  114. package/src/rules/shared/dictionaryRule.js +9 -2
  115. package/src/rules/shared/repeat.js +2 -2
  116. package/src/rules/structure/bridgeRepeat.js +3 -3
  117. package/src/rules/structure/emojiBullet.js +1 -1
  118. package/src/rules/structure/headingSkip.js +1 -1
  119. package/src/rules/structure/headingUniform.js +2 -1
  120. package/src/rules/structure/loneSubheading.js +1 -1
  121. package/src/rules/structure/moreLater.js +1 -1
  122. package/src/text.js +2 -2
  123. package/src/usage/counts.js +3 -3
  124. package/src/usage/index.js +3 -3
  125. package/src/usage/sentences.js +17 -17
@@ -1,14 +1,14 @@
1
- # 한 운영체제에서만 도는 API 와 경로. `정규식<TAB>플랫폼<TAB>대안`. platformApi 가 코드 블록에서 notice 로 짚는다.
2
- # 실측: 004 의 peak_wset 은 윈도우에서만 나와 맥과 리눅스 독자가 AttributeError 로 멈췄다 (사람 평가자 지적).
3
- peak_wset 윈도우 맥과 리눅스는 memory_info().rss 나 resource.getrusage(...).ru_maxrss 다
4
- os\.startfile\( 윈도우 subprocess.run(["open", 경로]) 나 xdg-open
1
+ # 한 운영체제에서만 도는 API와 경로. `정규식<TAB>플랫폼<TAB>대안`. platformApi가 코드 블록에서 경고로 짚는다.
2
+ # 실측: 블로그 004의 peak_wset은 윈도우에서만 나와 맥과 리눅스 독자가 AttributeError로 멈췄다(사람 평가자 지적).
3
+ peak_wset 윈도우 맥과 리눅스는 memory_info().rss나 resource.getrusage(...).ru_maxrss를 쓴다
4
+ os\.startfile\( 윈도우 subprocess.run(["open", 경로])나 xdg-open을 쓴다
5
5
  \bwinreg\b 윈도우 레지스트리는 윈도우에만 있다
6
- \bmsvcrt\b 윈도우 termios 나 다른 입력 방법
7
- \bwin32(?:api|con|gui|com)\b 윈도우 pywin32 는 윈도우 전용이다
8
- \bosascript\b 맥 다른 운영체제에는 AppleScript 가 없다
9
- # /proc/ 는 뺐다. 코드에 박히는 API 호출이 아니라 셸 명령의 경로이고, 컨테이너 안에서는
6
+ \bmsvcrt\b 윈도우 termios나 다른 입력 방법을 쓴다
7
+ \bwin32(?:api|con|gui|com)\b 윈도우 pywin32는 윈도우 전용이다
8
+ \bosascript\b 맥 다른 운영체제에는 AppleScript가 없다
9
+ # /proc/는 뺐다. 코드에 박히는 API 호출이 아니라 셸 명령의 경로이고, 컨테이너 안에서는
10
10
  # 리눅스가 기본 실행 환경이다. 실측: 기준 말뭉치의 지적 여덟 건이 전부 이 한 줄이었고 전부
11
- # 쿠버네티스 안내서의 kubectl exec 와 컨테이너 안 셸 기록이라 독자가 멈추지 않는다 (2026-08-31).
12
- \bfcntl\b 리눅스와 맥 윈도우에는 fcntl 이 없다
11
+ # 쿠버네티스 안내서의 kubectl exec와 컨테이너 안 셸 기록이라 독자가 멈추지 않는다 (2026-08-31).
12
+ \bfcntl\b 리눅스와 맥 윈도우에는 fcntl이 없다
13
13
  resource\.getrusage\( 리눅스와 맥 윈도우에는 resource 모듈이 없다
14
- [A-Za-z]:\\\\ 윈도우 절대 경로 대신 상대 경로나 pathlib
14
+ [A-Za-z]:\\\\ 윈도우 절대 경로 대신 상대 경로나 pathlib을 쓴다
@@ -3,67 +3,67 @@
3
3
  {
4
4
  "pattern": "역전 ?앞",
5
5
  "fix": "역 앞",
6
- "why": "역전 (驛前) 이 이미 역 앞이다",
7
- "source": "국립국어원 2005"
6
+ "why": "`역전(驛前)`이 이미 `역 앞`이라는 뜻이다",
7
+ "source": "국립국어원 새국어생활 2005"
8
8
  },
9
9
  {
10
10
  "pattern": "그때 당시",
11
11
  "fix": "그때",
12
- "why": "그때와 당시가 같은 뜻이다",
13
- "source": "국립국어원 2005"
12
+ "why": "`그때`와 `당시`가 같은 뜻이다",
13
+ "source": "국립국어원 새국어생활 2005"
14
14
  },
15
15
  {
16
16
  "pattern": "매 ?시간마다",
17
17
  "fix": "매시간",
18
- "why": "매와 마다가 같은 뜻이다",
19
- "source": "국립국어원 2005"
18
+ "why": "`매`와 `마다`가 같은 뜻이다",
19
+ "source": "국립국어원 새국어생활 2005"
20
20
  },
21
21
  {
22
22
  "pattern": "해변가",
23
23
  "fix": "해변",
24
- "why": "해변 (海邊) 의 변이 이미 가다",
25
- "source": "국립국어원 2005"
24
+ "why": "`해변(海邊)`의 `변`이 이미 `가`라는 뜻이다",
25
+ "source": "국립국어원 새국어생활 2005"
26
26
  },
27
27
  {
28
28
  "pattern": "판이하게 다(?=[르른릅])",
29
29
  "fix": "판이하",
30
- "why": "판이하다가 이미 아주 다르다는 뜻이다",
30
+ "why": "`판이하다`가 이미 아주 다르다는 뜻이다",
31
31
  "source": "법조신문 넘쳐나는 겹말들"
32
32
  },
33
33
  {
34
34
  "pattern": "결실을 맺",
35
35
  "fix": "결실을 보",
36
- "why": "결실 (結實) 의 결이 이미 맺다다",
36
+ "why": "`결실(結實)`의 `결`이 이미 `맺다`라는 뜻이다",
37
37
  "source": "법조신문 넘쳐나는 겹말들"
38
38
  },
39
39
  {
40
40
  "pattern": "남은 여생",
41
41
  "fix": "여생",
42
- "why": "여생 (餘生) 이 이미 남은 삶이다",
42
+ "why": "`여생(餘生)`이 이미 남은 삶이라는 뜻이다",
43
43
  "source": "법조신문 넘쳐나는 겹말들"
44
44
  },
45
45
  {
46
46
  "pattern": "미리 예약",
47
47
  "fix": "예약",
48
- "why": "예약 (豫約) 의 예가 이미 미리다",
48
+ "why": "`예약(豫約)`의 `예`가 이미 `미리`라는 뜻이다",
49
49
  "source": "법조신문 넘쳐나는 겹말들"
50
50
  },
51
51
  {
52
- "pattern": "(?:또)?다시 재(?!(?:력|주|산|물|화|벌|원|무|정|능|치|간|료|목|질|난|해|앙|고|판){조사})([가-힣]+)",
52
+ "pattern": "(?:또)?다시 재(?!(?:력|주|산|물|화|벌|원|무|정|능|치|간|료|목|질|난|해|앙|고|판){조사})(?!(?:거나|면|서|며|니|는|어|어서|었다|야|요|다|도|지)(?![가-힣]))([가-힣]+)",
53
53
  "fix": "재$1",
54
- "why": "재 (再) 가 이미 다시다",
54
+ "why": "`재(再)`가 이미 `다시`라는 뜻이다",
55
55
  "source": "법조신문 넘쳐나는 겹말들"
56
56
  },
57
57
  {
58
58
  "pattern": "서로 상의",
59
59
  "fix": "상의",
60
- "why": "상의 (相議) 의 상이 이미 서로다",
60
+ "why": "`상의(相議)`의 `상`이 이미 `서로`라는 뜻이다",
61
61
  "source": "법조신문 넘쳐나는 겹말들"
62
62
  },
63
63
  {
64
64
  "pattern": "과반수 이상",
65
65
  "fix": "과반수",
66
- "why": "과반수가 이미 절반 이상이다",
66
+ "why": "`과반수`가 이미 절반이 넘는 수라는 뜻이다",
67
67
  "source": "법조신문 넘쳐나는 겹말들"
68
68
  }
69
69
  ]