From 7c47cb06e8f529e494e2279aa10ba17277676c6c Mon Sep 17 00:00:00 2001 From: Nikita Gorskikh Date: Thu, 22 Dec 2022 20:13:19 +0300 Subject: [PATCH] Extend jsonprune modifier documentation --- .../docs.en.md | 7 +++++++ .../docs.ru.md | 15 +++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/01.general/02.how-to-create-your-own-ad-filters/docs.en.md b/01.general/02.how-to-create-your-own-ad-filters/docs.en.md index 15f70e68a..a08fe3af5 100644 --- a/01.general/02.how-to-create-your-own-ad-filters/docs.en.md +++ b/01.general/02.how-to-create-your-own-ad-filters/docs.en.md @@ -1445,6 +1445,13 @@ Basic URL exceptions shall not disable `$jsonprune` rules. They can be disabled > **Compatibility with different versions of AdGuard.** Rules with the `$jsonprune` modifier are supported by AdGuard for Windows, Mac and Android, **running CoreLibs version 1.10 or later**. +###### Nested JSONPath expressions + +> In AdGuard for Windows, Mac and Android, **running CoreLibs version 1.11 or later**, JSONPath expressions may be used as keys in filter expressions. + +* `||example.org^$jsonprune=\$.elems[?(has "\$.a.b.c")]` – remove all children of `elems` which have a property selectable by the JSONPath expression `$.a.b.c`. +* `||example.org^$jsonprune=\$.elems[?(key-eq "\$.a.b.c" "abc")]` – remove all children of `elems` which have a property selectable by the JSONPath expression `$.a.b.c` with a value equal to `"abc"`. + #### **`noop`** diff --git a/01.general/02.how-to-create-your-own-ad-filters/docs.ru.md b/01.general/02.how-to-create-your-own-ad-filters/docs.ru.md index 0a723b3b9..5c2b59af9 100644 --- a/01.general/02.how-to-create-your-own-ad-filters/docs.ru.md +++ b/01.general/02.how-to-create-your-own-ad-filters/docs.ru.md @@ -1424,18 +1424,25 @@ https://jsonpath.com/ * `$jsonprune` также можно отключить с помощью правил-исключений с модификаторами `$document`, `$content` и `$urlblock`. ##### Ограничения -* `$jsonprune` не могут иметь других модификаторов, кроме `$domain`, `$third-party`, `$app`, `$important`, `$match-case` и `$xmlhttprequest`. -* правила `$jsonprune` не будут применены к ответам размером больше 3 МБ. +* Правила `$jsonprune` не могут иметь других модификаторов, кроме `$domain`, `$third-party`, `$app`, `$important`, `$match-case` и `$xmlhttprequest`. +* Правила `$jsonprune` не будут применены к ответам размером больше 3 МБ. ##### Замечания -* Если несколько `$jsonprune` правил соответствуют одному запросу, их эффект суммируется. +* Если несколько правил `$jsonprune` соответствуют одному запросу, их эффект суммируется. ##### Примеры * `||example.org^$jsonprune=\$..[one\, "two three"]` — удалить все вхождения свойств "one" и "two three" в JSON-документ. * `||example.org^$jsonprune=\$.a[?(has ad_origin)]` — удалить всех прямых потомков `a`, которые обладают свойством `ad_origin`. * `||example.org^$jsonprune=\$.*.*[?(key-eq 'Some key' 'Some value')]` — удалить все элементы на уровне вложенности 3, обладающие свойством "Some key", равным "Some value". -> **Совместимость с разными версиями AdGuard.** Правила с модификатором `$jsonprune` поддерживаются в AdGuard для Windows, Mac и Android, **с CoreLibs версии 1.10 или выше**. +> **Совместимость с разными версиями AdGuard.** Правила с модификатором `$jsonprune` поддерживаются в AdGuard для Windows, Mac и Android **с CoreLibs версии 1.10 или выше**. + +###### Вложенные JSONPath-выражения + +> В AdGuard для Windows, Mac и Android **с CoreLibs версии 1.11 или выше** можно использовать JSONPath выражения в качестве ключей в "filter expression". + +* `||example.org^$jsonprune=\$.elems[?(has '\$.a.b.c')]` – удалить всех прямых потомков `elems`, у которых есть свойство, выбираемое JSONPath-выражением `$.a.b.c`. +* `||example.org^$jsonprune=\$.elems[?(key-eq "\$.a.b.c" "abc")]` – удалить всех прямых потомков `elems`, у которых есть свойство, выбираемое JSONPath-выражением `$.a.b.c` и равное `"abc"`. #### **`noop`**