mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
caecb2297f
* Feature. Add chapter 'Lists of dictionaries' * Fix copyright and licensing. * Add maintainers for docsite chapter 'Lists of dictionaries'. * Generate docs keep_keys and remove_keys * Update integration tests of keep_keys and remove_keys * Update docs helpers of keep_keys and remove_keys * Fix copyright and licensing. * Fix remove license from templates. Cleanup. * Add docs helper replace_keys * Update integration test filter_replace_keys * Generate and update: filter_guide-abstract_informations-lists_of_dictionaries-replace_keys.rst * Formatting improved. * Fix results Jinja quotation marks. * Update docs/docsite/helper/keep_keys/filter_guide-abstract_informations-lists_of_dictionaries-keep_keys.rst.j2 Co-authored-by: Felix Fontein <felix@fontein.de> * Update docs/docsite/helper/keep_keys/filter_guide-abstract_informations-lists_of_dictionaries-keep_keys.rst.j2 Co-authored-by: Felix Fontein <felix@fontein.de> * Fix references. * Updated helpers. * Fix licenses. Simplified templates. * Fix licenses. * Fix README. --------- Co-authored-by: Felix Fontein <felix@fontein.de>
151 lines
3.5 KiB
ReStructuredText
151 lines
3.5 KiB
ReStructuredText
..
|
|
Copyright (c) Ansible Project
|
|
GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
keep_keys
|
|
"""""""""
|
|
|
|
Use the filter :ansplugin:`community.general.keep_keys#filter` if you have a list of dictionaries and want to keep certain keys only.
|
|
|
|
.. note:: The output of the examples in this section use the YAML callback plugin. Quoting: "Ansible output that can be quite a bit easier to read than the default JSON formatting." See :ansplugin:`the documentation for the community.general.yaml callback plugin <community.general.yaml#callback>`.
|
|
|
|
|
|
Let us use the below list in the following examples:
|
|
|
|
.. code-block:: yaml
|
|
|
|
input:
|
|
- k0_x0: A0
|
|
k1_x1: B0
|
|
k2_x2: [C0]
|
|
k3_x3: foo
|
|
- k0_x0: A1
|
|
k1_x1: B1
|
|
k2_x2: [C1]
|
|
k3_x3: bar
|
|
|
|
|
|
* By default, match keys that equal any of the items in the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1
|
|
|
|
target: ['k0_x0', 'k1_x1']
|
|
result: "{{ input | community.general.keep_keys(target=target) }}"
|
|
|
|
|
|
gives
|
|
|
|
.. code-block:: yaml
|
|
:emphasize-lines: 1-
|
|
|
|
result:
|
|
- {k0_x0: A0, k1_x1: B0}
|
|
- {k0_x0: A1, k1_x1: B1}
|
|
|
|
|
|
.. versionadded:: 9.1.0
|
|
|
|
* The results of the below examples 1-5 are all the same:
|
|
|
|
.. code-block:: yaml
|
|
:emphasize-lines: 1-
|
|
|
|
result:
|
|
- {k0_x0: A0, k1_x1: B0}
|
|
- {k0_x0: A1, k1_x1: B1}
|
|
|
|
|
|
1. Match keys that equal any of the items in the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: equal
|
|
target: ['k0_x0', 'k1_x1']
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
2. Match keys that start with any of the items in the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: starts_with
|
|
target: ['k0', 'k1']
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
3. Match keys that end with any of the items in target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: ends_with
|
|
target: ['x0', 'x1']
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
4. Match keys by the regex.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: regex
|
|
target: ['^.*[01]_x.*$']
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
5. Match keys by the regex.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: regex
|
|
target: ^.*[01]_x.*$
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
|
|
* The results of the below examples 6-9 are all the same:
|
|
|
|
.. code-block:: yaml
|
|
:emphasize-lines: 1-
|
|
|
|
result:
|
|
- {k0_x0: A0}
|
|
- {k0_x0: A1}
|
|
|
|
|
|
6. Match keys that equal the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: equal
|
|
target: k0_x0
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
7. Match keys that start with the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: starts_with
|
|
target: k0
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
8. Match keys that end with the target.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: ends_with
|
|
target: x0
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|
|
9. Match keys by the regex.
|
|
|
|
.. code-block:: yaml+jinja
|
|
:emphasize-lines: 1,2
|
|
|
|
mp: regex
|
|
target: ^.*0_x.*$
|
|
result: "{{ input | community.general.keep_keys(target=target, matching_parameter=mp) }}"
|
|
|