zerohelper-toon 11.0.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/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # zerohelper-toon
2
+
3
+ TOON (Token-Oriented Object Notation) parser and serializer.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install zerohelper-toon
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { stringify, parse } from 'zerohelper-toon';
15
+
16
+ // Stringify to TOON format
17
+ const data = [
18
+ { id: 1, name: 'Alice' },
19
+ { id: 2, name: 'Bob' }
20
+ ];
21
+ const toon = stringify(data);
22
+ // Output:
23
+ // [2]{id,name}:
24
+ // 1,Alice
25
+ // 2,Bob
26
+
27
+ // Parse TOON format
28
+ const parsed = parse(toon);
29
+ // Output: [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
30
+ ```
31
+
32
+ ## Features
33
+
34
+ - LLM token-efficient serialization
35
+ - Tabular format for uniform arrays
36
+ - Human-readable output
37
+ - Full JSON compatibility mode
38
+ - Unicode support
39
+
40
+ ## API
41
+
42
+ ### stringify(data: any): string
43
+
44
+ Convert JavaScript objects to TOON format.
45
+
46
+ ### parse(text: string): any
47
+
48
+ Parse TOON format back to JavaScript objects.
49
+
50
+ ## License
51
+
52
+ ISC
@@ -0,0 +1,7 @@
1
+ export declare function stringify(obj: any): string;
2
+ export declare function parse(text: string): any;
3
+ export declare const toon_module: {
4
+ stringify: typeof stringify;
5
+ parse: typeof parse;
6
+ };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAyB1C;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAoEvC;AAED,eAAO,MAAM,WAAW;;;CAGvB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toon_module = void 0;
4
+ exports.stringify = stringify;
5
+ exports.parse = parse;
6
+ function stringify(obj) {
7
+ if (Array.isArray(obj)) {
8
+ if (obj.length === 0)
9
+ return '[]';
10
+ const firstItem = obj[0];
11
+ const keys = typeof firstItem === 'object' && firstItem !== null ? Object.keys(firstItem) : [];
12
+ if (keys.length > 0) {
13
+ const header = `[${obj.length}]{${keys.join(',')}}:`;
14
+ const rows = obj.map(item => keys.map(k => {
15
+ const val = item[k];
16
+ if (typeof val === 'string' && val.includes(','))
17
+ return `"${val}"`;
18
+ return val;
19
+ }).join(',')).join('\n ');
20
+ return `${header}\n ${rows}`;
21
+ }
22
+ const items = obj.map(item => stringify(item)).join('\n ');
23
+ return `[${obj.length}]{\n ${items}\n}`;
24
+ }
25
+ if (typeof obj === 'object' && obj !== null) {
26
+ const entries = Object.entries(obj).map(([k, v]) => {
27
+ const val = typeof v === 'string' ? v : stringify(v);
28
+ return `${k}: ${val}`;
29
+ }).join('\n');
30
+ return `{\n ${entries}\n}`;
31
+ }
32
+ return String(obj);
33
+ }
34
+ function parse(text) {
35
+ const trimmed = text.trim();
36
+ const lines = trimmed.split('\n').map(l => l.trim()).filter(l => l);
37
+ const result = {};
38
+ let i = 0;
39
+ while (i < lines.length) {
40
+ const line = lines[i];
41
+ if (line.includes('[') && line.includes(']{')) {
42
+ const arrayMatch = line.match(/^(\w+)\[(\d+)\]\{([^}]+)\}:?$/);
43
+ if (arrayMatch) {
44
+ const [, arrayName, countStr, keysStr] = arrayMatch;
45
+ const keys = keysStr.split(',').map(k => k.trim());
46
+ const count = parseInt(countStr);
47
+ const rows = [];
48
+ i++;
49
+ for (let j = 0; j < count && i < lines.length; j++) {
50
+ const dataLine = lines[i];
51
+ if (dataLine && !dataLine.includes(':') && !dataLine.startsWith('{')) {
52
+ const values = dataLine.split(',').map((v, idx) => {
53
+ const val = v.trim();
54
+ if (val.startsWith('"') && val.endsWith('"')) {
55
+ return val.slice(1, -1);
56
+ }
57
+ if (val === 'null')
58
+ return null;
59
+ if (val === 'true')
60
+ return true;
61
+ if (val === 'false')
62
+ return false;
63
+ const num = parseFloat(val);
64
+ return isNaN(num) ? val : num;
65
+ });
66
+ const obj = {};
67
+ keys.forEach((k, idx) => {
68
+ obj[k] = values[idx];
69
+ });
70
+ rows.push(obj);
71
+ }
72
+ i++;
73
+ }
74
+ result[arrayName] = rows;
75
+ continue;
76
+ }
77
+ }
78
+ const keyValueMatch = line.match(/^(\w+):\s*(.*)$/);
79
+ if (keyValueMatch) {
80
+ const [, key, value] = keyValueMatch;
81
+ if (value.startsWith('"') && value.endsWith('"')) {
82
+ result[key] = value.slice(1, -1);
83
+ }
84
+ else if (value === 'null') {
85
+ result[key] = null;
86
+ }
87
+ else if (value === 'true') {
88
+ result[key] = true;
89
+ }
90
+ else if (value === 'false') {
91
+ result[key] = false;
92
+ }
93
+ else if (value === '') {
94
+ result[key] = {};
95
+ }
96
+ else {
97
+ const num = parseFloat(value);
98
+ result[key] = isNaN(num) ? value : num;
99
+ }
100
+ }
101
+ i++;
102
+ }
103
+ return result;
104
+ }
105
+ exports.toon_module = {
106
+ stringify,
107
+ parse,
108
+ };
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "zerohelper-toon",
3
+ "version": "11.0.0",
4
+ "description": "TOON parser for ZeroHelper",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": { "build": "tsc", "clean": "rm -rf dist" },
8
+ "keywords": ["zerohelper", "toon", "parser"],
9
+ "author": "Onure9e",
10
+ "license": "ISC",
11
+ "dependencies": {},
12
+ "devDependencies": { "@types/node": "^22.10.2", "typescript": "^5.7.2" },
13
+ "files": ["dist", "README.md"],
14
+ "publishConfig": { "access": "public" }
15
+ }