hanlint 0.0.1

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 (106) hide show
  1. package/README.md +27 -0
  2. package/bin/hanlint.js +4 -0
  3. package/data/causalMarkers.txt +25 -0
  4. package/data/cliches.json +99 -0
  5. package/data/confusable.json +76 -0
  6. package/data/connectors.txt +18 -0
  7. package/data/countUnits.txt +6 -0
  8. package/data/coverageTypes.txt +7 -0
  9. package/data/deixis.txt +8 -0
  10. package/data/easyWords.json +340 -0
  11. package/data/emphasisWords.txt +11 -0
  12. package/data/endings.txt +9 -0
  13. package/data/euiNouns.txt +40 -0
  14. package/data/hedges.txt +15 -0
  15. package/data/hiddenDeps.txt +11 -0
  16. package/data/holeKinds.json +145 -0
  17. package/data/japaneseLoan.json +82 -0
  18. package/data/josa.txt +54 -0
  19. package/data/koreanNumbers.txt +22 -0
  20. package/data/passiveStems.txt +53 -0
  21. package/data/platformApis.txt +12 -0
  22. package/data/promiseMarkers.txt +7 -0
  23. package/data/pythonPackages.txt +35 -0
  24. package/data/pythonStdlib.txt +193 -0
  25. package/data/readerCalls.txt +14 -0
  26. package/data/recallMarkers.txt +6 -0
  27. package/data/redundantPair.json +70 -0
  28. package/data/ruleDocs.json +44 -0
  29. package/data/spacing.json +76 -0
  30. package/data/spelling.json +166 -0
  31. package/data/stopwords.txt +33 -0
  32. package/data/translationese.json +104 -0
  33. package/data/verbTails.txt +56 -0
  34. package/data/version.json +1 -0
  35. package/package.json +39 -0
  36. package/src/analysis/index.js +34 -0
  37. package/src/analysis/surface/splitSentences.js +36 -0
  38. package/src/analysis/surface/tokenize.js +162 -0
  39. package/src/cli/main.js +376 -0
  40. package/src/config/loadConfig.js +51 -0
  41. package/src/config/settings.js +80 -0
  42. package/src/config/toml.js +239 -0
  43. package/src/data/load.js +63 -0
  44. package/src/document/model.js +55 -0
  45. package/src/document/parseMarkdown.js +183 -0
  46. package/src/document/plainText.js +43 -0
  47. package/src/edit/applyFixes.js +0 -0
  48. package/src/fingerprint/build.js +284 -0
  49. package/src/fingerprint/dictionaries.js +118 -0
  50. package/src/fingerprint/markers.js +175 -0
  51. package/src/fingerprint/topics.js +42 -0
  52. package/src/index.js +68 -0
  53. package/src/regex.js +47 -0
  54. package/src/report/compactReport.js +9 -0
  55. package/src/report/fingerprintJson.js +126 -0
  56. package/src/report/githubReport.js +13 -0
  57. package/src/report/jsonReport.js +16 -0
  58. package/src/report/textReport.js +19 -0
  59. package/src/rules/code/duplicateBlock.js +48 -0
  60. package/src/rules/code/firstResultDistance.js +23 -0
  61. package/src/rules/code/inputFileSource.js +103 -0
  62. package/src/rules/code/installImport.js +126 -0
  63. package/src/rules/code/platformApi.js +36 -0
  64. package/src/rules/document/countMismatch.js +42 -0
  65. package/src/rules/document/keywordMissing.js +21 -0
  66. package/src/rules/document/noQuestion.js +11 -0
  67. package/src/rules/document/promiseRecall.js +12 -0
  68. package/src/rules/document/readerAbsent.js +11 -0
  69. package/src/rules/finding.js +53 -0
  70. package/src/rules/orthography/confusable.js +9 -0
  71. package/src/rules/orthography/spacing.js +9 -0
  72. package/src/rules/orthography/spelling.js +9 -0
  73. package/src/rules/paragraph/factListParagraph.js +27 -0
  74. package/src/rules/paragraph/paraFragment.js +29 -0
  75. package/src/rules/paragraph/topicBreak.js +25 -0
  76. package/src/rules/registry.js +147 -0
  77. package/src/rules/sentence/cliche.js +9 -0
  78. package/src/rules/sentence/connectorRepeat.js +23 -0
  79. package/src/rules/sentence/danglingDeixis.js +19 -0
  80. package/src/rules/sentence/dash.js +21 -0
  81. package/src/rules/sentence/deixis.js +19 -0
  82. package/src/rules/sentence/doubleNegative.js +28 -0
  83. package/src/rules/sentence/doublePassive.js +17 -0
  84. package/src/rules/sentence/ellipsis.js +17 -0
  85. package/src/rules/sentence/endingRepeat.js +25 -0
  86. package/src/rules/sentence/euiChain.js +18 -0
  87. package/src/rules/sentence/fillerOpener.js +18 -0
  88. package/src/rules/sentence/hardWord.js +10 -0
  89. package/src/rules/sentence/imperativePeriod.js +20 -0
  90. package/src/rules/sentence/japaneseLoan.js +9 -0
  91. package/src/rules/sentence/longSentence.js +20 -0
  92. package/src/rules/sentence/negationRedefine.js +22 -0
  93. package/src/rules/sentence/nounPile.js +20 -0
  94. package/src/rules/sentence/redundantPair.js +9 -0
  95. package/src/rules/sentence/translationese.js +9 -0
  96. package/src/rules/shared/codeBlocks.js +44 -0
  97. package/src/rules/shared/dictionaryRule.js +35 -0
  98. package/src/rules/shared/runs.js +22 -0
  99. package/src/rules/structure/emojiBullet.js +34 -0
  100. package/src/rules/structure/headingSentence.js +17 -0
  101. package/src/rules/structure/headingSkip.js +18 -0
  102. package/src/rules/structure/headingUniform.js +36 -0
  103. package/src/rules/structure/introLong.js +20 -0
  104. package/src/rules/structure/sectionNoProse.js +16 -0
  105. package/src/rules/structure/sectionResult.js +37 -0
  106. package/src/text.js +63 -0
@@ -0,0 +1,40 @@
1
+ # 의 로 끝나는 두 음절 명사. 뒤에 공백이 와도 관형격 조사가 아니라 euiCount 에서 뺀다.
2
+ # 실측: codeStyle.md 의 `정의 측 (함수 정의, 인자, 대입)` 이 의 2회로 잡혔다.
3
+ 정의
4
+ 회의
5
+ 논의
6
+ 문의
7
+ 주의
8
+ 합의
9
+ 협의
10
+ 강의
11
+ 편의
12
+ 예의
13
+ 성의
14
+ 호의
15
+ 결의
16
+ 동의
17
+ 임의
18
+ 유의
19
+ 항의
20
+ 심의
21
+ 토의
22
+ 상의
23
+ 의의
24
+ 이의
25
+ 사의
26
+ 대의
27
+ 신의
28
+ 민의
29
+ 발의
30
+ 건의
31
+ 명의
32
+ 도의
33
+ 부의
34
+ 선의
35
+ 악의
36
+ 고의
37
+ 호의
38
+ 경의
39
+ 품의
40
+ 안의
@@ -0,0 +1,15 @@
1
+ # 완곡과 추측의 표지 (정규식). 밀도 지표와 hedgeStack 후보가 센다.
2
+ 것으로 보인다
3
+ 것으로 보입니다
4
+ 것 같다
5
+ 것 같습니다
6
+ 수도 있다
7
+ 수도 있습니다
8
+ 듯하다
9
+ 듯합니다
10
+ 것으로 예상
11
+ 것으로 판단
12
+ 것으로 사료
13
+ 일 수 있
14
+ 가능성이 있
15
+ 일지도 모
@@ -0,0 +1,11 @@
1
+ # 코드 한 줄이 조용히 요구하는 패키지. `정규식<TAB>패키지[extra]<TAB>왜`. 설치 줄에 없으면 installImport 가 notice 로 짚는다.
2
+ # 실측: 004 가 ibis-framework[duckdb] 만 설치하고 ibis.sqlite.connect 를 썼고 사람 평가자가 집었다.
3
+ ibis\.sqlite\.connect ibis-framework[sqlite] ibis 의 sqlite 백엔드는 extra 로 따로 받는다
4
+ ibis\.duckdb\.connect ibis-framework[duckdb] ibis 의 duckdb 백엔드는 extra 로 따로 받는다
5
+ ibis\.postgres\.connect ibis-framework[postgres] ibis 의 postgres 백엔드는 extra 로 따로 받는다
6
+ dask\.dataframe dask[dataframe] dask 의 dataframe 은 extra 로 따로 받는다
7
+ pd\.read_excel\(|\.to_excel\( openpyxl pandas 의 엑셀 읽기와 쓰기는 openpyxl 이 있어야 돈다
8
+ pd\.read_parquet\(|\.to_parquet\( pyarrow pandas 의 parquet 은 pyarrow 가 있어야 돈다
9
+ pl\.read_excel\( fastexcel polars 의 엑셀 읽기는 fastexcel 이 기본 엔진이다
10
+ plt\.|import matplotlib matplotlib 그림을 그리려면 matplotlib 이 있어야 한다
11
+ requests\.get\(|requests\.post\( requests requests 는 표준 라이브러리가 아니다
@@ -0,0 +1,145 @@
1
+ {
2
+ "kind": [
3
+ {
4
+ "id": "rhythm",
5
+ "name": "리듬",
6
+ "symbol": "R",
7
+ "ansi": 75,
8
+ "hex": "#56B4E9",
9
+ "rules": [
10
+ "endingRepeat",
11
+ "longSentence",
12
+ "profile"
13
+ ]
14
+ },
15
+ {
16
+ "id": "flow",
17
+ "name": "흐름",
18
+ "symbol": "F",
19
+ "ansi": 214,
20
+ "hex": "#E69F00",
21
+ "rules": [
22
+ "topicBreak"
23
+ ]
24
+ },
25
+ {
26
+ "id": "deixis",
27
+ "name": "지시",
28
+ "symbol": "D",
29
+ "ansi": 166,
30
+ "hex": "#D55E00",
31
+ "rules": [
32
+ "deixis",
33
+ "danglingDeixis"
34
+ ]
35
+ },
36
+ {
37
+ "id": "list",
38
+ "name": "나열",
39
+ "symbol": "L",
40
+ "ansi": 170,
41
+ "hex": "#CC79A7",
42
+ "rules": [
43
+ "factListParagraph"
44
+ ]
45
+ },
46
+ {
47
+ "id": "density",
48
+ "name": "밀도",
49
+ "symbol": "N",
50
+ "ansi": 227,
51
+ "hex": "#F0E442",
52
+ "rules": [
53
+ "nounPile",
54
+ "euiChain",
55
+ "doublePassive"
56
+ ]
57
+ },
58
+ {
59
+ "id": "structure",
60
+ "name": "구조",
61
+ "symbol": "S",
62
+ "ansi": 36,
63
+ "hex": "#009E73",
64
+ "rules": [
65
+ "paraFragment",
66
+ "sectionNoProse",
67
+ "headingSkip",
68
+ "headingUniform",
69
+ "headingSentence",
70
+ "introLong",
71
+ "emojiBullet"
72
+ ]
73
+ },
74
+ {
75
+ "id": "promise",
76
+ "name": "약속",
77
+ "symbol": "P",
78
+ "ansi": 26,
79
+ "hex": "#0072B2",
80
+ "rules": [
81
+ "countMismatch",
82
+ "promiseRecall",
83
+ "keywordMissing"
84
+ ]
85
+ },
86
+ {
87
+ "id": "reader",
88
+ "name": "독자",
89
+ "symbol": "A",
90
+ "ansi": 245,
91
+ "hex": "#999999",
92
+ "rules": [
93
+ "noQuestion",
94
+ "readerAbsent"
95
+ ]
96
+ },
97
+ {
98
+ "id": "code",
99
+ "name": "코드",
100
+ "symbol": "C",
101
+ "ansi": 39,
102
+ "hex": "#00ACC1",
103
+ "rules": [
104
+ "inputFileSource",
105
+ "installImport",
106
+ "duplicateBlock",
107
+ "firstResultDistance",
108
+ "platformApi"
109
+ ]
110
+ },
111
+ {
112
+ "id": "orthography",
113
+ "name": "맞춤법",
114
+ "symbol": "H",
115
+ "ansi": 197,
116
+ "hex": "#C2185B",
117
+ "rules": [
118
+ "spelling",
119
+ "spacing",
120
+ "confusable"
121
+ ]
122
+ },
123
+ {
124
+ "id": "wording",
125
+ "name": "표현",
126
+ "symbol": "W",
127
+ "ansi": 137,
128
+ "hex": "#A0522D",
129
+ "rules": [
130
+ "cliche",
131
+ "translationese",
132
+ "redundantPair",
133
+ "japaneseLoan",
134
+ "hardWord",
135
+ "connectorRepeat",
136
+ "fillerOpener",
137
+ "doubleNegative",
138
+ "negationRedefine",
139
+ "dash",
140
+ "imperativePeriod",
141
+ "ellipsis"
142
+ ]
143
+ }
144
+ ]
145
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "entry": [
3
+ {
4
+ "pattern": "(?<![가-힣])구좌",
5
+ "fix": "계좌",
6
+ "why": "일본어투 한자어다",
7
+ "source": "국립국어원 2005"
8
+ },
9
+ {
10
+ "pattern": "(?<![가-힣])익일",
11
+ "fix": "다음날",
12
+ "why": "일본어투 한자어다",
13
+ "source": "국립국어원 2005"
14
+ },
15
+ {
16
+ "pattern": "(?<![가-힣])잔고",
17
+ "fix": "잔액",
18
+ "why": "일본어투 한자어다",
19
+ "source": "국립국어원 2005"
20
+ },
21
+ {
22
+ "pattern": "(?<![가-힣])고참",
23
+ "fix": "선임",
24
+ "why": "일본어투 한자어다",
25
+ "source": "국립국어원 2005"
26
+ },
27
+ {
28
+ "pattern": "(?<![가-힣])망년회",
29
+ "fix": "송년회",
30
+ "why": "일본어투 한자어다",
31
+ "source": "국립국어원 2005"
32
+ },
33
+ {
34
+ "pattern": "(?<![가-힣])종지부",
35
+ "fix": "마침표",
36
+ "why": "일본어투 한자어다",
37
+ "source": "국립국어원 2005"
38
+ },
39
+ {
40
+ "pattern": "(?<![가-힣])나와바리",
41
+ "fix": "구역",
42
+ "why": "일본어 음차어다",
43
+ "source": "국립국어원 2019"
44
+ },
45
+ {
46
+ "pattern": "(?<![가-힣])단도리",
47
+ "fix": "채비",
48
+ "why": "일본어 음차어다",
49
+ "source": "국립국어원 2019"
50
+ },
51
+ {
52
+ "pattern": "(?<![가-힣])무데뽀",
53
+ "fix": "막무가내",
54
+ "why": "일본어 음차어다",
55
+ "source": "국립국어원 2019"
56
+ },
57
+ {
58
+ "pattern": "(?<![가-힣])분빠이",
59
+ "fix": "각자 내기",
60
+ "why": "일본어 음차어다",
61
+ "source": "국립국어원 2019"
62
+ },
63
+ {
64
+ "pattern": "(?<![가-힣])기스",
65
+ "fix": "흠집",
66
+ "why": "일본어 음차어다",
67
+ "source": "국립국어원 2019"
68
+ },
69
+ {
70
+ "pattern": "(?<![가-힣])곤색",
71
+ "fix": "감색",
72
+ "why": "일본어 음차어다",
73
+ "source": "국립국어원 2019"
74
+ },
75
+ {
76
+ "pattern": "(?<![가-힣])노가다",
77
+ "fix": "막일",
78
+ "why": "일본어 음차어다",
79
+ "source": "국립국어원 2019"
80
+ }
81
+ ]
82
+ }
package/data/josa.txt ADDED
@@ -0,0 +1,54 @@
1
+ # 조사. 어절이 이것으로 끝나면 조사를 뗀 나머지를 화제어 후보로 본다.
2
+ # 긴 것부터 대조한다 (loader 가 길이순으로 정렬한다).
3
+ 에서는
4
+ 으로는
5
+ 에게는
6
+ 까지는
7
+ 부터는
8
+ 보다는
9
+ 으로부터
10
+ 로부터
11
+ 으로써
12
+ 으로서
13
+ 이라고
14
+ 이라는
15
+ 이라도
16
+ 이라면
17
+ 에서
18
+ 에게
19
+ 께서
20
+ 까지
21
+ 부터
22
+ 보다
23
+ 처럼
24
+ 만큼
25
+ 으로
26
+ 조차
27
+ 마저
28
+ 밖에
29
+ 이나
30
+ 이란
31
+ 이든
32
+ 라고
33
+ 라는
34
+ 라도
35
+ 로써
36
+ 로서
37
+ 은
38
+ 는
39
+ 이
40
+ 가
41
+ 을
42
+ 를
43
+ 의
44
+ 에
45
+ 로
46
+ 와
47
+ 과
48
+ 도
49
+ 만
50
+ 께
51
+ 야
52
+ 랑
53
+ 나
54
+ 든
@@ -0,0 +1,22 @@
1
+ # 한국어 수사와 값. 탭으로 나눈다. countMismatch 가 `한 가지`, `두 방식` 처럼 단위 앞에 오는 꼴을 세고,
2
+ # 명사 나열은 수사와 바로 뒤의 단위 (여덟 개, 세 방식) 를 수량으로 보아 명사로 세지 않는다.
3
+ 한 1
4
+ 두 2
5
+ 세 3
6
+ 네 4
7
+ 다섯 5
8
+ 여섯 6
9
+ 일곱 7
10
+ 여덟 8
11
+ 아홉 9
12
+ 열 10
13
+ 스물 20
14
+ 서른 30
15
+ 마흔 40
16
+ 쉰 50
17
+ 예순 60
18
+ 일흔 70
19
+ 여든 80
20
+ 아흔 90
21
+ 백 100
22
+ 천 1000
@@ -0,0 +1,53 @@
1
+ # 접미 피동사 어간. 여기에 -어지다 가 또 붙으면 이중 피동이다. `되` 는 코드가 따로 더한다.
2
+ 보이
3
+ 잊히
4
+ 쓰이
5
+ 불리
6
+ 읽히
7
+ 놓이
8
+ 먹히
9
+ 안기
10
+ 닫히
11
+ 열리
12
+ 풀리
13
+ 걸리
14
+ 잘리
15
+ 묻히
16
+ 팔리
17
+ 뽑히
18
+ 쫓기
19
+ 담기
20
+ 잠기
21
+ 찢기
22
+ 끊기
23
+ 감기
24
+ 모이
25
+ 쌓이
26
+ 섞이
27
+ 꺾이
28
+ 밟히
29
+ 잡히
30
+ 찍히
31
+ 막히
32
+ 꽂히
33
+ 박히
34
+ 뚫리
35
+ 밀리
36
+ 눌리
37
+ 깔리
38
+ 끌리
39
+ 물리
40
+ 갈리
41
+ 쏠리
42
+ 실리
43
+ 덮이
44
+ 꼬이
45
+ 나뉘
46
+ 바뀌
47
+ 뒤집히
48
+ 낚이
49
+ 매이
50
+ 베이
51
+ 파이
52
+ 쓸리
53
+ 휩쓸리
@@ -0,0 +1,12 @@
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
5
+ \bwinreg\b 윈도우 레지스트리는 윈도우에만 있다
6
+ \bmsvcrt\b 윈도우 termios 나 다른 입력 방법
7
+ \bwin32(?:api|con|gui|com)\b 윈도우 pywin32 는 윈도우 전용이다
8
+ \bosascript\b 맥 다른 운영체제에는 AppleScript 가 없다
9
+ /proc/ 리눅스 psutil 같은 이식 가능한 API
10
+ \bfcntl\b 리눅스와 맥 윈도우에는 fcntl 이 없다
11
+ resource\.getrusage\( 리눅스와 맥 윈도우에는 resource 모듈이 없다
12
+ [A-Za-z]:\\\\ 윈도우 절대 경로 대신 상대 경로나 pathlib
@@ -0,0 +1,7 @@
1
+ # 뒤를 약속하는 표지 (정규식). 회수 표지 없이 끝나면 promiseRecall 이 짚는다.
2
+ 뒤에서 .{0,12}(?:다루|설명|보|살펴|이야기)
3
+ 나중에 .{0,12}(?:다루|설명|살펴|이야기)
4
+ 아래에서 .{0,12}(?:다루|설명|보|살펴)
5
+ 다음 절에서
6
+ 뒤에 나오는
7
+ 후술
@@ -0,0 +1,35 @@
1
+ # import 이름과 pip 패키지 이름이 다른 것. `모듈<TAB>패키지`. installImport 가 설치 줄과 대조할 때 쓴다.
2
+ # 같은 이름 (pandas, polars, duckdb) 은 적지 않는다. 출처는 각 패키지의 PyPI 페이지다.
3
+ sklearn scikit-learn
4
+ cv2 opencv-python
5
+ PIL pillow
6
+ yaml pyyaml
7
+ bs4 beautifulsoup4
8
+ dotenv python-dotenv
9
+ ibis ibis-framework
10
+ dateutil python-dateutil
11
+ attr attrs
12
+ Crypto pycryptodome
13
+ jwt pyjwt
14
+ serial pyserial
15
+ usb pyusb
16
+ magic python-magic
17
+ OpenSSL pyopenssl
18
+ docx python-docx
19
+ pptx python-pptx
20
+ fitz pymupdf
21
+ skimage scikit-image
22
+ kiwipiepy kiwipiepy
23
+ google google-api-python-client
24
+ psycopg2 psycopg2-binary
25
+ MySQLdb mysqlclient
26
+ lxml lxml
27
+ Levenshtein python-levenshtein
28
+ tflite_runtime tflite-runtime
29
+ telebot pytelegrambotapi
30
+ websocket websocket-client
31
+ zmq pyzmq
32
+ gi pygobject
33
+ wx wxpython
34
+ mpl_toolkits matplotlib
35
+ pylab matplotlib
@@ -0,0 +1,193 @@
1
+ # 파이썬 표준 라이브러리 최상위 모듈. sys.stdlib_module_names (3.13) 에서 뽑았다. installImport 가 설치 대조에서 뺀다.
2
+ abc
3
+ antigravity
4
+ argparse
5
+ array
6
+ ast
7
+ asyncio
8
+ atexit
9
+ base64
10
+ bdb
11
+ binascii
12
+ bisect
13
+ builtins
14
+ bz2
15
+ cProfile
16
+ calendar
17
+ cmath
18
+ cmd
19
+ code
20
+ codecs
21
+ codeop
22
+ collections
23
+ colorsys
24
+ compileall
25
+ concurrent
26
+ configparser
27
+ contextlib
28
+ contextvars
29
+ copy
30
+ copyreg
31
+ csv
32
+ ctypes
33
+ curses
34
+ dataclasses
35
+ datetime
36
+ dbm
37
+ decimal
38
+ difflib
39
+ dis
40
+ doctest
41
+ email
42
+ encodings
43
+ ensurepip
44
+ enum
45
+ errno
46
+ faulthandler
47
+ fcntl
48
+ filecmp
49
+ fileinput
50
+ fnmatch
51
+ fractions
52
+ ftplib
53
+ functools
54
+ gc
55
+ genericpath
56
+ getopt
57
+ getpass
58
+ gettext
59
+ glob
60
+ graphlib
61
+ grp
62
+ gzip
63
+ hashlib
64
+ heapq
65
+ hmac
66
+ html
67
+ http
68
+ idlelib
69
+ imaplib
70
+ importlib
71
+ inspect
72
+ io
73
+ ipaddress
74
+ itertools
75
+ json
76
+ keyword
77
+ linecache
78
+ locale
79
+ logging
80
+ lzma
81
+ mailbox
82
+ marshal
83
+ math
84
+ mimetypes
85
+ mmap
86
+ modulefinder
87
+ msvcrt
88
+ multiprocessing
89
+ netrc
90
+ nt
91
+ ntpath
92
+ nturl2path
93
+ numbers
94
+ opcode
95
+ operator
96
+ optparse
97
+ os
98
+ pathlib
99
+ pdb
100
+ pickle
101
+ pickletools
102
+ pkgutil
103
+ platform
104
+ plistlib
105
+ poplib
106
+ posix
107
+ posixpath
108
+ pprint
109
+ profile
110
+ pstats
111
+ pty
112
+ pwd
113
+ py_compile
114
+ pyclbr
115
+ pydoc
116
+ pydoc_data
117
+ pyexpat
118
+ queue
119
+ quopri
120
+ random
121
+ re
122
+ readline
123
+ reprlib
124
+ resource
125
+ rlcompleter
126
+ runpy
127
+ sched
128
+ secrets
129
+ select
130
+ selectors
131
+ shelve
132
+ shlex
133
+ shutil
134
+ signal
135
+ site
136
+ smtplib
137
+ socket
138
+ socketserver
139
+ sqlite3
140
+ sre_compile
141
+ sre_constants
142
+ sre_parse
143
+ ssl
144
+ stat
145
+ statistics
146
+ string
147
+ stringprep
148
+ struct
149
+ subprocess
150
+ symtable
151
+ sys
152
+ sysconfig
153
+ syslog
154
+ tabnanny
155
+ tarfile
156
+ tempfile
157
+ termios
158
+ textwrap
159
+ this
160
+ threading
161
+ time
162
+ timeit
163
+ tkinter
164
+ token
165
+ tokenize
166
+ tomllib
167
+ trace
168
+ traceback
169
+ tracemalloc
170
+ tty
171
+ turtle
172
+ turtledemo
173
+ types
174
+ typing
175
+ unicodedata
176
+ unittest
177
+ urllib
178
+ uuid
179
+ venv
180
+ warnings
181
+ wave
182
+ weakref
183
+ webbrowser
184
+ winreg
185
+ winsound
186
+ wsgiref
187
+ xml
188
+ xmlrpc
189
+ zipapp
190
+ zipfile
191
+ zipimport
192
+ zlib
193
+ zoneinfo
@@ -0,0 +1,14 @@
1
+ # 독자를 부르는 자리의 표지 (정규식). 명령형 종결과 함께 readerAbsent 가 센다.
2
+ 여러분
3
+ 독자
4
+ 해 보세요
5
+ 해 봅시다
6
+ 해 봅니다
7
+ 확인해 봅
8
+ 열어 봅
9
+ 눌러 봅
10
+ 실행해 봅
11
+ 바꿔 봅
12
+ 넣어 봅
13
+ 직접 해
14
+ 따라 해
@@ -0,0 +1,6 @@
1
+ # 앞에서 미룬 것을 회수하는 표지 (정규식).
2
+ 앞에서 .{0,12}(?:말한|다룬|본|설명한|적은|미룬|남긴|만든)
3
+ 앞서 .{0,12}(?:말한|다룬|본|설명한|적은|미룬|남긴|만든)
4
+ 위에서 .{0,12}(?:말한|다룬|본|설명한|적은|미룬|남긴|만든)
5
+ 앞의 절
6
+ 전술