A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/jsonquerylang/jsonquery/commit/3c3701d168d8644792cae3ae06e3e853718c2936 below:

implement a language agnostic JSON test suite (#6) · jsonquerylang/jsonquery@3c3701d · GitHub

File tree Expand file treeCollapse file tree 18 files changed

+2296

-1332

lines changed

Filter options

Expand file treeCollapse file tree 18 files changed

+2296

-1332

lines changed Original file line number Diff line number Diff line change

@@ -10,7 +10,7 @@ Try it out on the online playground: <https://jsonquerylang.org>

10 10 11 11

## Features

12 12 13 -

- Small: just `2.9 kB` when minified and gzipped! The JSON query engine without parse/stringify is only `1.3 kB`.

13 +

- Small: just `3.0 kB` when minified and gzipped! The JSON query engine without parse/stringify is only `1.4 kB`.

14 14

- Feature rich (40+ powerful functions)

15 15

- Easy to interoperate with thanks to the intermediate JSON format.

16 16

- Expressive

@@ -34,6 +34,7 @@ On this page:

34 34

External pages:

35 35 36 36

- [Function reference](reference/functions.md)

37 +

- [Test Suite](test-suite/README.md)

37 38 38 39

## Installation

39 40

@@ -623,7 +624,9 @@ Another gotcha is that unlike some other query languages, you need to use the `m

623 624 624 625

## Development

625 626 626 -

To develop, check out the repo, install dependencies once, and then use the following scripts:

627 +

### JavaScript

628 + 629 +

To develop, check out the JavaScript repo, install dependencies once, and then use the following scripts:

627 630 628 631

```text

629 632

npm run test

@@ -637,6 +640,12 @@ npm run build-and-test

637 640 638 641

Note that a new package is published on [npm](https://www.npmjs.com/package/@jsonquerylang/jsonquery) and [GitHub](https://github.com/jsonquerylang/jsonquery/releases) on changes pushed to the `main` branch. This is done using [`semantic-release`](https://github.com/semantic-release/semantic-release), and we do not use the `version` number in the `package.json` file. A changelog can be found by looking at the [releases on GitHub](https://github.com/jsonquerylang/jsonquery/releases).

639 642 643 +

### Implement in a new language

644 + 645 +

Support for JSON Query language can be implemented in new programming languages. Implementing the query engine is most straight forward: this boils down to implementing each of the functions (`sort`, `filter`, `groupBy`, etc.), and creating a compiler which can go through a JSON Query like `["sort", ["get", "name"], "desc"]` look up the function `sort`, and pass the arguments to it. Implementing a parser and stringifier is a bit more work, but the parser and stringifier of the JavaScript implementation can be used as a reference.

646 + 647 +

There is a JSON based Test Suite available that can be used to ensure that your implementation matches the behavior of the reference implementation, see: [Test Suite](test-suite/README.md).

648 + 640 649

## Motivation

641 650 642 651

There are many powerful query languages out there, so why the need to develop `jsonquery`? There are a couple of reasons for this.

Original file line number Diff line number Diff line change

@@ -55,6 +55,7 @@

55 55

"devDependencies": {

56 56

"@biomejs/biome": "1.9.3",

57 57

"@vitest/coverage-v8": "2.1.2",

58 +

"ajv": "8.17.1",

58 59

"npm-run-all": "4.1.5",

59 60

"semantic-release": "24.1.2",

60 61

"typescript": "5.6.3",

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4