podlite 0.0.54 → 0.0.55
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/CHANGELOG.podlite +5 -0
- package/esm/cli.js +93 -4
- package/esm/cli.js.map +1 -1
- package/esm/query.d.ts +15 -0
- package/esm/query.js +67 -0
- package/esm/query.js.map +1 -0
- package/lib/cli.js +93 -4
- package/lib/cli.js.map +1 -1
- package/lib/query.d.ts +15 -0
- package/lib/query.js +90 -0
- package/lib/query.js.map +1 -0
- package/package.json +7 -7
package/CHANGELOG.podlite
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
=head1 Upcoming
|
|
4
4
|
|
|
5
|
+
=head1 0.0.55
|
|
6
|
+
|
|
7
|
+
=item add C<< podlite query <selector> <files...> >> subcommand. Extracts blocks matching a selector. C<--to> selects C<podlite> (default, raw source), C<md>, C<html>, C<json>. C<--fail-on-empty> sets exit 1 on empty result. Match count on stderr unless C<--quiet>. Reads stdin when piped or when C<-> is given as a file argument
|
|
8
|
+
=item C<parseSelector> accepts bare pattern-list without a leading pipe (e.g. C<head1, code[:lang<python>]>); behaviour unchanged when the selector contains a C<|>
|
|
9
|
+
|
|
5
10
|
=head1 0.0.54
|
|
6
11
|
|
|
7
12
|
=item add C<< podlite lint <files...> >> subcommand (stub; rules land in upcoming releases)
|
package/esm/cli.js
CHANGED
|
@@ -2,29 +2,42 @@ import * as fs from 'fs';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { parse, toMarkdown, toHtml } from '@podlite/schema';
|
|
4
4
|
import { runLint } from './lint';
|
|
5
|
+
import { runQuery } from './query';
|
|
5
6
|
const FORMATS = {
|
|
6
7
|
md: '.md',
|
|
7
8
|
markdown: '.md',
|
|
8
9
|
html: '.html',
|
|
9
10
|
};
|
|
11
|
+
const QUERY_FORMATS = ['podlite', 'md', 'html', 'json'];
|
|
10
12
|
function usage() {
|
|
11
13
|
console.log(`Usage:
|
|
12
14
|
podlite convert <files...> --to <format> [-o <output>]
|
|
13
15
|
podlite lint <files...>
|
|
16
|
+
podlite query <selector> <files...> [--to <format>] [--fail-on-empty] [--quiet]
|
|
14
17
|
|
|
15
18
|
Commands:
|
|
16
19
|
convert Convert Podlite files to another format
|
|
17
20
|
lint Check Podlite/Markdown files for issues (work in progress)
|
|
21
|
+
query Extract blocks matching a selector
|
|
18
22
|
|
|
19
23
|
Options:
|
|
20
|
-
--to Output format
|
|
24
|
+
--to Output format
|
|
25
|
+
convert: md (markdown), html
|
|
26
|
+
query: podlite (default), md, html, json
|
|
21
27
|
-o Output file or directory (default: same dir, new extension)
|
|
28
|
+
--fail-on-empty query: exit 1 if no blocks matched
|
|
29
|
+
--quiet query: suppress match count on stderr
|
|
22
30
|
--help Show this help
|
|
23
31
|
|
|
24
32
|
Examples:
|
|
25
33
|
podlite convert doc.pod6 --to md
|
|
26
34
|
podlite convert *.pod6 --to md -o output/
|
|
27
|
-
podlite
|
|
35
|
+
podlite query 'head1' docs/api.podlite
|
|
36
|
+
podlite query 'head1, head2' manual.podlite --to md
|
|
37
|
+
podlite query 'code[:lang<python>]' tutorials/*.podlite --to json
|
|
38
|
+
podlite query '*[:applies-nfr~<N004>]' rules/*.podlite --fail-on-empty
|
|
39
|
+
cat doc.podlite | podlite query 'head1'
|
|
40
|
+
podlite query 'table' --to json - < report.podlite
|
|
28
41
|
podlite lint docs/*.podlite`);
|
|
29
42
|
}
|
|
30
43
|
function parseArgs(argv) {
|
|
@@ -33,20 +46,28 @@ function parseArgs(argv) {
|
|
|
33
46
|
files: [],
|
|
34
47
|
to: '',
|
|
35
48
|
output: '',
|
|
49
|
+
failOnEmpty: false,
|
|
50
|
+
quiet: false,
|
|
36
51
|
};
|
|
37
|
-
let i = 0;
|
|
38
52
|
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
39
53
|
return null;
|
|
40
54
|
}
|
|
55
|
+
let i = 0;
|
|
41
56
|
args.command = argv[i++];
|
|
42
57
|
while (i < argv.length) {
|
|
43
58
|
const arg = argv[i];
|
|
44
|
-
if (arg === '--to') {
|
|
59
|
+
if (arg === '--to' || arg === '-t') {
|
|
45
60
|
args.to = argv[++i] || '';
|
|
46
61
|
}
|
|
47
62
|
else if (arg === '-o') {
|
|
48
63
|
args.output = argv[++i] || '';
|
|
49
64
|
}
|
|
65
|
+
else if (arg === '--fail-on-empty') {
|
|
66
|
+
args.failOnEmpty = true;
|
|
67
|
+
}
|
|
68
|
+
else if (arg === '--quiet') {
|
|
69
|
+
args.quiet = true;
|
|
70
|
+
}
|
|
50
71
|
else if (arg === '--help' || arg === '-h') {
|
|
51
72
|
return null;
|
|
52
73
|
}
|
|
@@ -96,12 +117,80 @@ function convertFile(inputPath, format, outputPath) {
|
|
|
96
117
|
console.log(`${inputPath} → ${outFile}`);
|
|
97
118
|
}
|
|
98
119
|
}
|
|
120
|
+
function readStdinSync() {
|
|
121
|
+
return fs.readFileSync(0, 'utf-8');
|
|
122
|
+
}
|
|
123
|
+
function runQueryCommand(args) {
|
|
124
|
+
if (!args)
|
|
125
|
+
process.exit(1);
|
|
126
|
+
// First positional arg is the selector, rest are files
|
|
127
|
+
if (args.files.length === 0) {
|
|
128
|
+
console.error('podlite query: missing selector');
|
|
129
|
+
usage();
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const selector = args.files[0];
|
|
133
|
+
const positional = args.files.slice(1);
|
|
134
|
+
// '-' is explicit stdin marker. Piped input (stdin not a TTY) is also treated as input.
|
|
135
|
+
const stdinIsPiped = !process.stdin.isTTY;
|
|
136
|
+
const hasDashMarker = positional.includes('-');
|
|
137
|
+
const files = positional.filter(f => f !== '-');
|
|
138
|
+
let stdinContent;
|
|
139
|
+
if (hasDashMarker || (stdinIsPiped && files.length === 0)) {
|
|
140
|
+
stdinContent = readStdinSync();
|
|
141
|
+
}
|
|
142
|
+
if (files.length === 0 && stdinContent === undefined) {
|
|
143
|
+
console.error('podlite query: missing input files (and no stdin)');
|
|
144
|
+
usage();
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
const format = (args.to || 'podlite');
|
|
148
|
+
if (!QUERY_FORMATS.includes(format)) {
|
|
149
|
+
console.error(`podlite query: unknown --to format "${format}". Supported: ${QUERY_FORMATS.join(', ')}`);
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
for (const f of files) {
|
|
153
|
+
if (!fs.existsSync(f)) {
|
|
154
|
+
console.error(`File not found: ${f}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
const result = runQuery({
|
|
160
|
+
selector,
|
|
161
|
+
files,
|
|
162
|
+
format,
|
|
163
|
+
failOnEmpty: args.failOnEmpty,
|
|
164
|
+
quiet: args.quiet,
|
|
165
|
+
stdinContent,
|
|
166
|
+
});
|
|
167
|
+
if (args.output) {
|
|
168
|
+
fs.writeFileSync(args.output, result.output);
|
|
169
|
+
}
|
|
170
|
+
else if (result.output) {
|
|
171
|
+
process.stdout.write(result.output);
|
|
172
|
+
if (!result.output.endsWith('\n'))
|
|
173
|
+
process.stdout.write('\n');
|
|
174
|
+
}
|
|
175
|
+
if (!args.quiet) {
|
|
176
|
+
console.error(`${result.matchCount} match${result.matchCount === 1 ? '' : 'es'}`);
|
|
177
|
+
}
|
|
178
|
+
process.exit(result.exitCode);
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
console.error(`podlite query: ${e.message}`);
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
99
185
|
function main() {
|
|
100
186
|
const args = parseArgs(process.argv.slice(2));
|
|
101
187
|
if (!args) {
|
|
102
188
|
usage();
|
|
103
189
|
process.exit(0);
|
|
104
190
|
}
|
|
191
|
+
if (args.command === 'query') {
|
|
192
|
+
runQueryCommand(args);
|
|
193
|
+
}
|
|
105
194
|
if (args.command === 'lint') {
|
|
106
195
|
if (args.files.length === 0) {
|
|
107
196
|
console.error('No input files specified');
|
package/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/esm/query.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare type QueryFormat = 'podlite' | 'md' | 'html' | 'json';
|
|
2
|
+
export declare type QueryOptions = {
|
|
3
|
+
selector: string;
|
|
4
|
+
files: string[];
|
|
5
|
+
format: QueryFormat;
|
|
6
|
+
failOnEmpty: boolean;
|
|
7
|
+
quiet: boolean;
|
|
8
|
+
stdinContent?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare type QueryResult = {
|
|
11
|
+
output: string;
|
|
12
|
+
matchCount: number;
|
|
13
|
+
exitCode: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const runQuery: (opts: QueryOptions) => QueryResult;
|
package/esm/query.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { parse, parseSelector, runSelector, toHtml, toMarkdown } from '@podlite/schema';
|
|
3
|
+
const loadSource = (file) => {
|
|
4
|
+
const text = fs.readFileSync(file, 'utf-8');
|
|
5
|
+
return { file, text, node: parse(text) };
|
|
6
|
+
};
|
|
7
|
+
const sliceBlock = (text, block) => {
|
|
8
|
+
const loc = block?.location;
|
|
9
|
+
if (!loc || typeof loc.start?.offset !== 'number' || typeof loc.end?.offset !== 'number') {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
return text.slice(loc.start.offset, loc.end.offset);
|
|
13
|
+
};
|
|
14
|
+
// Each block is rendered through its own pod-block invocation. Wrapping
|
|
15
|
+
// multiple matches into one synthetic container triggers serializer
|
|
16
|
+
// warnings on some exporters; per-block keeps output clean.
|
|
17
|
+
const renderViaRoot = (block, serializer) => {
|
|
18
|
+
const root = { type: 'block', name: 'pod', margin: '', content: [block] };
|
|
19
|
+
const out = serializer === 'md' ? toMarkdown({}).run(root) : toHtml({}).run(root);
|
|
20
|
+
return out.toString();
|
|
21
|
+
};
|
|
22
|
+
const formatBlocks = (format, matches) => {
|
|
23
|
+
if (format === 'json') {
|
|
24
|
+
return JSON.stringify(matches.map(m => m.block), null, 2);
|
|
25
|
+
}
|
|
26
|
+
if (format === 'podlite') {
|
|
27
|
+
return matches
|
|
28
|
+
.map(m => sliceBlock(m.source.text, m.block).trimEnd())
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join('\n\n');
|
|
31
|
+
}
|
|
32
|
+
if (format === 'md' || format === 'html') {
|
|
33
|
+
return matches.map(m => renderViaRoot(m.block, format).trimEnd()).filter(Boolean).join('\n\n');
|
|
34
|
+
}
|
|
35
|
+
throw new Error(`Unknown output format: ${format}`);
|
|
36
|
+
};
|
|
37
|
+
export const runQuery = (opts) => {
|
|
38
|
+
const parsed = parseSelector(opts.selector);
|
|
39
|
+
if (!parsed) {
|
|
40
|
+
throw new Error(`Invalid selector: ${opts.selector}`);
|
|
41
|
+
}
|
|
42
|
+
const sources = [];
|
|
43
|
+
if (opts.stdinContent !== undefined) {
|
|
44
|
+
sources.push({ file: '<stdin>', text: opts.stdinContent, node: parse(opts.stdinContent) });
|
|
45
|
+
}
|
|
46
|
+
for (const f of opts.files) {
|
|
47
|
+
sources.push(loadSource(f));
|
|
48
|
+
}
|
|
49
|
+
if (sources.length === 0) {
|
|
50
|
+
throw new Error('No input files (and no stdin)');
|
|
51
|
+
}
|
|
52
|
+
// Per-source invocation preserves file context for source-slicing in podlite output
|
|
53
|
+
const matches = [];
|
|
54
|
+
for (const src of sources) {
|
|
55
|
+
const docs = [{ file: src.file, node: src.node }];
|
|
56
|
+
const result = runSelector(opts.selector, docs);
|
|
57
|
+
for (const item of result) {
|
|
58
|
+
if (item && typeof item === 'object' && !('file' in item)) {
|
|
59
|
+
matches.push({ source: src, block: item });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const output = formatBlocks(opts.format, matches);
|
|
64
|
+
const exitCode = opts.failOnEmpty && matches.length === 0 ? 1 : 0;
|
|
65
|
+
return { output, matchCount: matches.length, exitCode };
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=query.js.map
|
package/esm/query.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -23,29 +23,42 @@ const fs = __importStar(require("fs"));
|
|
|
23
23
|
const path = __importStar(require("path"));
|
|
24
24
|
const schema_1 = require("@podlite/schema");
|
|
25
25
|
const lint_1 = require("./lint");
|
|
26
|
+
const query_1 = require("./query");
|
|
26
27
|
const FORMATS = {
|
|
27
28
|
md: '.md',
|
|
28
29
|
markdown: '.md',
|
|
29
30
|
html: '.html',
|
|
30
31
|
};
|
|
32
|
+
const QUERY_FORMATS = ['podlite', 'md', 'html', 'json'];
|
|
31
33
|
function usage() {
|
|
32
34
|
console.log(`Usage:
|
|
33
35
|
podlite convert <files...> --to <format> [-o <output>]
|
|
34
36
|
podlite lint <files...>
|
|
37
|
+
podlite query <selector> <files...> [--to <format>] [--fail-on-empty] [--quiet]
|
|
35
38
|
|
|
36
39
|
Commands:
|
|
37
40
|
convert Convert Podlite files to another format
|
|
38
41
|
lint Check Podlite/Markdown files for issues (work in progress)
|
|
42
|
+
query Extract blocks matching a selector
|
|
39
43
|
|
|
40
44
|
Options:
|
|
41
|
-
--to Output format
|
|
45
|
+
--to Output format
|
|
46
|
+
convert: md (markdown), html
|
|
47
|
+
query: podlite (default), md, html, json
|
|
42
48
|
-o Output file or directory (default: same dir, new extension)
|
|
49
|
+
--fail-on-empty query: exit 1 if no blocks matched
|
|
50
|
+
--quiet query: suppress match count on stderr
|
|
43
51
|
--help Show this help
|
|
44
52
|
|
|
45
53
|
Examples:
|
|
46
54
|
podlite convert doc.pod6 --to md
|
|
47
55
|
podlite convert *.pod6 --to md -o output/
|
|
48
|
-
podlite
|
|
56
|
+
podlite query 'head1' docs/api.podlite
|
|
57
|
+
podlite query 'head1, head2' manual.podlite --to md
|
|
58
|
+
podlite query 'code[:lang<python>]' tutorials/*.podlite --to json
|
|
59
|
+
podlite query '*[:applies-nfr~<N004>]' rules/*.podlite --fail-on-empty
|
|
60
|
+
cat doc.podlite | podlite query 'head1'
|
|
61
|
+
podlite query 'table' --to json - < report.podlite
|
|
49
62
|
podlite lint docs/*.podlite`);
|
|
50
63
|
}
|
|
51
64
|
function parseArgs(argv) {
|
|
@@ -54,20 +67,28 @@ function parseArgs(argv) {
|
|
|
54
67
|
files: [],
|
|
55
68
|
to: '',
|
|
56
69
|
output: '',
|
|
70
|
+
failOnEmpty: false,
|
|
71
|
+
quiet: false,
|
|
57
72
|
};
|
|
58
|
-
let i = 0;
|
|
59
73
|
if (argv.length === 0 || argv[0] === '--help' || argv[0] === '-h') {
|
|
60
74
|
return null;
|
|
61
75
|
}
|
|
76
|
+
let i = 0;
|
|
62
77
|
args.command = argv[i++];
|
|
63
78
|
while (i < argv.length) {
|
|
64
79
|
const arg = argv[i];
|
|
65
|
-
if (arg === '--to') {
|
|
80
|
+
if (arg === '--to' || arg === '-t') {
|
|
66
81
|
args.to = argv[++i] || '';
|
|
67
82
|
}
|
|
68
83
|
else if (arg === '-o') {
|
|
69
84
|
args.output = argv[++i] || '';
|
|
70
85
|
}
|
|
86
|
+
else if (arg === '--fail-on-empty') {
|
|
87
|
+
args.failOnEmpty = true;
|
|
88
|
+
}
|
|
89
|
+
else if (arg === '--quiet') {
|
|
90
|
+
args.quiet = true;
|
|
91
|
+
}
|
|
71
92
|
else if (arg === '--help' || arg === '-h') {
|
|
72
93
|
return null;
|
|
73
94
|
}
|
|
@@ -117,12 +138,80 @@ function convertFile(inputPath, format, outputPath) {
|
|
|
117
138
|
console.log(`${inputPath} → ${outFile}`);
|
|
118
139
|
}
|
|
119
140
|
}
|
|
141
|
+
function readStdinSync() {
|
|
142
|
+
return fs.readFileSync(0, 'utf-8');
|
|
143
|
+
}
|
|
144
|
+
function runQueryCommand(args) {
|
|
145
|
+
if (!args)
|
|
146
|
+
process.exit(1);
|
|
147
|
+
// First positional arg is the selector, rest are files
|
|
148
|
+
if (args.files.length === 0) {
|
|
149
|
+
console.error('podlite query: missing selector');
|
|
150
|
+
usage();
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
const selector = args.files[0];
|
|
154
|
+
const positional = args.files.slice(1);
|
|
155
|
+
// '-' is explicit stdin marker. Piped input (stdin not a TTY) is also treated as input.
|
|
156
|
+
const stdinIsPiped = !process.stdin.isTTY;
|
|
157
|
+
const hasDashMarker = positional.includes('-');
|
|
158
|
+
const files = positional.filter(f => f !== '-');
|
|
159
|
+
let stdinContent;
|
|
160
|
+
if (hasDashMarker || (stdinIsPiped && files.length === 0)) {
|
|
161
|
+
stdinContent = readStdinSync();
|
|
162
|
+
}
|
|
163
|
+
if (files.length === 0 && stdinContent === undefined) {
|
|
164
|
+
console.error('podlite query: missing input files (and no stdin)');
|
|
165
|
+
usage();
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
const format = (args.to || 'podlite');
|
|
169
|
+
if (!QUERY_FORMATS.includes(format)) {
|
|
170
|
+
console.error(`podlite query: unknown --to format "${format}". Supported: ${QUERY_FORMATS.join(', ')}`);
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
for (const f of files) {
|
|
174
|
+
if (!fs.existsSync(f)) {
|
|
175
|
+
console.error(`File not found: ${f}`);
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const result = (0, query_1.runQuery)({
|
|
181
|
+
selector,
|
|
182
|
+
files,
|
|
183
|
+
format,
|
|
184
|
+
failOnEmpty: args.failOnEmpty,
|
|
185
|
+
quiet: args.quiet,
|
|
186
|
+
stdinContent,
|
|
187
|
+
});
|
|
188
|
+
if (args.output) {
|
|
189
|
+
fs.writeFileSync(args.output, result.output);
|
|
190
|
+
}
|
|
191
|
+
else if (result.output) {
|
|
192
|
+
process.stdout.write(result.output);
|
|
193
|
+
if (!result.output.endsWith('\n'))
|
|
194
|
+
process.stdout.write('\n');
|
|
195
|
+
}
|
|
196
|
+
if (!args.quiet) {
|
|
197
|
+
console.error(`${result.matchCount} match${result.matchCount === 1 ? '' : 'es'}`);
|
|
198
|
+
}
|
|
199
|
+
process.exit(result.exitCode);
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
console.error(`podlite query: ${e.message}`);
|
|
203
|
+
process.exit(1);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
120
206
|
function main() {
|
|
121
207
|
const args = parseArgs(process.argv.slice(2));
|
|
122
208
|
if (!args) {
|
|
123
209
|
usage();
|
|
124
210
|
process.exit(0);
|
|
125
211
|
}
|
|
212
|
+
if (args.command === 'query') {
|
|
213
|
+
runQueryCommand(args);
|
|
214
|
+
}
|
|
126
215
|
if (args.command === 'lint') {
|
|
127
216
|
if (args.files.length === 0) {
|
|
128
217
|
console.error('No input files specified');
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,2CAA4B;AAC5B,4CAA2D;AAC3D,iCAAgC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/lib/query.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare type QueryFormat = 'podlite' | 'md' | 'html' | 'json';
|
|
2
|
+
export declare type QueryOptions = {
|
|
3
|
+
selector: string;
|
|
4
|
+
files: string[];
|
|
5
|
+
format: QueryFormat;
|
|
6
|
+
failOnEmpty: boolean;
|
|
7
|
+
quiet: boolean;
|
|
8
|
+
stdinContent?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare type QueryResult = {
|
|
11
|
+
output: string;
|
|
12
|
+
matchCount: number;
|
|
13
|
+
exitCode: number;
|
|
14
|
+
};
|
|
15
|
+
export declare const runQuery: (opts: QueryOptions) => QueryResult;
|
package/lib/query.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.runQuery = void 0;
|
|
23
|
+
const fs = __importStar(require("fs"));
|
|
24
|
+
const schema_1 = require("@podlite/schema");
|
|
25
|
+
const loadSource = (file) => {
|
|
26
|
+
const text = fs.readFileSync(file, 'utf-8');
|
|
27
|
+
return { file, text, node: (0, schema_1.parse)(text) };
|
|
28
|
+
};
|
|
29
|
+
const sliceBlock = (text, block) => {
|
|
30
|
+
const loc = block?.location;
|
|
31
|
+
if (!loc || typeof loc.start?.offset !== 'number' || typeof loc.end?.offset !== 'number') {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
return text.slice(loc.start.offset, loc.end.offset);
|
|
35
|
+
};
|
|
36
|
+
// Each block is rendered through its own pod-block invocation. Wrapping
|
|
37
|
+
// multiple matches into one synthetic container triggers serializer
|
|
38
|
+
// warnings on some exporters; per-block keeps output clean.
|
|
39
|
+
const renderViaRoot = (block, serializer) => {
|
|
40
|
+
const root = { type: 'block', name: 'pod', margin: '', content: [block] };
|
|
41
|
+
const out = serializer === 'md' ? (0, schema_1.toMarkdown)({}).run(root) : (0, schema_1.toHtml)({}).run(root);
|
|
42
|
+
return out.toString();
|
|
43
|
+
};
|
|
44
|
+
const formatBlocks = (format, matches) => {
|
|
45
|
+
if (format === 'json') {
|
|
46
|
+
return JSON.stringify(matches.map(m => m.block), null, 2);
|
|
47
|
+
}
|
|
48
|
+
if (format === 'podlite') {
|
|
49
|
+
return matches
|
|
50
|
+
.map(m => sliceBlock(m.source.text, m.block).trimEnd())
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join('\n\n');
|
|
53
|
+
}
|
|
54
|
+
if (format === 'md' || format === 'html') {
|
|
55
|
+
return matches.map(m => renderViaRoot(m.block, format).trimEnd()).filter(Boolean).join('\n\n');
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`Unknown output format: ${format}`);
|
|
58
|
+
};
|
|
59
|
+
const runQuery = (opts) => {
|
|
60
|
+
const parsed = (0, schema_1.parseSelector)(opts.selector);
|
|
61
|
+
if (!parsed) {
|
|
62
|
+
throw new Error(`Invalid selector: ${opts.selector}`);
|
|
63
|
+
}
|
|
64
|
+
const sources = [];
|
|
65
|
+
if (opts.stdinContent !== undefined) {
|
|
66
|
+
sources.push({ file: '<stdin>', text: opts.stdinContent, node: (0, schema_1.parse)(opts.stdinContent) });
|
|
67
|
+
}
|
|
68
|
+
for (const f of opts.files) {
|
|
69
|
+
sources.push(loadSource(f));
|
|
70
|
+
}
|
|
71
|
+
if (sources.length === 0) {
|
|
72
|
+
throw new Error('No input files (and no stdin)');
|
|
73
|
+
}
|
|
74
|
+
// Per-source invocation preserves file context for source-slicing in podlite output
|
|
75
|
+
const matches = [];
|
|
76
|
+
for (const src of sources) {
|
|
77
|
+
const docs = [{ file: src.file, node: src.node }];
|
|
78
|
+
const result = (0, schema_1.runSelector)(opts.selector, docs);
|
|
79
|
+
for (const item of result) {
|
|
80
|
+
if (item && typeof item === 'object' && !('file' in item)) {
|
|
81
|
+
matches.push({ source: src, block: item });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const output = formatBlocks(opts.format, matches);
|
|
86
|
+
const exitCode = opts.failOnEmpty && matches.length === 0 ? 1 : 0;
|
|
87
|
+
return { output, matchCount: matches.length, exitCode };
|
|
88
|
+
};
|
|
89
|
+
exports.runQuery = runQuery;
|
|
90
|
+
//# sourceMappingURL=query.js.map
|
package/lib/query.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "podlite",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.55",
|
|
4
4
|
"description": "Podlite markup language parser — Markdown-compatible, with native support for diagrams, formulas, and custom blocks",
|
|
5
5
|
"homepage": "https://podlite.org",
|
|
6
6
|
"repository": {
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"url": "https://github.com/podlite/podlite/issues"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@podlite/diagram": "^0.0.
|
|
54
|
-
"@podlite/formula": "0.0.
|
|
55
|
-
"@podlite/image": "^0.0.
|
|
56
|
-
"@podlite/markdown": "0.0.
|
|
57
|
-
"@podlite/schema": "^0.0.
|
|
58
|
-
"@podlite/toc": "0.0.
|
|
53
|
+
"@podlite/diagram": "^0.0.46",
|
|
54
|
+
"@podlite/formula": "0.0.24",
|
|
55
|
+
"@podlite/image": "^0.0.41",
|
|
56
|
+
"@podlite/markdown": "0.0.35",
|
|
57
|
+
"@podlite/schema": "^0.0.42",
|
|
58
|
+
"@podlite/toc": "0.0.35",
|
|
59
59
|
"nanoid": "3.1.30"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|