Skip to content

Commit

Permalink
interp,format: Refactor registry usage and use function helpers
Browse files Browse the repository at this point in the history
Move registry to interp and add support for functions and filesystems.
This will be used later for allow formats to add own functions and fq code.

Add gojqextra function helpers to have more comfortable API to add functions.
Takes care of argument type casting and JQValue:s and some more things.

Refactor interp package to use new function helper and registry. Probably
fixes a bunch of JQValue bugs and other type errors.

Refactor out some mpeg nal things to mpeg format.

Refactor interp jq code into display.q and init.jq.

Remove undocumented aes_ctr funciton, was a test. Hopefully will add more crypto things laster.
  • Loading branch information
wader committed Jul 16, 2022
1 parent 88dc847 commit 1ddea1a
Show file tree
Hide file tree
Showing 135 changed files with 1,340 additions and 1,112 deletions.
12 changes: 11 additions & 1 deletion dev/tmpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func main() {
min := toInt(args[0])
max := toInt(args[1])
var v []int
for i := min; i <= max; i++ {
for i := min; i < max; i++ {
v = append(v, i)
}

Expand All @@ -60,6 +60,16 @@ func main() {

return strings.Replace(s, o, n, -1), nil
},
"slice": func(args ...any) []any {
return args
},
"map": func(args ...any) map[any]any {
m := map[any]any{}
for i := 0; i < len(args)/2; i++ {
m[args[i*2]] = args[i*2+1]
}
return m
},
}

data := map[string]any{}
Expand Down
4 changes: 2 additions & 2 deletions format/ape/apev2.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ package ape

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)

var imageFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.APEV2,
Description: "APEv2 metadata tag",
DecodeFn: apev2Decode,
Expand Down
4 changes: 2 additions & 2 deletions format/ar/ar.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package ar

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

var probeFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.AR,
Description: "Unix archive",
Groups: []string{format.PROBE},
Expand Down
4 changes: 2 additions & 2 deletions format/asn1/asn1_ber.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,17 @@ import (
"strings"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

//go:embed asn1_ber.jq
var asn1FS embed.FS

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.ASN1_BER,
Description: "ASN1 BER (basic encoding rules, also CER and DER)",
DecodeFn: decodeASN1BER,
Expand Down
4 changes: 2 additions & 2 deletions format/av1/av1_ccr.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ package av1

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.AV1_CCR,
Description: "AV1 Codec Configuration Record",
DecodeFn: ccrDecode,
Expand Down
4 changes: 2 additions & 2 deletions format/av1/av1_frame.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ package av1

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)

var obuFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.AV1_FRAME,
Description: "AV1 frame",
DecodeFn: frameDecode,
Expand Down
4 changes: 2 additions & 2 deletions format/av1/av1_obu.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ package av1

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.AV1_OBU,
Description: "AV1 Open Bitstream Unit",
DecodeFn: obuDecode,
Expand Down
4 changes: 2 additions & 2 deletions format/avro/avro_ocf.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/avro/decoders"
"github.com/wader/fq/format/avro/schema"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

//go:embed avro_ocf.jq
var avroOcfFS embed.FS

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.AVRO_OCF,
Description: "Avro object container file",
Groups: []string{format.PROBE},
Expand Down
4 changes: 2 additions & 2 deletions format/bencode/bencode.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ import (
"strconv"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

//go:embed bencode.jq
var bencodeFS embed.FS

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BENCODE,
Description: "BitTorrent bencoding",
DecodeFn: decodeBencode,
Expand Down
4 changes: 2 additions & 2 deletions format/bitcoin/bitcoin_blkdat.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package bitcoin

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)

var bitcoinBlockFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BITCOIN_BLKDAT,
Description: "Bitcoin blk.dat",
Groups: []string{format.PROBE},
Expand Down
4 changes: 2 additions & 2 deletions format/bitcoin/bitcoin_block.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ import (
"fmt"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

var bitcoinTranscationFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BITCOIN_BLOCK,
Description: "Bitcoin block",
Dependencies: []decode.Dependency{
Expand Down
4 changes: 2 additions & 2 deletions format/bitcoin/bitcoin_script.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ package bitcoin

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

Expand Down Expand Up @@ -34,7 +34,7 @@ func (ops opcodeEntries) MapScalar(s scalar.S) (scalar.S, error) {
}

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BITCOIN_SCRIPT,
Description: "Bitcoin script",
DecodeFn: decodeBitcoinScript,
Expand Down
4 changes: 2 additions & 2 deletions format/bitcoin/bitcoin_transaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ package bitcoin

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

var bitcoinScriptFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BITCOIN_TRANSACTION,
Description: "Bitcoin transaction",
Dependencies: []decode.Dependency{
Expand Down
4 changes: 2 additions & 2 deletions format/bson/bson.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ import (
"embed"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

//go:embed bson.jq
var bsonFS embed.FS

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BSON,
Description: "Binary JSON",
DecodeFn: decodeBSON,
Expand Down
4 changes: 2 additions & 2 deletions format/bzip2/bzip2.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,16 @@ import (
"math/bits"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

var probeGroup decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.BZIP2,
Description: "bzip2 compression",
Groups: []string{format.PROBE},
Expand Down
4 changes: 2 additions & 2 deletions format/cbor/cbor.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ import (
"strings"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/internal/mathextra"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

//go:embed cbor.jq
var cborFS embed.FS

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.CBOR,
Description: "Concise Binary Object Representation",
DecodeFn: decodeCBOR,
Expand Down
4 changes: 2 additions & 2 deletions format/dns/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import (
"strings"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.DNS,
Description: "DNS packet",
Groups: []string{
Expand Down
4 changes: 2 additions & 2 deletions format/dns/dns_tcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ package dns

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.DNS_TCP,
Description: "DNS packet (TCP)",
DecodeFn: dnsTCPDecode,
Expand Down
4 changes: 2 additions & 2 deletions format/elf/elf.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import (
"strings"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.ELF,
Description: "Executable and Linkable Format",
Groups: []string{format.PROBE},
Expand Down
4 changes: 2 additions & 2 deletions format/fairplay/fairplay.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ package fairplay

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
)

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.FAIRPLAY_SPC,
Description: "FairPlay Server Playback Context",
DecodeFn: fairPlaySPCDecode,
Expand Down
4 changes: 2 additions & 2 deletions format/flac/flac.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ import (
"fmt"

"github.com/wader/fq/format"
"github.com/wader/fq/format/registry"
"github.com/wader/fq/internal/mathextra"
"github.com/wader/fq/pkg/bitio"
"github.com/wader/fq/pkg/decode"
"github.com/wader/fq/pkg/interp"
"github.com/wader/fq/pkg/scalar"
)

var flacMetadatablocksFormat decode.Group
var flacFrameFormat decode.Group

func init() {
registry.MustRegister(decode.Format{
interp.RegisterFormat(decode.Format{
Name: format.FLAC,
Description: "Free Lossless Audio Codec file",
Groups: []string{format.PROBE},
Expand Down

0 comments on commit 1ddea1a

Please sign in to comment.