Support ."foo" syntax for accessing fields. See #141.

This commit is contained in:
Stephen Dolan committed 2013-06-11 22:26:39 +01:00
1 parent c8ab67be27
commit 81e2336ace
3 files changed
+17 -1

No files matched your search

+7 -1
View File
@@ -160,10 +160,13 @@ sections:
- title: "`.foo`"
body: |
The simplest *useful* filter is .foo. When given a
The simplest *useful* filter is `.foo`. When given a
JSON object (aka dictionary or hash) as input, it produces
the value at the key "foo", or null if there's none present.
If the key contains special characters, you need to surround
it with double quotes like this: `."foo$"`.
examples:
- program: '.foo'
input: '{"foo": 42, "bar": "less interesting data"}'
@@ -171,6 +174,9 @@ sections:
- program: '.foo'
input: '{"notfoo": true, "alsonotfoo": false}'
output: ['null']
- program: '."foo"'
input: '{"foo": 42}'
output: [42]
- title: "`.[foo]`, `.[2]`, `.[10:15]`"
body: |
+6
View File
@@ -406,6 +406,12 @@ Term FIELD {
FIELD {
$$ = gen_index(gen_noop(), gen_const($1));
} |
Term '.' String {
$$ = gen_index($1, $3);
} |
'.' String {
$$ = gen_index(gen_noop(), $2);
} |
'.' error {
FAIL(@$, "try .[\"field\"] instead of .field for unusually named fields");
$$ = gen_noop();
+4
View File
@@ -115,6 +115,10 @@ null
{"foo": {"bar": 42}, "bar": "badvalue"}
42
."foo"."bar"
{"foo": {"bar": 20}}
20
#
# Multiple outputs, iteration