eyeling 1.8.0 → 1.8.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.
- package/README.md +6 -6
- package/eyeling.js +20 -10
- package/package.json +1 -1
- package/test/api.test.js +27 -7
- package/test/examples.test.js +3 -1
- package/test/package.test.js +6 -2
package/README.md
CHANGED
|
@@ -114,15 +114,15 @@ npm run test:packlist
|
|
|
114
114
|
Usage: eyeling [options] <file.n3>
|
|
115
115
|
|
|
116
116
|
Options:
|
|
117
|
+
-a, --ast Print parsed AST as JSON and exit.
|
|
118
|
+
-e, --enforce-https Rewrite http:// IRIs to https:// for log dereferencing builtins.
|
|
117
119
|
-h, --help Show this help and exit.
|
|
118
|
-
-v, --version Print version and exit.
|
|
119
|
-
-p, --proof-comments Enable proof explanations.
|
|
120
120
|
-n, --no-proof-comments Disable proof explanations (default).
|
|
121
|
+
-p, --proof-comments Enable proof explanations.
|
|
122
|
+
-r, --strings Print log:outputString strings (ordered by key) instead of N3 output.
|
|
121
123
|
-s, --super-restricted Disable all builtins except => and <=.
|
|
122
|
-
-
|
|
123
|
-
--
|
|
124
|
-
--enforce-https Rewrite http:// IRIs to https:// for log dereferencing builtins.
|
|
125
|
-
--stream Stream derived triples as soon as they are derived.
|
|
124
|
+
-t, --stream Stream derived triples as soon as they are derived.
|
|
125
|
+
-v, --version Print version and exit.
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
By default, `eyeling`:
|
package/eyeling.js
CHANGED
|
@@ -7427,7 +7427,17 @@ try {
|
|
|
7427
7427
|
|
|
7428
7428
|
function main() {
|
|
7429
7429
|
// Drop "node" and script name; keep only user-provided args
|
|
7430
|
-
|
|
7430
|
+
// Expand combined short options: -pt == -p -t
|
|
7431
|
+
const argvRaw = process.argv.slice(2);
|
|
7432
|
+
const argv = [];
|
|
7433
|
+
for (const a of argvRaw) {
|
|
7434
|
+
if (a === '-' || !a.startsWith('-') || a.startsWith('--') || a.length === 2) {
|
|
7435
|
+
argv.push(a);
|
|
7436
|
+
continue;
|
|
7437
|
+
}
|
|
7438
|
+
// Combined short flags (no flag in eyeling takes a value)
|
|
7439
|
+
for (const ch of a.slice(1)) argv.push('-' + ch);
|
|
7440
|
+
}
|
|
7431
7441
|
const prog = String(process.argv[1] || 'eyeling')
|
|
7432
7442
|
.split(/[\/]/)
|
|
7433
7443
|
.pop();
|
|
@@ -7436,15 +7446,15 @@ function main() {
|
|
|
7436
7446
|
const msg =
|
|
7437
7447
|
`Usage: ${prog} [options] <file.n3>\n\n` +
|
|
7438
7448
|
`Options:\n` +
|
|
7449
|
+
` -a, --ast Print parsed AST as JSON and exit.\n` +
|
|
7450
|
+
` -e, --enforce-https Rewrite http:// IRIs to https:// for log dereferencing builtins.\n` +
|
|
7439
7451
|
` -h, --help Show this help and exit.\n` +
|
|
7440
|
-
` -v, --version Print version and exit.\n` +
|
|
7441
|
-
` -p, --proof-comments Enable proof explanations.\n` +
|
|
7442
7452
|
` -n, --no-proof-comments Disable proof explanations (default).\n` +
|
|
7453
|
+
` -p, --proof-comments Enable proof explanations.\n` +
|
|
7454
|
+
` -r, --strings Print log:outputString strings (ordered by key) instead of N3 output.\n` +
|
|
7443
7455
|
` -s, --super-restricted Disable all builtins except => and <=.\n` +
|
|
7444
|
-
` -
|
|
7445
|
-
` --
|
|
7446
|
-
` --enforce-https Rewrite http:// IRIs to https:// for log dereferencing builtins.\n` +
|
|
7447
|
-
` --stream Stream derived triples as soon as they are derived.\n`;
|
|
7456
|
+
` -t, --stream Stream derived triples as soon as they are derived.\n` +
|
|
7457
|
+
` -v, --version Print version and exit.\n`;
|
|
7448
7458
|
(toStderr ? console.error : console.log)(msg);
|
|
7449
7459
|
}
|
|
7450
7460
|
|
|
@@ -7465,11 +7475,11 @@ function main() {
|
|
|
7465
7475
|
|
|
7466
7476
|
const showAst = argv.includes('--ast') || argv.includes('-a');
|
|
7467
7477
|
|
|
7468
|
-
const outputStringsMode = argv.includes('--strings');
|
|
7469
|
-
const streamMode = argv.includes('--stream');
|
|
7478
|
+
const outputStringsMode = argv.includes('--strings') || argv.includes('-r');
|
|
7479
|
+
const streamMode = argv.includes('--stream') || argv.includes('-t');
|
|
7470
7480
|
|
|
7471
7481
|
// --enforce-https: rewrite http:// -> https:// for log dereferencing builtins
|
|
7472
|
-
if (argv.includes('--enforce-https')) {
|
|
7482
|
+
if (argv.includes('--enforce-https') || argv.includes('-e')) {
|
|
7473
7483
|
enforceHttpsEnabled = true;
|
|
7474
7484
|
}
|
|
7475
7485
|
|
package/package.json
CHANGED
package/test/api.test.js
CHANGED
|
@@ -7,7 +7,9 @@ const { reason } = require('..');
|
|
|
7
7
|
const { reasonStream } = require('../eyeling.js');
|
|
8
8
|
|
|
9
9
|
const TTY = process.stdout.isTTY;
|
|
10
|
-
const C = TTY
|
|
10
|
+
const C = TTY
|
|
11
|
+
? { g: '\x1b[32m', r: '\x1b[31m', y: '\x1b[33m', dim: '\x1b[2m', n: '\x1b[0m' }
|
|
12
|
+
: { g: '', r: '', y: '', dim: '', n: '' };
|
|
11
13
|
|
|
12
14
|
function ok(msg) {
|
|
13
15
|
console.log(`${C.g}OK${C.n} ${msg}`);
|
|
@@ -353,7 +355,10 @@ ${U('a')} ${U('p')} ${U('b')}.
|
|
|
353
355
|
name: '17 heavier reachability: branching graph reach closure',
|
|
354
356
|
opt: { proofComments: false, maxBuffer: 200 * 1024 * 1024 },
|
|
355
357
|
input: reachabilityGraphN3(12),
|
|
356
|
-
expect: [
|
|
358
|
+
expect: [
|
|
359
|
+
new RegExp(`${EX}g0>\\s+<${EX}reach>\\s+<${EX}g12>\\s*\\.`),
|
|
360
|
+
new RegExp(`${EX}g2>\\s+<${EX}reach>\\s+<${EX}g10>\\s*\\.`),
|
|
361
|
+
],
|
|
357
362
|
},
|
|
358
363
|
{
|
|
359
364
|
name: '18 heavier taxonomy: diamond subclass inference',
|
|
@@ -381,7 +386,10 @@ ${U('a')} ${U('p')} ${U('b')}.
|
|
|
381
386
|
name: '21 heavier equivalence: sameAs propagation (with symmetric sameAs)',
|
|
382
387
|
opt: { proofComments: false },
|
|
383
388
|
input: sameAsN3(),
|
|
384
|
-
expect: [
|
|
389
|
+
expect: [
|
|
390
|
+
new RegExp(`${EX}b>\\s+<${EX}p>\\s+<${EX}o>\\s*\\.`),
|
|
391
|
+
new RegExp(`${EX}b>\\s+<${EX}sameAs>\\s+<${EX}a>\\s*\\.`),
|
|
392
|
+
],
|
|
385
393
|
},
|
|
386
394
|
{
|
|
387
395
|
name: '22 heavier closure: transitive property via generic rule',
|
|
@@ -393,7 +401,10 @@ ${U('c')} ${U('sub')} ${U('d')}.
|
|
|
393
401
|
${U('d')} ${U('sub')} ${U('e')}.
|
|
394
402
|
${transitiveClosureN3('sub')}
|
|
395
403
|
`,
|
|
396
|
-
expect: [
|
|
404
|
+
expect: [
|
|
405
|
+
new RegExp(`${EX}a>\\s+<${EX}sub>\\s+<${EX}e>\\s*\\.`),
|
|
406
|
+
new RegExp(`${EX}b>\\s+<${EX}sub>\\s+<${EX}d>\\s*\\.`),
|
|
407
|
+
],
|
|
397
408
|
},
|
|
398
409
|
{
|
|
399
410
|
name: '23 heavier social: symmetric + reachFriend closure',
|
|
@@ -408,7 +419,10 @@ ${transitiveClosureN3('sub')}
|
|
|
408
419
|
name: '24 heavier volume: 400 facts, simple rewrite rule p -> q',
|
|
409
420
|
opt: { proofComments: false, maxBuffer: 200 * 1024 * 1024 },
|
|
410
421
|
input: bigFactsN3(400),
|
|
411
|
-
expect: [
|
|
422
|
+
expect: [
|
|
423
|
+
new RegExp(`${EX}x>\\s+<${EX}q>\\s+<${EX}o0>\\s*\\.`),
|
|
424
|
+
new RegExp(`${EX}x>\\s+<${EX}q>\\s+<${EX}o399>\\s*\\.`),
|
|
425
|
+
],
|
|
412
426
|
},
|
|
413
427
|
{
|
|
414
428
|
name: '25 heavier negative entailment: batch + forbidden => false (expect exit 2)',
|
|
@@ -494,7 +508,10 @@ ${U('c')} ${U('p')} ${U('d')}.
|
|
|
494
508
|
|
|
495
509
|
{ ?s ${U('p')} ?o. } => { ?s ${U('q')} ?o. }.
|
|
496
510
|
`,
|
|
497
|
-
expect: [
|
|
511
|
+
expect: [
|
|
512
|
+
new RegExp(`${EX}a>\\s+<${EX}q>\\s+<${EX}b>\\s*\\.`),
|
|
513
|
+
new RegExp(`${EX}c>\\s+<${EX}q>\\s+<${EX}d>\\s*\\.`),
|
|
514
|
+
],
|
|
498
515
|
},
|
|
499
516
|
|
|
500
517
|
{
|
|
@@ -540,7 +557,10 @@ ${U('s')} ${U('p')} ${U('o')}.
|
|
|
540
557
|
|
|
541
558
|
{ ${U('s')} ${U('p')} ${U('o')}. } => { ${U('s')} ${U('q')} ${U('o')}. ${U('s')} ${U('r')} ${U('o')}. }.
|
|
542
559
|
`,
|
|
543
|
-
expect: [
|
|
560
|
+
expect: [
|
|
561
|
+
new RegExp(`${EX}s>\\s+<${EX}q>\\s+<${EX}o>\\s*\\.`),
|
|
562
|
+
new RegExp(`${EX}s>\\s+<${EX}r>\\s+<${EX}o>\\s*\\.`),
|
|
563
|
+
],
|
|
544
564
|
},
|
|
545
565
|
|
|
546
566
|
{
|
package/test/examples.test.js
CHANGED
|
@@ -7,7 +7,9 @@ const path = require('node:path');
|
|
|
7
7
|
const cp = require('node:child_process');
|
|
8
8
|
|
|
9
9
|
const TTY = process.stdout.isTTY;
|
|
10
|
-
const C = TTY
|
|
10
|
+
const C = TTY
|
|
11
|
+
? { g: '\x1b[32m', r: '\x1b[31m', y: '\x1b[33m', dim: '\x1b[2m', n: '\x1b[0m' }
|
|
12
|
+
: { g: '', r: '', y: '', dim: '', n: '' };
|
|
11
13
|
const msTag = (ms) => `${C.dim}(${ms} ms)${C.n}`;
|
|
12
14
|
|
|
13
15
|
function ok(msg) {
|
package/test/package.test.js
CHANGED
|
@@ -7,7 +7,9 @@ const path = require('node:path');
|
|
|
7
7
|
const cp = require('node:child_process');
|
|
8
8
|
|
|
9
9
|
const TTY = process.stdout.isTTY;
|
|
10
|
-
const C = TTY
|
|
10
|
+
const C = TTY
|
|
11
|
+
? { g: '\x1b[32m', r: '\x1b[31m', y: '\x1b[33m', dim: '\x1b[2m', n: '\x1b[0m' }
|
|
12
|
+
: { g: '', r: '', y: '', dim: '', n: '' };
|
|
11
13
|
|
|
12
14
|
function info(msg) {
|
|
13
15
|
console.log(`${C.y}==${C.n} ${msg}`);
|
|
@@ -110,7 +112,9 @@ function main() {
|
|
|
110
112
|
ok('API works');
|
|
111
113
|
|
|
112
114
|
info('CLI smoke test');
|
|
113
|
-
const bin = isWin()
|
|
115
|
+
const bin = isWin()
|
|
116
|
+
? path.join(tmp, 'node_modules', '.bin', 'eyeling.cmd')
|
|
117
|
+
: path.join(tmp, 'node_modules', '.bin', 'eyeling');
|
|
114
118
|
runChecked(bin, ['-v'], { cwd: tmp, stdio: 'inherit' });
|
|
115
119
|
ok('CLI works');
|
|
116
120
|
|