add hjq scroll

This commit is contained in:
EatThePooh 2025-08-02 02:17:27 +07:00
parent 701e5d138a
commit d92bc3b437
4 changed files with 54 additions and 20 deletions

44
shelf/hjq/main.ts Normal file
View 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);
}