add hjq scroll
This commit is contained in:
parent
701e5d138a
commit
d92bc3b437
4 changed files with 54 additions and 20 deletions
44
shelf/hjq/main.ts
Normal file
44
shelf/hjq/main.ts
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
// a basic drop-in replacement for jq to handle HJSON
|
||||
// tries to preserve comments but doesn't do a very good job :(
|
||||
|
||||
import Hjson from "npm:hjson";
|
||||
import jqModule from "npm:jq-web";
|
||||
import fs from "node:fs";
|
||||
|
||||
const jq = await jqModule;
|
||||
|
||||
var filter = process.argv[2];
|
||||
if (!filter) {
|
||||
filter = '.';
|
||||
}
|
||||
|
||||
const input = fs.readFileSync(0, 'utf8');
|
||||
|
||||
try {
|
||||
const data = Hjson.parse(input, { keepWsc: true });
|
||||
|
||||
const result = jq.json(data, filter);
|
||||
|
||||
// Only try to preserve comments if the result is an object or array
|
||||
if (result !== null && typeof result === 'object') {
|
||||
// Extract comments before transformation
|
||||
const comments = Hjson.comments.extract(data);
|
||||
|
||||
// Merge comments back into the transformed result
|
||||
if (comments) {
|
||||
Hjson.comments.merge(comments, result);
|
||||
}
|
||||
|
||||
const output = Hjson.stringify(result, {
|
||||
keepWsc: true,
|
||||
bracesSameLine: true
|
||||
});
|
||||
|
||||
console.log(output);
|
||||
} else {
|
||||
console.log(JSON.stringify(result));
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue