glost 0.1.0
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 +21 -0
- package/README.md +62 -0
- package/dist/example.d.ts +10 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +82 -0
- package/dist/example.js.map +1 -0
- package/dist/guards.d.ts +103 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +264 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/mock-data.d.ts +35 -0
- package/dist/mock-data.d.ts.map +1 -0
- package/dist/mock-data.js +494 -0
- package/dist/mock-data.js.map +1 -0
- package/dist/nodes.d.ts +68 -0
- package/dist/nodes.d.ts.map +1 -0
- package/dist/nodes.js +181 -0
- package/dist/nodes.js.map +1 -0
- package/dist/types.d.ts +379 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +203 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +497 -0
- package/dist/utils.js.map +1 -0
- package/dist/validators.d.ts +1876 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +302 -0
- package/dist/validators.js.map +1 -0
- package/package.json +67 -0
- package/src/example.ts +186 -0
- package/src/guards.ts +341 -0
- package/src/index.ts +69 -0
- package/src/mock-data.ts +635 -0
- package/src/nodes.ts +301 -0
- package/src/types.ts +565 -0
- package/src/utils.ts +653 -0
- package/src/validators.ts +336 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Zod Schemas for GLOST Validation
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* Linguistic level schema
|
|
7
|
+
*/
|
|
8
|
+
export const LinguisticLevelSchema = z.enum([
|
|
9
|
+
'character',
|
|
10
|
+
'syllable',
|
|
11
|
+
'word',
|
|
12
|
+
'phrase',
|
|
13
|
+
'sentence',
|
|
14
|
+
'paragraph'
|
|
15
|
+
]);
|
|
16
|
+
/**
|
|
17
|
+
* Pronunciation context schema
|
|
18
|
+
*/
|
|
19
|
+
export const PronunciationContextSchema = z.enum([
|
|
20
|
+
'formal',
|
|
21
|
+
'informal',
|
|
22
|
+
'historical',
|
|
23
|
+
'regional',
|
|
24
|
+
'dialectal'
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* Transcription system schema
|
|
28
|
+
*/
|
|
29
|
+
export const TranscriptionSystemSchema = z.union([
|
|
30
|
+
z.literal('rtgs'),
|
|
31
|
+
z.literal('aua'),
|
|
32
|
+
z.literal('paiboon'),
|
|
33
|
+
z.literal('romaji'),
|
|
34
|
+
z.literal('furigana'),
|
|
35
|
+
z.literal('ipa'),
|
|
36
|
+
z.literal('pinyin'),
|
|
37
|
+
z.literal('hangul'),
|
|
38
|
+
z.string()
|
|
39
|
+
]);
|
|
40
|
+
/**
|
|
41
|
+
* Language code schema
|
|
42
|
+
*/
|
|
43
|
+
export const LanguageCodeSchema = z.union([
|
|
44
|
+
z.literal('th'),
|
|
45
|
+
z.literal('ja'),
|
|
46
|
+
z.literal('zh'),
|
|
47
|
+
z.literal('ko'),
|
|
48
|
+
z.literal('en'),
|
|
49
|
+
z.string()
|
|
50
|
+
]);
|
|
51
|
+
/**
|
|
52
|
+
* Script system schema
|
|
53
|
+
*/
|
|
54
|
+
export const ScriptSystemSchema = z.union([
|
|
55
|
+
z.literal('thai'),
|
|
56
|
+
z.literal('hiragana'),
|
|
57
|
+
z.literal('katakana'),
|
|
58
|
+
z.literal('kanji'),
|
|
59
|
+
z.literal('hanzi'),
|
|
60
|
+
z.literal('hangul'),
|
|
61
|
+
z.literal('latin'),
|
|
62
|
+
z.literal('mixed'),
|
|
63
|
+
z.string()
|
|
64
|
+
]);
|
|
65
|
+
/**
|
|
66
|
+
* Pronunciation variant schema
|
|
67
|
+
*/
|
|
68
|
+
export const PronunciationVariantSchema = z.object({
|
|
69
|
+
text: z.string(),
|
|
70
|
+
context: PronunciationContextSchema,
|
|
71
|
+
notes: z.string().optional()
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Transcription info schema
|
|
75
|
+
*/
|
|
76
|
+
export const TranscriptionInfoSchema = z.object({
|
|
77
|
+
text: z.string(),
|
|
78
|
+
system: TranscriptionSystemSchema,
|
|
79
|
+
variants: z.array(PronunciationVariantSchema).optional(),
|
|
80
|
+
tone: z.number().optional(),
|
|
81
|
+
syllables: z.array(z.string()).optional(),
|
|
82
|
+
phonetic: z.string().optional()
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* Transliteration data schema
|
|
86
|
+
*/
|
|
87
|
+
export const TransliterationDataSchema = z.record(z.string(), TranscriptionInfoSchema);
|
|
88
|
+
/**
|
|
89
|
+
* Linguistic metadata schema
|
|
90
|
+
*/
|
|
91
|
+
export const LinguisticMetadataSchema = z.object({
|
|
92
|
+
/** @deprecated Use extras.translations instead */
|
|
93
|
+
meaning: z.string().optional(),
|
|
94
|
+
partOfSpeech: z.string(),
|
|
95
|
+
usage: z.string().optional(),
|
|
96
|
+
etymology: z.string().optional(),
|
|
97
|
+
examples: z.array(z.string()).optional(),
|
|
98
|
+
frequency: z.enum(['high', 'medium', 'low']).optional(),
|
|
99
|
+
formality: z.enum(['formal', 'neutral', 'informal']).optional(),
|
|
100
|
+
register: z.string().optional()
|
|
101
|
+
});
|
|
102
|
+
/**
|
|
103
|
+
* Base GLOST node schema
|
|
104
|
+
*/
|
|
105
|
+
export const GLOSTNodeBaseSchema = z.object({
|
|
106
|
+
type: z.string(),
|
|
107
|
+
lang: LanguageCodeSchema.optional(),
|
|
108
|
+
script: ScriptSystemSchema.optional(),
|
|
109
|
+
level: LinguisticLevelSchema.optional(),
|
|
110
|
+
position: z.any().optional()
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* GLOST word node schema
|
|
114
|
+
*/
|
|
115
|
+
export const GLOSTWordNodeSchema = GLOSTNodeBaseSchema.extend({
|
|
116
|
+
type: z.literal('GLOSTWordNode'),
|
|
117
|
+
value: z.string(),
|
|
118
|
+
transcription: TransliterationDataSchema,
|
|
119
|
+
metadata: LinguisticMetadataSchema,
|
|
120
|
+
level: LinguisticLevelSchema,
|
|
121
|
+
children: z.array(z.any()).default([])
|
|
122
|
+
});
|
|
123
|
+
/**
|
|
124
|
+
* GLOST sentence node schema
|
|
125
|
+
*/
|
|
126
|
+
export const GLOSTSentenceNodeSchema = GLOSTNodeBaseSchema.extend({
|
|
127
|
+
type: z.literal('GLOSTSentenceNode'),
|
|
128
|
+
originalText: z.string(),
|
|
129
|
+
lang: LanguageCodeSchema,
|
|
130
|
+
script: ScriptSystemSchema,
|
|
131
|
+
transcription: TransliterationDataSchema.optional(),
|
|
132
|
+
children: z.array(z.any()).default([])
|
|
133
|
+
});
|
|
134
|
+
/**
|
|
135
|
+
* GLOST paragraph node schema
|
|
136
|
+
*/
|
|
137
|
+
export const GLOSTParagraphNodeSchema = GLOSTNodeBaseSchema.extend({
|
|
138
|
+
type: z.literal('GLOSTParagraphNode'),
|
|
139
|
+
lang: LanguageCodeSchema,
|
|
140
|
+
script: ScriptSystemSchema,
|
|
141
|
+
children: z.array(z.any()).default([])
|
|
142
|
+
});
|
|
143
|
+
/**
|
|
144
|
+
* GLOST root node schema
|
|
145
|
+
*/
|
|
146
|
+
export const GLOSTRootNodeSchema = GLOSTNodeBaseSchema.extend({
|
|
147
|
+
type: z.literal('GLOSTRootNode'),
|
|
148
|
+
lang: LanguageCodeSchema,
|
|
149
|
+
script: ScriptSystemSchema,
|
|
150
|
+
metadata: z.object({
|
|
151
|
+
title: z.string().optional(),
|
|
152
|
+
author: z.string().optional(),
|
|
153
|
+
date: z.string().optional(),
|
|
154
|
+
description: z.string().optional()
|
|
155
|
+
}).optional(),
|
|
156
|
+
children: z.array(z.any()).default([])
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* Union schema for all GLOST node types
|
|
160
|
+
*/
|
|
161
|
+
export const GLOSTNodeSchema = z.union([
|
|
162
|
+
GLOSTWordNodeSchema,
|
|
163
|
+
GLOSTSentenceNodeSchema,
|
|
164
|
+
GLOSTParagraphNodeSchema,
|
|
165
|
+
GLOSTRootNodeSchema
|
|
166
|
+
]);
|
|
167
|
+
// ============================================================================
|
|
168
|
+
// Validation Functions
|
|
169
|
+
// ============================================================================
|
|
170
|
+
/**
|
|
171
|
+
* Validate an GLOST word node
|
|
172
|
+
*/
|
|
173
|
+
export function validateGLOSTWordNode(data) {
|
|
174
|
+
const result = GLOSTWordNodeSchema.safeParse(data);
|
|
175
|
+
return result.success;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Validate an GLOST sentence node
|
|
179
|
+
*/
|
|
180
|
+
export function validateGLOSTSentenceNode(data) {
|
|
181
|
+
const result = GLOSTSentenceNodeSchema.safeParse(data);
|
|
182
|
+
return result.success;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Validate an GLOST paragraph node
|
|
186
|
+
*/
|
|
187
|
+
export function validateGLOSTParagraphNode(data) {
|
|
188
|
+
const result = GLOSTParagraphNodeSchema.safeParse(data);
|
|
189
|
+
return result.success;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Validate an GLOST root node
|
|
193
|
+
*/
|
|
194
|
+
export function validateGLOSTRootNode(data) {
|
|
195
|
+
const result = GLOSTRootNodeSchema.safeParse(data);
|
|
196
|
+
return result.success;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Validate any GLOST node
|
|
200
|
+
*/
|
|
201
|
+
export function validateGLOSTNode(data) {
|
|
202
|
+
const result = GLOSTNodeSchema.safeParse(data);
|
|
203
|
+
return result.success;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Parse and validate GLOST data with error details
|
|
207
|
+
*/
|
|
208
|
+
export function parseGLOSTNode(data) {
|
|
209
|
+
return GLOSTNodeSchema.safeParse(data);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Parse and validate GLOST word node with error details
|
|
213
|
+
*/
|
|
214
|
+
export function parseGLOSTWordNode(data) {
|
|
215
|
+
return GLOSTWordNodeSchema.safeParse(data);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Parse and validate GLOST sentence node with error details
|
|
219
|
+
*/
|
|
220
|
+
export function parseGLOSTSentenceNode(data) {
|
|
221
|
+
return GLOSTSentenceNodeSchema.safeParse(data);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Parse and validate GLOST paragraph node with error details
|
|
225
|
+
*/
|
|
226
|
+
export function parseGLOSTParagraphNode(data) {
|
|
227
|
+
return GLOSTParagraphNodeSchema.safeParse(data);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Parse and validate GLOST root node with error details
|
|
231
|
+
*/
|
|
232
|
+
export function parseGLOSTRootNode(data) {
|
|
233
|
+
return GLOSTRootNodeSchema.safeParse(data);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Validate an entire GLOST tree/document
|
|
237
|
+
*/
|
|
238
|
+
export function validateGLOSTTree(data) {
|
|
239
|
+
const errors = [];
|
|
240
|
+
// Validate root node
|
|
241
|
+
const rootResult = GLOSTRootNodeSchema.safeParse(data);
|
|
242
|
+
if (!rootResult.success) {
|
|
243
|
+
errors.push(`Root validation failed: ${rootResult.error.message}`);
|
|
244
|
+
return errors;
|
|
245
|
+
}
|
|
246
|
+
const root = rootResult.data;
|
|
247
|
+
// Validate all paragraphs
|
|
248
|
+
for (let i = 0; i < root.children.length; i++) {
|
|
249
|
+
const child = root.children[i];
|
|
250
|
+
if (child.type === 'ParagraphNode') {
|
|
251
|
+
const paragraphResult = GLOSTParagraphNodeSchema.safeParse(child);
|
|
252
|
+
if (!paragraphResult.success) {
|
|
253
|
+
errors.push(`Paragraph ${i} validation failed: ${paragraphResult.error.message}`);
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
// Validate all sentences in paragraph
|
|
257
|
+
for (let j = 0; j < child.children.length; j++) {
|
|
258
|
+
const sentence = child.children[j];
|
|
259
|
+
if (sentence.type === 'SentenceNode') {
|
|
260
|
+
const sentenceResult = GLOSTSentenceNodeSchema.safeParse(sentence);
|
|
261
|
+
if (!sentenceResult.success) {
|
|
262
|
+
errors.push(`Sentence ${i}.${j} validation failed: ${sentenceResult.error.message}`);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
// Validate all words in sentence
|
|
266
|
+
for (let k = 0; k < sentence.children.length; k++) {
|
|
267
|
+
const word = sentence.children[k];
|
|
268
|
+
if (word.type === 'WordNode') {
|
|
269
|
+
const wordResult = GLOSTWordNodeSchema.safeParse(word);
|
|
270
|
+
if (!wordResult.success) {
|
|
271
|
+
errors.push(`Word ${i}.${j}.${k} validation failed: ${wordResult.error.message}`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return errors;
|
|
282
|
+
}
|
|
283
|
+
// ============================================================================
|
|
284
|
+
// Schema Export
|
|
285
|
+
// ============================================================================
|
|
286
|
+
export const schemas = {
|
|
287
|
+
LinguisticLevel: LinguisticLevelSchema,
|
|
288
|
+
PronunciationContext: PronunciationContextSchema,
|
|
289
|
+
TranscriptionSystem: TranscriptionSystemSchema,
|
|
290
|
+
LanguageCode: LanguageCodeSchema,
|
|
291
|
+
ScriptSystem: ScriptSystemSchema,
|
|
292
|
+
PronunciationVariant: PronunciationVariantSchema,
|
|
293
|
+
TranscriptionInfo: TranscriptionInfoSchema,
|
|
294
|
+
TransliterationData: TransliterationDataSchema,
|
|
295
|
+
LinguisticMetadata: LinguisticMetadataSchema,
|
|
296
|
+
GLOSTNode: GLOSTNodeSchema,
|
|
297
|
+
GLOSTWordNode: GLOSTWordNodeSchema,
|
|
298
|
+
GLOSTSentenceNode: GLOSTSentenceNodeSchema,
|
|
299
|
+
GLOSTParagraphNode: GLOSTParagraphNodeSchema,
|
|
300
|
+
GLOSTRootNode: GLOSTRootNodeSchema
|
|
301
|
+
};
|
|
302
|
+
//# sourceMappingURL=validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "glost",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "GLOST - Glossed Syntax Tree for augmenting text with language learning metadata",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"types": "./src/index.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./src/index.ts",
|
|
11
|
+
"default": "./src/index.ts"
|
|
12
|
+
},
|
|
13
|
+
"./nodes": {
|
|
14
|
+
"types": "./src/nodes.ts",
|
|
15
|
+
"default": "./src/nodes.ts"
|
|
16
|
+
},
|
|
17
|
+
"./utils": {
|
|
18
|
+
"types": "./src/utils.ts",
|
|
19
|
+
"default": "./src/utils.ts"
|
|
20
|
+
},
|
|
21
|
+
"./validators": {
|
|
22
|
+
"types": "./src/validators.ts",
|
|
23
|
+
"default": "./src/validators.ts"
|
|
24
|
+
},
|
|
25
|
+
"./guards": {
|
|
26
|
+
"types": "./src/guards.ts",
|
|
27
|
+
"default": "./src/guards.ts"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"unist-util-filter": "^5.0.1",
|
|
32
|
+
"unist-util-find": "^3.0.0",
|
|
33
|
+
"unist-util-flatmap": "^1.0.0",
|
|
34
|
+
"unist-util-is": "^6.0.0",
|
|
35
|
+
"unist-util-map": "^4.0.0",
|
|
36
|
+
"unist-util-modify-children": "^4.0.0",
|
|
37
|
+
"unist-util-remove": "^4.0.0",
|
|
38
|
+
"unist-util-select": "^5.1.0",
|
|
39
|
+
"unist-util-visit": "^5.0.0",
|
|
40
|
+
"zod": "^3.23.8",
|
|
41
|
+
"glost-common": "0.1.0"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/nlcst": "^2.0.3",
|
|
45
|
+
"typescript": "^5.8.3",
|
|
46
|
+
"vitest": "^3.0.5"
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"glost",
|
|
50
|
+
"glossed-syntax-tree",
|
|
51
|
+
"nlcst",
|
|
52
|
+
"multilingual",
|
|
53
|
+
"language-learning",
|
|
54
|
+
"linguistics",
|
|
55
|
+
"thai",
|
|
56
|
+
"japanese",
|
|
57
|
+
"chinese",
|
|
58
|
+
"korean",
|
|
59
|
+
"syntax-tree",
|
|
60
|
+
"unist"
|
|
61
|
+
],
|
|
62
|
+
"scripts": {
|
|
63
|
+
"build": "tsc",
|
|
64
|
+
"typecheck": "tsc --noEmit",
|
|
65
|
+
"test": "vitest"
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/example.ts
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// Example usage of the GLOST package
|
|
2
|
+
import {
|
|
3
|
+
createThaiWord,
|
|
4
|
+
createJapaneseWord,
|
|
5
|
+
createSentenceFromWords,
|
|
6
|
+
createParagraphFromSentences,
|
|
7
|
+
createDocumentFromParagraphs,
|
|
8
|
+
getAllWords,
|
|
9
|
+
getWordTranscription,
|
|
10
|
+
validateGLOSTTree,
|
|
11
|
+
getWordText
|
|
12
|
+
} from './index';
|
|
13
|
+
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Thai Example: "สวัสดีครับ ผมชื่อสมชาย" (Hello, my name is Somchai)
|
|
16
|
+
// ============================================================================
|
|
17
|
+
|
|
18
|
+
const thaiWords = [
|
|
19
|
+
createThaiWord(
|
|
20
|
+
'สวัสดี',
|
|
21
|
+
'sà-wàt-dii',
|
|
22
|
+
'interjection',
|
|
23
|
+
2, // tone
|
|
24
|
+
['sa', 'wat', 'dii']
|
|
25
|
+
),
|
|
26
|
+
createThaiWord(
|
|
27
|
+
'ครับ',
|
|
28
|
+
'khráp',
|
|
29
|
+
'particle',
|
|
30
|
+
2,
|
|
31
|
+
['khrap']
|
|
32
|
+
),
|
|
33
|
+
createThaiWord(
|
|
34
|
+
'ผม',
|
|
35
|
+
'phǒm',
|
|
36
|
+
'pronoun',
|
|
37
|
+
3,
|
|
38
|
+
['phom']
|
|
39
|
+
),
|
|
40
|
+
createThaiWord(
|
|
41
|
+
'ชื่อ',
|
|
42
|
+
'chûue',
|
|
43
|
+
'noun',
|
|
44
|
+
3,
|
|
45
|
+
['chue']
|
|
46
|
+
),
|
|
47
|
+
createThaiWord(
|
|
48
|
+
'สมชาย',
|
|
49
|
+
'sǒm-chaai',
|
|
50
|
+
'proper noun',
|
|
51
|
+
3,
|
|
52
|
+
['som', 'chaai']
|
|
53
|
+
)
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const thaiSentence = createSentenceFromWords(
|
|
57
|
+
thaiWords,
|
|
58
|
+
'th',
|
|
59
|
+
'thai',
|
|
60
|
+
'สวัสดีครับ ผมชื่อสมชาย'
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
// ============================================================================
|
|
64
|
+
// Japanese Example: "私の名前は田中です。" (My name is Tanaka)
|
|
65
|
+
// ============================================================================
|
|
66
|
+
|
|
67
|
+
const japaneseWords = [
|
|
68
|
+
createJapaneseWord(
|
|
69
|
+
'私',
|
|
70
|
+
'watashi',
|
|
71
|
+
'pronoun',
|
|
72
|
+
'わたし'
|
|
73
|
+
),
|
|
74
|
+
createJapaneseWord(
|
|
75
|
+
'の',
|
|
76
|
+
'no',
|
|
77
|
+
'particle'
|
|
78
|
+
),
|
|
79
|
+
createJapaneseWord(
|
|
80
|
+
'名前',
|
|
81
|
+
'namae',
|
|
82
|
+
'noun',
|
|
83
|
+
'なまえ'
|
|
84
|
+
),
|
|
85
|
+
createJapaneseWord(
|
|
86
|
+
'は',
|
|
87
|
+
'wa',
|
|
88
|
+
'particle'
|
|
89
|
+
),
|
|
90
|
+
createJapaneseWord(
|
|
91
|
+
'田中',
|
|
92
|
+
'tanaka',
|
|
93
|
+
'proper noun',
|
|
94
|
+
'たなか'
|
|
95
|
+
),
|
|
96
|
+
createJapaneseWord(
|
|
97
|
+
'です',
|
|
98
|
+
'desu',
|
|
99
|
+
'copula'
|
|
100
|
+
)
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
const japaneseSentence = createSentenceFromWords(
|
|
104
|
+
japaneseWords,
|
|
105
|
+
'ja',
|
|
106
|
+
'mixed',
|
|
107
|
+
'私の名前は田中です。'
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// Create Document Structure
|
|
112
|
+
// ============================================================================
|
|
113
|
+
|
|
114
|
+
const thaiParagraph = createParagraphFromSentences([thaiSentence]);
|
|
115
|
+
const japaneseParagraph = createParagraphFromSentences([japaneseSentence]);
|
|
116
|
+
|
|
117
|
+
const document = createDocumentFromParagraphs(
|
|
118
|
+
[thaiParagraph, japaneseParagraph],
|
|
119
|
+
'mixed',
|
|
120
|
+
'mixed',
|
|
121
|
+
{
|
|
122
|
+
title: 'Multilingual Greeting Examples',
|
|
123
|
+
description: 'Examples of greetings in Thai and Japanese with transcriptions'
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Demonstrate Utilities
|
|
129
|
+
// ============================================================================
|
|
130
|
+
|
|
131
|
+
export function demonstrateUtilities() {
|
|
132
|
+
console.log('=== GLOST Package Demo ===\n');
|
|
133
|
+
|
|
134
|
+
// Get all words from the document
|
|
135
|
+
const allWords = getAllWords(document);
|
|
136
|
+
console.log(`Total words: ${allWords.length}`);
|
|
137
|
+
|
|
138
|
+
// Show Thai words with RTGS transcriptions
|
|
139
|
+
const thaiWordsOnly = allWords.filter(word => word.lang === 'th');
|
|
140
|
+
console.log('\n=== Thai Words ===');
|
|
141
|
+
thaiWordsOnly.forEach(word => {
|
|
142
|
+
const rtgs = getWordTranscription(word, 'rtgs');
|
|
143
|
+
console.log(`${getWordText(word)} → ${rtgs} (${word.metadata.partOfSpeech})`);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Show Japanese words with romaji
|
|
147
|
+
const japaneseWordsOnly = allWords.filter(word => word.lang === 'ja');
|
|
148
|
+
console.log('\n=== Japanese Words ===');
|
|
149
|
+
japaneseWordsOnly.forEach(word => {
|
|
150
|
+
const romaji = getWordTranscription(word, 'romaji');
|
|
151
|
+
console.log(`${getWordText(word)} → ${romaji} (${word.metadata.partOfSpeech})`);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Validate the tree
|
|
155
|
+
const validationErrors = validateGLOSTTree(document);
|
|
156
|
+
if (validationErrors.length === 0) {
|
|
157
|
+
console.log('\n✅ Document is valid!');
|
|
158
|
+
} else {
|
|
159
|
+
console.log('\n❌ Validation errors:');
|
|
160
|
+
validationErrors.forEach((error: string) => console.log(` - ${error}`));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Show document structure
|
|
164
|
+
console.log('\n=== Document Structure ===');
|
|
165
|
+
console.log(`Language: ${document.lang}`);
|
|
166
|
+
console.log(`Script: ${document.script}`);
|
|
167
|
+
console.log(`Paragraphs: ${document.children.length}`);
|
|
168
|
+
console.log(`Sentences: ${document.children.reduce((acc, p) => {
|
|
169
|
+
if (p.type === 'ParagraphNode') {
|
|
170
|
+
return acc + (p.children?.length || 0);
|
|
171
|
+
}
|
|
172
|
+
return acc;
|
|
173
|
+
}, 0)}`);
|
|
174
|
+
console.log(`Words: ${allWords.length}`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Export for use in other files
|
|
178
|
+
export {
|
|
179
|
+
thaiWords,
|
|
180
|
+
japaneseWords,
|
|
181
|
+
thaiSentence,
|
|
182
|
+
japaneseSentence,
|
|
183
|
+
thaiParagraph,
|
|
184
|
+
japaneseParagraph,
|
|
185
|
+
document
|
|
186
|
+
};
|