Skip to content

Instantly share code, notes, and snippets.

@pkoppstein
pkoppstein / schema.jq
Last active April 28, 2025 23:20
schema.jq
module {
"name": "schema",
"description": "JSON Schema Inference",
"version": "0.0.3.1",
"homepage": "https://gist.github.com/pkoppstein/a5abb4ebef3b0f72a6ed",
"license": "MIT",
"author": "pkoppstein at gmail dot com"
};
# NEWS:
# Version 2023.08.25
# This jq module defines filters for assertion checking.
# The module can be included or imported in the usual way, e.g.
# by including a line similar to the following at the top of your program file:
# include "assert" {search: "."};
# By changing "keys_unsorted" to "keys", this module can also be used with gojq,
# the Go implementation of jq.
@pkoppstein
pkoppstein / xml.jq
Last active January 19, 2023 00:48
module {
"name": "xml",
"description": "PEG parser for XML",
"version": "0.0.1",
"homepage": "https://gist.github.com/pkoppstein/addaedbb10b6fc97ff2b6b00123700ad",
"license": "MIT",
"author": "pkoppstein at gmail dot com"
};
# This is a standalone jq module that has been tested with jq, gojq, and fq.
@pkoppstein
pkoppstein / BigInt.jq
Last active January 9, 2023 04:50
BigInt library of functions for jq
# Copyright (c) 2014-2015 Peter Koppstein (pkoppstein at gmail dot com) 2015.05.02
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
@pkoppstein
pkoppstein / schemaV0.0.3.jq
Created January 18, 2022 07:19
schema.jq version 0.0.3
module {
"name": "schema",
"description": "JSON Schema Inference",
"version": "0.0.3",
"homepage": "https://gist.github.com/pkoppstein/a5abb4ebef3b0f72a6ed",
"license": "MIT",
"author": "pkoppstein at gmail dot com"
};
# NEWS:
@pkoppstein
pkoppstein / combine.jq
Last active August 5, 2021 02:13
a commutative and associative operator for combining two JSON objects
# This gist defines a jq filter for combining two JSON objects by resolving conflicts
# in a way that is appropriate for mapping relational tables to objects.
# "combine" as defined here is both commutative and associative.
# Example:
# { "id": 123, "son": "Son1", "surname": "S"}
# | combine({ "id": 123, "son": "Son2", "surname": "S"})
# produces: { "id": 123, "son": ["Son1",Son2], "surname": "S"}
# Combine two entities in an array-oriented fashion.
#!/bin/bash
# Copyright (c) 2017 Peter Koppstein (pkoppstein at gmail dot com) 2017.01.15
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
@pkoppstein
pkoppstein / fromcsvfile.jq
Last active December 31, 2018 23:24
CSV parser for jq without slurping
# Copyright (C) 2018 peak@princeton.edu
# License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
# See http://creativecommons.org/licenses/by-nc/3.0/
# Attribution shall include the copyright notice above.
# fromcsv.jq version: 0.4 of 2018-12-30
# Requires: jq with `inputs`
# Source: https://gist.github.com/pkoppstein/bbbbdf7489c8c515680beb1c75fa59f2
# A PEG-inspired parser for reading CSV files without the need to "slurp" them.
@pkoppstein
pkoppstein / test.csv
Last active December 26, 2018 10:22
A CSV file for validating a CSV parser - q.v. https://gist.github.com/pkoppstein/e962076c25e75af201e958bdff92fdbf
We can make this file beautiful and searchable if this error is corrected: Illegal quoting in line 3.
1
"2"
"3"
"4"
"5", "a"
"""6"""
"""7""","a"
8,b,c
9,"",c
10,,c
["1"]
["2"]
["3"]
["4"]
["5","a"]
["\"6\""]
["\"7\"","a"]
["8","b","c"]
["9","","c"]
["10","","c"]