Commit Graph

284 Commits

Author SHA1 Message Date
tidwall c3bb2c39ba Remove encoding/json dependency
The only purpose of using the built-in Go was to encode json
strings that had unicode or needed to escaped.

This commit adds the new function `AppendJSONString` which allows
for appending strings as their json representation to a byte
slice.

It's about 2x faster than using json.Marshal.
2022-04-19 15:14:33 -07:00
tidwall 56c0a0aa5b Update comment 2022-03-22 09:30:19 -07:00
Josh Baker 7a94820afd
Update SYNTAX.md 2022-02-02 04:59:12 -07:00
Josh Baker 1abd525f6d
Update README.md 2022-02-02 04:58:31 -07:00
Josh Baker fce6fec098
Update README.md 2022-02-02 04:57:03 -07:00
tidwall 05e9ee1423 Update docs 2022-02-02 04:52:59 -07:00
tidwall 82f549e6ee Added IsBool
See #264
2022-02-02 04:49:11 -07:00
tidwall e4fc67c92a Added group modifier
The new "@group" modifier allows for grouping arrays of objects.

For example, using the "@group" modifier on the following json...

  {"id":["123","456","789"],"val":[2,1]}

will results in...

  [{"id":"123","val":2},{"id":"456","val":1},{"id":"789"}]
2022-02-02 04:43:04 -07:00
Josh Baker f47e17d70a
Update README.md
Added an additional link to the SYNTAX doc. 

#261
2022-01-13 18:19:20 -07:00
tidwall 38071ea7f2 Add tostr and fromstr modifiers
For wrapping and unwrapping json strings
2022-01-13 09:15:39 -07:00
Josh Baker ba95ef80b5
Update SYNTAX.md 2021-12-10 09:23:12 -07:00
Josh Baker 65bbebbdf7
Fixed typo 2021-12-08 09:42:11 -07:00
tidwall db0033701c Set array index as key for ForEach
See #248
2021-11-30 17:20:07 -07:00
Josh Baker bd76212030
Add syntax badge 2021-11-30 10:22:50 -07:00
tidwall 9eae1fa87b Added JSON Literals 2021-11-30 10:18:36 -07:00
tidwall d3a134957c Fix modifier bug in multipath selector
Closes #253
2021-11-25 13:57:06 -07:00
tidwall 6b6af2ad5e Added new static value character
You can use the '!' character to define static json as a path
component.

For example,

  {name.last,"foo":!"bar"} => {name.last,"foo":"bar"}

see #249
2021-11-10 09:18:18 -07:00
tidwall 2c9fd2476a Added Path and Paths for getting the original path of a Result
This commit adds a two new functions of the Result type:

- Result.Path:  Returns the original path of a `Result` that was
                returned from a simple `Get` operation.
- Result.Paths: Returns the original paths of a `Result` that was
                returned from a `Get` operation with a query.

See issue #206 for more details
2021-10-29 17:30:57 -07:00
tidwall 7cadbb5756 Ensure Parse handles NaN/Inf and returns correct Index 2021-10-28 09:09:00 -07:00
tidwall 0b52f9a361 Fix empty string operator not matching
fixes #246
2021-10-25 07:11:04 -07:00
tidwall 8ac7a764ca Update README.md 2021-10-22 05:10:12 -07:00
tidwall 5784e4879e cleanup test 2021-10-22 04:05:41 -07:00
tidwall 0cbc0f402f Accept NaN/Inf
This commit allows for NaN and Inf numbers.

see #242
2021-10-22 04:00:22 -07:00
tidwall 35fa0d71c8 Added @keys and @values modifiers
The "@keys" and "@values" modifiers converts an object into an
array of its keys or values respectively.

Take this json for example:

{"first":"Tom","last":"Smith"}

@keys   -> ["first","last"]
@values -> ["Tom","Smith"]

This feature was requested in #161.
2021-10-20 16:31:29 -07:00
tidwall 4fe1916c56 The Array method should return back one item for JSON objects.
This commit fixes an issue where the Array method was not
returning single value arrays when the reciever Result was a
JSON Object.

fixes #240
2021-10-12 10:52:30 -07:00
tidwall 77a57fda87 Limit the complexity of "like" queries that match on a pattern.
This commit adds the uses the MatchLimit function, which it the
same as Match but will limit the complexity of the input pattern.
This is to avoid long running matches, specifically to avoid ReDos
attacks from arbritary inputs.
2021-10-08 07:42:49 -07:00
tidwall 590010fdac Update match dependency
This commit updates the github.com/tidwall/match library, which
address an issue where it's possible to produce a ReDos attack.

fixes #236
2021-10-04 11:46:58 -07:00
tidwall 61273bfa66 Update dependency 2021-09-15 05:37:28 -07:00
Josh Baker 78289be4ed
Create FUNDING.yml 2021-09-07 05:54:48 -07:00
tidwall 75046d2a7a Update comments 2021-09-01 07:33:46 -07:00
Josh Baker 5827eb3b24
Merge pull request #226 from ifraixedes/if/fix-doc-map-method
Fix Map method documentation
2021-09-01 07:27:29 -07:00
tidwall 807836a222 Minor update 2021-09-01 07:25:06 -07:00
tidwall 44b8c19d87 Minor update to test 2021-09-01 07:24:15 -07:00
tidwall 160fb9d6a1 Updated comments 2021-09-01 07:24:00 -07:00
Josh Baker 52919fa7b0
Merge pull request #222 from sspaink/arrayindex
Add support to return multiple indexes when multiple matches are found
2021-09-01 07:17:47 -07:00
Ivan Fraixedes 21a77fab7d
Fix Map method documentation
Fix a typo in the Map method documentation and describes what it returns
when the value isn't JSON to look like the Array method documentation.
2021-07-19 10:56:18 +02:00
Sebastian Spaink 7405f21134 Rename to indexes
Set to nil when modifiers used
2021-07-09 18:15:56 -05:00
Josh a5e52e5b06
Merge pull request #225 from MicahParks/master
Quick typo
2021-07-07 07:06:43 -07:00
Micah Parks d3daff0185 Quick typo. 2021-07-06 21:52:23 -04:00
Bas 7460ecfe69 Fix test 2021-07-01 06:00:44 -05:00
Bas 9b49f6eef5 Undo unnecessary change 2021-07-01 05:58:26 -05:00
Bas 73b86a9fc9 Support queries 2021-07-01 05:58:24 -05:00
Sebastian Spaink 34ea511746 Support getting index for hastags 2021-07-01 05:57:36 -05:00
tidwall 2feb4037b4 Fix escaped strings missing double quote
fixes #223
2021-06-30 13:18:28 -07:00
tidwall ca5c4b1e26 Update SYNTAX.md 2021-05-14 09:08:32 -07:00
tidwall 7a0721334f Fix syntax 2021-05-14 09:02:12 -07:00
tidwall 3c11634522 Update SYNTAX.md 2021-05-14 08:58:36 -07:00
tidwall d7dbdd1d92 Add tilde boolean operator
This commit adds the new tilde '~' operator, which when used will
convert a value to a boolean before comparison.

For example, using the following JSON:

    {
      "vals": [
        { "a": 1, "b": true },
        { "a": 2, "b": true },
        { "a": 3, "b": false },
        { "a": 4, "b": "0" },
        { "a": 5, "b": 0 },
        { "a": 6, "b": "1" },
        { "a": 7, "b": 1 }
        { "a": 8, "b": "true" },
        { "a": 9, "b": false }
        { "a": 10, "b": null }
        { "a": 11 }
      ]
    }

You can now query for all true(ish) values:

    vals.#(b==~true)#

Which returns:

    [1,2,6,7,8]

Or all false(ish) values:

    vals.#(b==~false)#

Which returns:

    [3,4,5,9,10,11]

The last value which was non-existent is treated as "false"
2021-05-14 08:53:58 -07:00
Josh Baker 51e0e24a13
Delete file 2021-05-12 12:38:01 -07:00
tidwall d9710733f0 Allow escaped string characters in query values
Fixes #215
2021-04-19 09:43:16 -07:00