georgian-hyphenation 2.0.1 → 2.2.2
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.
- package/LICENSE.txt +1 -1
- package/README.md +63 -347
- package/data/exceptions.json +144 -0
- package/package.json +18 -8
- package/src/javascript/index.js +112 -96
- package/README-NPM.md +0 -620
package/LICENSE.txt
CHANGED
package/README.md
CHANGED
|
@@ -1,424 +1,140 @@
|
|
|
1
|
-
# Georgian Language Hyphenation
|
|
1
|
+
# Georgian Language Hyphenation
|
|
2
2
|
|
|
3
|
-
[](https://www.python.org/downloads/)
|
|
3
|
+
[](https://www.npmjs.com/package/georgian-hyphenation)
|
|
5
4
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://www.ecma-international.org/)
|
|
5
|
+
[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)
|
|
8
6
|
|
|
9
|
-
**Version 2.
|
|
7
|
+
**Version 2.2.1** - Academic Logic with Automatic Sanitization & Dictionary Support
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ქართული ენის სრული დამარცვლის ბიბლიოთეკა, რომელიც იყენებს თანამედროვე ლინგვისტურ ალგორითმებს ზუსტი მარცვლების გამოყოფისთვის.
|
|
9
|
+
ქართული ენის სრული დამარცვლის ბიბლიოთეკა. ვერსია 2.2.1 მოიცავს ავტომატურ გასუფთავებას (Sanitization) და გამონაკლისების ლექსიკონის მხარდაჭერას.
|
|
14
10
|
|
|
15
11
|
---
|
|
16
12
|
|
|
17
|
-
## ✨
|
|
18
|
-
|
|
19
|
-
### 🎓 **v2.0 Academic Logic**
|
|
20
|
-
- **Phonological Distance Analysis**: Intelligent vowel-to-vowel distance calculation
|
|
21
|
-
- **Anti-Orphan Protection**: Prevents single-character splits (minimum 2 chars per side)
|
|
22
|
-
- **'R' Rule**: Special handling for Georgian 'რ' in consonant clusters
|
|
23
|
-
- **Hiatus Handling**: Proper V-V split detection (e.g., გა-ა-ნა-ლი-ზა)
|
|
24
|
-
- **98%+ Accuracy**: Validated on 10,000+ Georgian words
|
|
25
|
-
|
|
26
|
-
### 🚀 **Core Features**
|
|
27
|
-
- ✅ **Accurate syllabification** based on Georgian phonological rules
|
|
28
|
-
- ✅ **Multiple output formats**: Soft hyphens (U+00AD), visible hyphens, TeX patterns, Hunspell dictionary
|
|
29
|
-
- ✅ **Python and JavaScript implementations** for maximum compatibility
|
|
30
|
-
- ✅ **Browser Extension** - Automatic hyphenation on any website
|
|
31
|
-
- ✅ **Web-ready** with HTML/CSS/JS demo
|
|
32
|
-
- ✅ **Export capabilities**: JSON, TeX, Hunspell
|
|
33
|
-
- ✅ **Well-tested** with comprehensive Georgian word corpus
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 🧠 Algorithm Logic / ალგორითმის ლოგიკა
|
|
38
|
-
|
|
39
|
-
### Version 2.0: Academic Approach
|
|
40
|
-
|
|
41
|
-
The v2.0 algorithm uses **phonological distance analysis** instead of pattern matching:
|
|
42
|
-
|
|
43
|
-
#### **Core Principles:**
|
|
13
|
+
## ✨ New in v2.2.1
|
|
44
14
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
2. **Splitting Rules:**
|
|
51
|
-
- **V-V** (distance = 0): Split between vowels → `გა-ა-ნა`
|
|
52
|
-
- **V-C-V** (distance = 1): Split before consonant → `მა-მა`
|
|
53
|
-
- **V-CC-V** (distance ≥ 2): Split after first consonant → `საქ-მე`
|
|
54
|
-
|
|
55
|
-
3. **Special Rules:**
|
|
56
|
-
- **'R' Rule**: If cluster starts with 'რ', keep it left → `ბარ-ბი` (not `ბა-რბი`)
|
|
57
|
-
- **Anti-Orphan**: Minimum 2 characters on each side → `არა` stays intact
|
|
58
|
-
|
|
59
|
-
4. **Safety Filters:**
|
|
60
|
-
- Words < 4 characters: Never hyphenated
|
|
61
|
-
- Single vowel words: Cannot be split
|
|
62
|
-
- Punctuation preserved in text processing
|
|
63
|
-
|
|
64
|
-
#### **Examples:**
|
|
65
|
-
|
|
66
|
-
| Word | Analysis | Result |
|
|
67
|
-
|------|----------|--------|
|
|
68
|
-
| **საქართველო** | V(ა)-C(ქ)-C(რ)-V(ე) | სა-ქარ-თვე-ლო |
|
|
69
|
-
| **იარაღი** | V(ი)-V(ა)-C(რ)-V(ა) | ი-ა-რა-ღი |
|
|
70
|
-
| **ბარბი** | V(ა)-C(**რ**)-C(ბ)-V(ი) | ბარ-ბი *(R Rule)* |
|
|
71
|
-
| **არა** | V(ა)-C(რ)-V(ა) | არა *(Anti-Orphan)* |
|
|
72
|
-
| **კომპიუტერი** | Complex cluster | კომ-პი-უ-ტე-რი |
|
|
15
|
+
- 🧹 **Automatic Sanitization**: Automatically strips existing soft-hyphens or markers before processing to prevent "double-hyphenation" bugs.
|
|
16
|
+
- 📚 **Dictionary Support**: Integrated exception handling for irregular words.
|
|
17
|
+
- 🚀 **Performance Boost**: Harmonic cluster lookups optimized using `Set` (O(1) complexity).
|
|
18
|
+
- 📦 **Modern ESM Support**: Native support for `import/export` syntax.
|
|
73
19
|
|
|
74
20
|
---
|
|
75
21
|
|
|
76
|
-
## 📦 Installation
|
|
22
|
+
## 📦 Installation
|
|
77
23
|
|
|
78
|
-
### Python
|
|
79
|
-
```bash
|
|
80
|
-
pip install georgian-hyphenation
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### JavaScript (NPM)
|
|
84
24
|
```bash
|
|
85
25
|
npm install georgian-hyphenation
|
|
86
|
-
```
|
|
87
26
|
|
|
88
|
-
### Browser Extension
|
|
89
|
-
|
|
90
|
-
**Firefox:** [Install from Firefox Add-ons](https://addons.mozilla.org/firefox/addon/georgian-hyphenation/)
|
|
91
|
-
**Chrome:** *Coming soon to Chrome Web Store*
|
|
92
|
-
|
|
93
|
-
### Manual Installation
|
|
94
|
-
```bash
|
|
95
|
-
git clone https://github.com/guramzhgamadze/georgian-hyphenation.git
|
|
96
|
-
cd georgian-hyphenation
|
|
97
|
-
python setup.py install
|
|
98
27
|
```
|
|
99
28
|
|
|
100
29
|
---
|
|
101
30
|
|
|
102
|
-
## 📖 Usage /
|
|
31
|
+
## 📖 Usage (Modern JavaScript / ESM)
|
|
103
32
|
|
|
104
|
-
###
|
|
105
|
-
```python
|
|
106
|
-
from georgian_hyphenation import GeorgianHyphenator
|
|
33
|
+
### Basic Usage
|
|
107
34
|
|
|
108
|
-
|
|
109
|
-
|
|
35
|
+
```javascript
|
|
36
|
+
import GeorgianHyphenator from 'georgian-hyphenation';
|
|
110
37
|
|
|
111
|
-
|
|
112
|
-
word = "საქართველო"
|
|
113
|
-
result = hyphenator.hyphenate(word)
|
|
114
|
-
print(result) # საქართველო (with U+00AD soft hyphens)
|
|
38
|
+
const hyphenator = new GeorgianHyphenator('-'); // Use '-' for visible results
|
|
115
39
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
40
|
+
// 1. Hyphenate a word
|
|
41
|
+
console.log(hyphenator.hyphenate('საქართველო'));
|
|
42
|
+
// Output: "სა-ქარ-თვე-ლო"
|
|
119
43
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
44
|
+
// 2. Automatic Sanitization (New!)
|
|
45
|
+
// If the word already contains hyphens, it cleans them first
|
|
46
|
+
const messyWord = 'სა-ქარ-თვე-ლო';
|
|
47
|
+
console.log(hyphenator.hyphenate(messyWord));
|
|
48
|
+
// Output: "სა-ქარ-თვე-ლო" (Correctly re-processed)
|
|
123
49
|
|
|
124
|
-
# Hyphenate entire text (preserves punctuation)
|
|
125
|
-
text = "საქართველო არის ლამაზი ქვეყანა."
|
|
126
|
-
print(hyphenator.hyphenate_text(text))
|
|
127
|
-
# Output: საქართველო არის ლამაზი ქვეყანა.
|
|
128
50
|
```
|
|
129
51
|
|
|
130
|
-
###
|
|
131
|
-
```javascript
|
|
132
|
-
const { GeorgianHyphenator } = require('georgian-hyphenation');
|
|
52
|
+
### Loading Exceptions Dictionary
|
|
133
53
|
|
|
134
|
-
|
|
135
|
-
//
|
|
54
|
+
```javascript
|
|
55
|
+
// Load the built-in dictionary of exceptions
|
|
56
|
+
await hyphenator.loadDefaultLibrary();
|
|
136
57
|
|
|
137
|
-
|
|
138
|
-
const hyphenator = new GeorgianHyphenator();
|
|
58
|
+
console.log(hyphenator.hyphenate('ობიექტი'));
|
|
139
59
|
|
|
140
|
-
|
|
141
|
-
const word = "საქართველო";
|
|
142
|
-
const result = hyphenator.hyphenate(word);
|
|
143
|
-
console.log(result); // საქართველო (with U+00AD)
|
|
60
|
+
```
|
|
144
61
|
|
|
145
|
-
|
|
146
|
-
const syllables = hyphenator.getSyllables(word);
|
|
147
|
-
console.log(syllables); // ['სა', 'ქარ', 'თვე', 'ლო']
|
|
62
|
+
### Hyphenate Entire Text
|
|
148
63
|
|
|
149
|
-
|
|
150
|
-
const text = "საქართველო
|
|
64
|
+
```javascript
|
|
65
|
+
const text = "გამარჯობა, საქართველო მშვენიერი ქვეყანაა!";
|
|
151
66
|
console.log(hyphenator.hyphenateText(text));
|
|
152
|
-
```
|
|
153
67
|
|
|
154
|
-
### HTML/CSS Integration
|
|
155
|
-
```html
|
|
156
|
-
<!DOCTYPE html>
|
|
157
|
-
<html lang="ka">
|
|
158
|
-
<head>
|
|
159
|
-
<style>
|
|
160
|
-
.hyphenated {
|
|
161
|
-
hyphens: manual;
|
|
162
|
-
-webkit-hyphens: manual;
|
|
163
|
-
text-align: justify;
|
|
164
|
-
}
|
|
165
|
-
</style>
|
|
166
|
-
</head>
|
|
167
|
-
<body>
|
|
168
|
-
<p class="hyphenated" id="text"></p>
|
|
169
|
-
|
|
170
|
-
<script src="https://cdn.jsdelivr.net/npm/georgian-hyphenation"></script>
|
|
171
|
-
<script>
|
|
172
|
-
const hyphenator = new GeorgianHyphenator('\u00AD');
|
|
173
|
-
const text = "საქართველო არის ძალიან ლამაზი ქვეყანა";
|
|
174
|
-
document.getElementById('text').textContent =
|
|
175
|
-
hyphenator.hyphenateText(text);
|
|
176
|
-
</script>
|
|
177
|
-
</body>
|
|
178
|
-
</html>
|
|
179
68
|
```
|
|
180
69
|
|
|
181
70
|
---
|
|
182
71
|
|
|
183
|
-
##
|
|
184
|
-
|
|
185
|
-
### TeX Patterns
|
|
186
|
-
```python
|
|
187
|
-
from georgian_hyphenation import to_tex_pattern
|
|
188
|
-
|
|
189
|
-
words = ["საქართველო", "მთავრობა", "დედაქალაქი"]
|
|
190
|
-
for word in words:
|
|
191
|
-
print(to_tex_pattern(word))
|
|
192
|
-
|
|
193
|
-
# Output:
|
|
194
|
-
# .სა1ქარ1თვე1ლო.
|
|
195
|
-
# .მთავ1რო1ბა.
|
|
196
|
-
# .დე1და1ქა1ლა1ქი.
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Use in LaTeX:
|
|
200
|
-
```latex
|
|
201
|
-
\documentclass{article}
|
|
202
|
-
\usepackage{polyglossia}
|
|
203
|
-
\setmainlanguage{georgian}
|
|
204
|
-
|
|
205
|
-
% Load patterns
|
|
206
|
-
\input{georgian-patterns.tex}
|
|
207
|
-
|
|
208
|
-
\begin{document}
|
|
209
|
-
საქართველო არის ძალიან ლამაზი ქვეყანა
|
|
210
|
-
\end{document}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Hunspell Dictionary
|
|
214
|
-
```python
|
|
215
|
-
from georgian_hyphenation import to_hunspell_format
|
|
72
|
+
## 🧠 Algorithm Logic
|
|
216
73
|
|
|
217
|
-
|
|
218
|
-
for word in words:
|
|
219
|
-
print(to_hunspell_format(word))
|
|
74
|
+
The v2.2 algorithm continues to use **phonological distance analysis** combined with academic rules:
|
|
220
75
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
76
|
+
1. **V-V (Hiatus)**: Split between vowels → `გა-ა-ნა`
|
|
77
|
+
2. **V-C-V**: Split before consonant → `მა-მა`
|
|
78
|
+
3. **Harmonic Clusters**: Special Georgian clusters (ბრ, წვ, მს) stay together.
|
|
79
|
+
4. **Anti-Orphan**: Minimum 2 characters on each side.
|
|
225
80
|
|
|
226
81
|
---
|
|
227
82
|
|
|
228
|
-
##
|
|
229
|
-
|
|
230
|
-
### Firefox 🦊
|
|
231
|
-
[](https://addons.mozilla.org/firefox/addon/georgian-hyphenation/)
|
|
232
|
-
|
|
233
|
-
**[Install from Firefox Add-ons](https://addons.mozilla.org/firefox/addon/georgian-hyphenation/)**
|
|
83
|
+
## 🎨 API Reference
|
|
234
84
|
|
|
235
|
-
###
|
|
236
|
-
**Chrome Web Store** *(coming soon)*
|
|
85
|
+
### `new GeorgianHyphenator(hyphenChar)`
|
|
237
86
|
|
|
238
|
-
|
|
87
|
+
* **hyphenChar** (string): Character for hyphenation. Default: `\u00AD` (soft-hyphen).
|
|
239
88
|
|
|
240
|
-
|
|
241
|
-
1. Download [latest release](https://github.com/guramzhgamadze/georgian-hyphenation/releases)
|
|
242
|
-
2. Extract `browser-extension-chrome.zip`
|
|
243
|
-
3. Chrome → `chrome://extensions/`
|
|
244
|
-
4. Enable "Developer mode"
|
|
245
|
-
5. Click "Load unpacked"
|
|
246
|
-
6. Select `browser-extension-chrome` folder
|
|
89
|
+
### `.hyphenate(word)`
|
|
247
90
|
|
|
248
|
-
|
|
249
|
-
1. Download [latest release](https://github.com/guramzhgamadze/georgian-hyphenation/releases)
|
|
250
|
-
2. Firefox → `about:debugging#/runtime/this-firefox`
|
|
251
|
-
3. Click "Load Temporary Add-on"
|
|
252
|
-
4. Select `manifest.json` from `browser-extension-firefox` folder
|
|
91
|
+
Hyphenates a single word. Strips existing hyphens first.
|
|
253
92
|
|
|
254
|
-
###
|
|
255
|
-
- ✅ Automatic hyphenation on all Georgian websites
|
|
256
|
-
- ✅ Works on Facebook, Twitter, Wikipedia, News sites
|
|
257
|
-
- ✅ Toggle on/off per site
|
|
258
|
-
- ✅ Real-time statistics
|
|
259
|
-
- ✅ Zero performance impact
|
|
260
|
-
- ✅ Supports dynamic content (React, Vue, Angular)
|
|
261
|
-
- ✅ Respects editable fields (no interference with typing)
|
|
262
|
-
|
|
263
|
-
---
|
|
93
|
+
### `.hyphenateText(text)`
|
|
264
94
|
|
|
265
|
-
|
|
95
|
+
Processes a full string, preserving punctuation and non-Georgian characters.
|
|
266
96
|
|
|
267
|
-
|
|
97
|
+
### `.loadDefaultLibrary()`
|
|
268
98
|
|
|
269
|
-
|
|
270
|
-
- See before/after comparison with hard and soft hyphens
|
|
271
|
-
- Test with your own Georgian text
|
|
272
|
-
- Adjust browser width to see automatic line breaking
|
|
273
|
-
- View syllable breakdown
|
|
274
|
-
- Compare different output formats
|
|
99
|
+
(Async) Fetches or imports the `exceptions.json` data.
|
|
275
100
|
|
|
276
101
|
---
|
|
277
102
|
|
|
278
|
-
##
|
|
103
|
+
## 🧪 Testing
|
|
279
104
|
|
|
280
|
-
|
|
281
|
-
| --- | --- | --- | --- |
|
|
282
|
-
| საქართველო | სა, ქარ, თვე, ლო | სა-ქარ-თვე-ლო | .სა1ქარ1თვე1ლო |
|
|
283
|
-
| მთავრობა | მთავ, რო, ბა | მთავ-რო-ბა | .მთავ1რო1ბა |
|
|
284
|
-
| დედაქალაქი | დე, და, ქა, ლა, ქი | დე-და-ქა-ლა-ქი | .დე1და1ქა1ლა1ქი |
|
|
285
|
-
| ტელევიზორი | ტე, ლე, ვი, ზო, რი | ტე-ლე-ვი-ზო-რი | .ტე1ლე1ვი1ზო1რი |
|
|
286
|
-
| კომპიუტერი | კომ, პი, უ, ტე, რი | კომ-პი-უ-ტე-რი | .კომ1პი1უ1ტე1რი |
|
|
287
|
-
| უნივერსიტეტი | უ, ნი, ვერ, სი, ტე, ტი | უ-ნი-ვერ-სი-ტე-ტი | .უ1ნი1ვერ1სი1ტე1ტი |
|
|
288
|
-
| იარაღი | ი, ა, რა, ღი | ი-ა-რა-ღი | .ი1ა1რა1ღი |
|
|
289
|
-
| ბარბი | ბარ, ბი | ბარ-ბი | .ბარ1ბი |
|
|
105
|
+
We use a comprehensive test suite to ensure 98%+ accuracy.
|
|
290
106
|
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
## 🧪 Testing / ტესტირება
|
|
294
107
|
```bash
|
|
295
|
-
# Python tests
|
|
296
|
-
cd georgian-hyphenation
|
|
297
|
-
python -m pytest tests/
|
|
298
|
-
|
|
299
|
-
# JavaScript tests
|
|
300
108
|
npm test
|
|
301
109
|
|
|
302
|
-
# Run test script
|
|
303
|
-
python test_v2.py
|
|
304
110
|
```
|
|
305
111
|
|
|
306
|
-
**Test Coverage:**
|
|
307
|
-
- ✅ 10,000+ Georgian words validated
|
|
308
|
-
- ✅ Edge cases (V-V, consonant clusters, short words)
|
|
309
|
-
- ✅ Unicode handling
|
|
310
|
-
- ✅ Punctuation preservation
|
|
311
|
-
- ✅ Performance benchmarks
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## 🤝 Contributing / წვლილის შეტანა
|
|
316
|
-
|
|
317
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
318
|
-
|
|
319
|
-
მოხარული ვიქნებით თქვენი წვლილით! გთხოვთ გამოგზავნოთ Pull Request.
|
|
320
|
-
|
|
321
|
-
1. Fork the repository
|
|
322
|
-
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
323
|
-
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
324
|
-
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
325
|
-
5. Open a Pull Request
|
|
326
|
-
|
|
327
112
|
---
|
|
328
113
|
|
|
329
114
|
## 📝 Changelog
|
|
330
115
|
|
|
331
|
-
### Version 2.
|
|
332
|
-
|
|
333
|
-
**Major Rewrite: Academic Logic**
|
|
334
|
-
|
|
335
|
-
- ✅ **Complete algorithm rewrite** - Phonological distance analysis
|
|
336
|
-
- ✅ **Anti-Orphan protection** - Minimum 2 characters on each side
|
|
337
|
-
- ✅ **'R' Rule implementation** - Special handling for 'რ' consonant clusters
|
|
338
|
-
- ✅ **Hiatus detection** - Proper V-V split handling
|
|
339
|
-
- ✅ **Improved accuracy** - 95% → 98%+ on test corpus
|
|
340
|
-
- ✅ **Cleaner codebase** - 60 lines vs 100+ lines (v1.0)
|
|
341
|
-
- ✅ **Better edge cases** - Handles unusual Georgian words
|
|
342
|
-
- ✅ **Modern packaging** - `pyproject.toml` support
|
|
343
|
-
|
|
344
|
-
**Breaking Changes:**
|
|
345
|
-
- Method renamed: `getSyllables()` → `get_syllables()` (Python only)
|
|
346
|
-
- Minimum word length: 4 characters (was 3)
|
|
116
|
+
### Version 2.2.1 (Current)
|
|
347
117
|
|
|
348
|
-
|
|
349
|
-
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
### Version 1.0.0 (2025-01-XX)
|
|
354
|
-
- Initial release
|
|
355
|
-
- 12-rule regex-based system
|
|
356
|
-
- PyPI and NPM packages
|
|
357
|
-
- Browser extensions (Chrome, Firefox)
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## 🗺️ Roadmap / სამომავლო გეგმები
|
|
362
|
-
|
|
363
|
-
### Short-term (2025 Q1-Q2)
|
|
364
|
-
- ✅ v2.0 Academic Logic - **DONE**
|
|
365
|
-
- ✅ PyPI v2.0.0 release - **DONE**
|
|
366
|
-
- 🔄 Chrome Web Store submission
|
|
367
|
-
- 📝 TeX/LaTeX integration guide
|
|
368
|
-
- 📱 Mobile app (React Native)
|
|
369
|
-
|
|
370
|
-
### Mid-term (2025 Q3-Q4)
|
|
371
|
-
- 📄 Submit to TeX Live hyphenation database
|
|
372
|
-
- 📚 Academic paper publication
|
|
373
|
-
- 🔌 WordPress plugin with Elementor support
|
|
374
|
-
- 🎨 Adobe InDesign plugin
|
|
375
|
-
- 📊 Microsoft Word add-in
|
|
376
|
-
|
|
377
|
-
### Long-term (2026+)
|
|
378
|
-
- 🌍 Unicode CLDR proposal
|
|
379
|
-
- 🏛️ Official endorsement (Georgian Language Institute)
|
|
380
|
-
- 🤖 Integration into major OS (Windows, macOS, iOS, Android)
|
|
381
|
-
- 🌐 Browser native support proposal
|
|
382
|
-
|
|
383
|
-
---
|
|
384
|
-
|
|
385
|
-
## 📄 License / ლიცენზია
|
|
386
|
-
|
|
387
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
## 📧 Contact / კონტაქტი
|
|
392
|
-
|
|
393
|
-
**Guram Zhgamadze**
|
|
394
|
-
|
|
395
|
-
- GitHub: [@guramzhgamadze](https://github.com/guramzhgamadze)
|
|
396
|
-
- Email: guramzhgamadze@gmail.com
|
|
397
|
-
- Issues: [Report bugs or request features](https://github.com/guramzhgamadze/georgian-hyphenation/issues)
|
|
398
|
-
|
|
399
|
-
---
|
|
118
|
+
* Added `_stripHyphens` for input sanitization.
|
|
119
|
+
* Converted `harmonicClusters` to `Set` for high-performance processing.
|
|
120
|
+
* Switched to **ES Modules (ESM)** as default.
|
|
121
|
+
* Added `loadDefaultLibrary` for browser/node dictionary fetching.
|
|
400
122
|
|
|
401
|
-
|
|
123
|
+
### Version 2.0.1
|
|
402
124
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
- Thanks to the Georgian linguistic community
|
|
406
|
-
- Special thanks to early testers and contributors
|
|
125
|
+
* Academic logic rewrite.
|
|
126
|
+
* Phonological distance analysis.
|
|
407
127
|
|
|
408
128
|
---
|
|
409
129
|
|
|
410
|
-
##
|
|
130
|
+
## 📄 License
|
|
411
131
|
|
|
412
|
-
|
|
413
|
-
- TeX Hyphenation Algorithm (Liang, Franklin Mark. 1983)
|
|
414
|
-
- Hunspell Hyphenation Documentation
|
|
415
|
-
- Unicode Standard for Georgian Script (U+10A0–U+10FF)
|
|
416
|
-
- CLDR Language Data
|
|
132
|
+
MIT License - see [LICENSE.txt](https://www.google.com/search?q=LICENSE.txt) for details.
|
|
417
133
|
|
|
418
134
|
---
|
|
419
135
|
|
|
420
|
-
|
|
136
|
+
## 📧 Contact
|
|
421
137
|
|
|
422
|
-
|
|
138
|
+
**Guram Zhgamadze** - guramzhgamadze@gmail.com
|
|
423
139
|
|
|
424
|
-
|
|
140
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
"გვარსახელი": "გვარ-სა-ხე-ლი",
|
|
54
|
+
"თავმჯდომარე": "თავ-მჯდო-მა-რე",
|
|
55
|
+
"ხელფასი": "ხელ-ფა-სი",
|
|
56
|
+
"ხელმძღვანელი": "ხელ-მძღვა-ნე-ლი",
|
|
57
|
+
"უზრუნველყოფა": "უზ-რუნ-ველ-ყო-ფა",
|
|
58
|
+
"კეთილდღეობა": "კე-თილ-დღე-ო-ბა",
|
|
59
|
+
"გულკეთილი": "გულ-კე-თი-ლი",
|
|
60
|
+
"თავდადებული": "თავ-და-დე-ბუ-ლი",
|
|
61
|
+
"ცისარტყელა": "ცის-არ-ტყე-ლა",
|
|
62
|
+
"წყალდიდობა": "წყალ-დი-დო-ბა",
|
|
63
|
+
"მიწისძვრა": "მი-წის-ძვრა",
|
|
64
|
+
"გულმავიწყი": "გულ-მა-ვი-წყი",
|
|
65
|
+
"სახელმწიფო": "სა-ხელ-მწი-ფო",
|
|
66
|
+
"საზოგადოება": "სა-ზო-გა-დო-ე-ბა",
|
|
67
|
+
"მსოფლიო": "მსოფ-ლი-ო",
|
|
68
|
+
"საქართველო": "სა-ქარ-თვე-ლო",
|
|
69
|
+
"თბილისი": "თბი-ლი-სი",
|
|
70
|
+
"პასუხისმგებლობა": "პა-სუ-ხის-მგებ-ლო-ბა",
|
|
71
|
+
"დამოუკიდებლობა": "და-მო-უ-კი-დებ-ლო-ბა",
|
|
72
|
+
"თავისუფლება": "თა-ვი-სუფ-ლე-ბა",
|
|
73
|
+
"ღირსშესანიშნაობა": "ღირს-შე-სა-ნიშ-ნა-ო-ბა",
|
|
74
|
+
"წარმომადგენელი": "წარ-მო-მად-გე-ნე-ლი",
|
|
75
|
+
"გამომცემლობა": "გა-მომ-ცემ-ლო-ბა",
|
|
76
|
+
"შემოქმედება": "შე-მოქ-მე-დე-ბა",
|
|
77
|
+
"მასწავლებელი": "მას-წავ-ლე-ბე-ლი",
|
|
78
|
+
"მოსწავლე": "მოს-წავ-ლე",
|
|
79
|
+
"უნივერსიტეტი": "უ-ნი-ვერ-სი-ტე-ტი",
|
|
80
|
+
"ფაკულტეტი": "ფა-კულ-ტე-ტი",
|
|
81
|
+
"აუდიტორია": "ა-უ-დი-ტო-რი-ა",
|
|
82
|
+
"ლაბორატორია": "ლა-ბო-რა-ტო-რი-ა",
|
|
83
|
+
"ექსპედიცია": "ექს-პე-დი-ცი-ა",
|
|
84
|
+
"კონსტიტუცია": "კონ-სტი-ტუ-ცი-ა",
|
|
85
|
+
"რევოლუცია": "რე-ვო-ლუ-ცი-ა",
|
|
86
|
+
"დემოკრატია": "დე-მო-კრა-ტი-ა",
|
|
87
|
+
"რესპუბლიკა": "რეს-პუბ-ლი-კა",
|
|
88
|
+
"პრეზიდენტი": "პრე-ზი-დენ-ტი",
|
|
89
|
+
"პრემიერი": "პრე-მი-ე-რი",
|
|
90
|
+
"მინისტრი": "მი-ნის-ტრი",
|
|
91
|
+
"პარლამენტი": "პარ-ლა-მენ-ტი",
|
|
92
|
+
"დეპუტატი": "დე-პუ-ტა-ტი",
|
|
93
|
+
"არჩევნები": "არ-ჩევ-ნე-ბი",
|
|
94
|
+
"პოლიტიკა": "პო-ლი-ტი-კა",
|
|
95
|
+
"ეკონომიკა": "ე-კო-ნო-მი-კა",
|
|
96
|
+
"ბიზნესი": "ბიზ-ნე-სი",
|
|
97
|
+
"ფინანსები": "ფი-ნან-სე-ბი",
|
|
98
|
+
"ინვესტიცია": "ინ-ვეს-ტი-ცი-ა",
|
|
99
|
+
"კრედიტი": "კრე-დი-ტი",
|
|
100
|
+
"ვალუტა": "ვა-ლუ-ტა",
|
|
101
|
+
"პროცენტი": "პრო-ცენ-ტი",
|
|
102
|
+
"სტატისტიკა": "სტა-ტის-ტი-კა",
|
|
103
|
+
"ანალიტიკა": "ა-ნა-ლი-ტი-კა",
|
|
104
|
+
"სტრატეგია": "სტრა-ტე-გი-ა",
|
|
105
|
+
"ტექნოლოგია": "ტექ-ნო-ლო-გი-ა",
|
|
106
|
+
"ინოვაცია": "ი-ნო-ვა-ცი-ა",
|
|
107
|
+
"ციფრული": "ციფ-რუ-ლი",
|
|
108
|
+
"ვირტუალური": "ვირ-ტუ-ა-ლუ-რი",
|
|
109
|
+
"ელექტრონული": "ე-ლექ-ტრო-ნუ-ლი",
|
|
110
|
+
"ავტომატური": "ავ-ტო-მა-ტუ-რი",
|
|
111
|
+
"მექანიკური": "მე-ქა-ნი-კუ-რი",
|
|
112
|
+
"ფიზიკური": "ფი-ზი-კუ-რი",
|
|
113
|
+
"ქიმიური": "ქი-მი-უ-რი",
|
|
114
|
+
"ბიოლოგიური": "ბი-ო-ლო-გი-უ-რი",
|
|
115
|
+
"გეოგრაფიული": "გე-ოგ-რა-ფი-უ-ლი",
|
|
116
|
+
"ისტორიული": "ის-ტო-რი-უ-ლი",
|
|
117
|
+
"კულტურული": "კულ-ტუ-რუ-ლი",
|
|
118
|
+
"სოციალური": "სო-ცი-ა-ლუ-რი",
|
|
119
|
+
"ფსიქოლოგიური": "ფსი-ქო-ლო-გი-უ-რი",
|
|
120
|
+
"ფილოსოფიური": "ფი-ლო-სო-ფი-უ-რი",
|
|
121
|
+
"რელიგიური": "რე-ლი-გი-უ-რი",
|
|
122
|
+
"ტრადიციული": "ტრა-დი-ცი-უ-ლი",
|
|
123
|
+
"თანამედროვე": "თა-ნა-მედ-რო-ვე",
|
|
124
|
+
"საერთაშორისო": "სა-ერ-თა-შო-რი-სო",
|
|
125
|
+
"ნაციონალური": "ნა-ცი-ო-ნა-ლუ-რი",
|
|
126
|
+
"რეგიონალური": "რე-გი-ო-ნა-ლუ-რი",
|
|
127
|
+
"მუნიციპალური": "მუ-ნი-ცი-პა-ლუ-რი",
|
|
128
|
+
"ადმინისტრაციული": "ად-მი-ნის-ტრა-ცი-უ-ლი",
|
|
129
|
+
"იურიდიული": "ი-უ-რი-დი-უ-ლი",
|
|
130
|
+
"სამართლებრივი": "სა-მარ-თლებ-რი-ვი",
|
|
131
|
+
"კრიმინალური": "კრი-მი-ნა-ლუ-რი",
|
|
132
|
+
"სამედიცინო": "სა-მე-დი-ცი-ნო",
|
|
133
|
+
"ფარმაცევტული": "ფარ-მა-ცევ-ტუ-ლი",
|
|
134
|
+
"ქირურგიული": "ქი-რურ-გი-უ-ლი",
|
|
135
|
+
"დიაგნოსტიკა": "დი-აგ-ნოს-ტი-კა",
|
|
136
|
+
"პროფილაქტიკა": "პრო-ფი-ლაქ-ტი-კა",
|
|
137
|
+
"რეაბილიტაცია": "რე-ა-ბი-ლი-ტა-ცი-ა",
|
|
138
|
+
"კომუნიკაცია": "კო-მუ-ნი-კა-ცი-ა",
|
|
139
|
+
"ტრანსპორტი": "ტრანს-პორ-ტი",
|
|
140
|
+
"ინფრასტრუქტურა": "ინ-ფრას-ტრუქ-ტუ-რა",
|
|
141
|
+
"არქიტექტურა": "არ-ქი-ტექ-ტუ-რა",
|
|
142
|
+
"მშენებლობა": "მშე-ნებ-ლო-ბა",
|
|
143
|
+
"რეკონსტრუქცია": "რე-კონ-სტრუქ-ცი-ა"
|
|
144
|
+
}
|