From 64cae07b2f17f5b1d528dc0e5f1cac4a28116973 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sun, 2 Apr 2023 16:35:41 +0200 Subject: [PATCH] Add ansible-doc text output (#36) * Add ansible-doc text output handling. * Add updated test vectors from Python project. * Add changelog. * Fix formatting. --- changelogs/fragments/36-ansible-doc-text.yml | 2 + src/ansible-doc-text.spec.ts | 17 ++ src/ansible-doc-text.ts | 51 ++++ src/index.ts | 1 + src/opts.ts | 2 + src/vectors.spec.ts | 8 + test-vectors.yaml | 248 +++++++++++++++++++ 7 files changed, 329 insertions(+) create mode 100644 changelogs/fragments/36-ansible-doc-text.yml create mode 100644 src/ansible-doc-text.spec.ts create mode 100644 src/ansible-doc-text.ts diff --git a/changelogs/fragments/36-ansible-doc-text.yml b/changelogs/fragments/36-ansible-doc-text.yml new file mode 100644 index 0000000..8ae97c7 --- /dev/null +++ b/changelogs/fragments/36-ansible-doc-text.yml @@ -0,0 +1,2 @@ +minor_changes: + - "Add support for ansible-doc like text output (https://github.com/ansible-community/antsibull-docs-ts/pull/36)." diff --git a/src/ansible-doc-text.spec.ts b/src/ansible-doc-text.spec.ts new file mode 100644 index 0000000..636f3de --- /dev/null +++ b/src/ansible-doc-text.spec.ts @@ -0,0 +1,17 @@ +/* + Simplified BSD License (see LICENSES/BSD-2-Clause.txt or https://opensource.org/licenses/BSD-2-Clause) + SPDX-FileCopyrightText: Ansible Project + SPDX-License-Identifier: BSD-2-Clause +*/ + +import { toAnsibleDocText } from './ansible-doc-text'; +import { PartType } from './dom'; + +describe('toRST tests', (): void => { + it('no paragraphs', (): void => { + expect(toAnsibleDocText([])).toBe(''); + }); + it('single paragraph with simple text', (): void => { + expect(toAnsibleDocText([[{ type: PartType.TEXT, text: 'test' }]])).toBe('test'); + }); +}); diff --git a/src/ansible-doc-text.ts b/src/ansible-doc-text.ts new file mode 100644 index 0000000..d9eac52 --- /dev/null +++ b/src/ansible-doc-text.ts @@ -0,0 +1,51 @@ +/* + Simplified BSD License (see LICENSES/BSD-2-Clause.txt or https://opensource.org/licenses/BSD-2-Clause) + SPDX-FileCopyrightText: Ansible Project + SPDX-License-Identifier: BSD-2-Clause +*/ + +import { AnsibleDocTextOptions, AllFormatOptions, mergeOpts, LinkProviders } from './opts'; +import { OptionNamePart, Paragraph, ReturnValuePart } from './dom'; +import { addToDestination } from './format'; + +function formatOptionLike(part: OptionNamePart | ReturnValuePart): string { + let text = part.value === undefined ? `\`${part.name}'` : `\`${part.name}=${part.value}'`; + if (part.plugin) { + const plugin_suffix = ['role', 'module', 'playbook'].includes(part.plugin.type) ? '' : ' plugin'; + let plugin = `${part.plugin.type}${plugin_suffix} ${part.plugin.fqcn}`; + if (part.plugin.type === 'role' && part.entrypoint !== undefined) { + plugin = `${plugin}, ${part.entrypoint} entrypoint`; + } + text = `${text} (of ${plugin})`; + } + return text; +} + +const DEFAULT_FORMATTER: AllFormatOptions = { + formatError: (part) => `[[ERROR while parsing: ${part.message}]]`, + formatBold: (part) => `*${part.text}*`, + formatCode: (part) => `\`${part.text}'`, + formatHorizontalLine: () => '\n-------------\n', + formatItalic: (part) => `\`${part.text}'`, + formatLink: (part) => `${part.text} <${part.url}>`, + formatModule: (part) => `[${part.fqcn}]`, + formatRSTRef: (part) => part.text, + formatURL: (part) => part.url, + formatText: (part) => part.text, + formatEnvVariable: (part) => `\`${part.name}'`, + formatOptionName: (part) => formatOptionLike(part), + formatOptionValue: (part) => `\`${part.value}'`, + formatPlugin: (part) => `[${part.plugin.fqcn}]`, + formatReturnValue: (part) => formatOptionLike(part), +}; + +export function toAnsibleDocText(paragraphs: Paragraph[], opts?: AnsibleDocTextOptions): string { + const mergedOpts = mergeOpts(Object.assign({} as LinkProviders, opts), DEFAULT_FORMATTER); + const result: string[] = []; + for (const paragraph of paragraphs) { + const line: string[] = []; + addToDestination(line, paragraph, mergedOpts); + result.push(line.join('')); + } + return result.join('\n\n'); +} diff --git a/src/index.ts b/src/index.ts index e082983..6f9077d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,6 +9,7 @@ export { parse } from './parser'; export * as dom from './dom'; // Output +export { toAnsibleDocText } from './ansible-doc-text'; export { quoteHTML, toHTML } from './html'; export { quoteMD, toMD } from './md'; export { quoteRST, toRST } from './rst'; diff --git a/src/opts.ts b/src/opts.ts index 73e6f40..d1f84a7 100644 --- a/src/opts.ts +++ b/src/opts.ts @@ -120,6 +120,8 @@ export interface MDOptions extends CommonExportOptions, CommonFormatOptions, Lin export interface RSTOptions extends CommonExportOptions, CommonFormatOptions {} +export interface AnsibleDocTextOptions extends CommonExportOptions, CommonFormatOptions {} + export function mergeOpts(options: T, fallback: AllFormatOptions): T & AllFormatOptions { /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ const result: any = Object.assign({}, fallback, options); diff --git a/src/vectors.spec.ts b/src/vectors.spec.ts index 503aa56..69a266d 100644 --- a/src/vectors.spec.ts +++ b/src/vectors.spec.ts @@ -12,6 +12,7 @@ import { parse } from './parser'; import { toHTML } from './html'; import { toMD } from './md'; import { toRST } from './rst'; +import { toAnsibleDocText } from './ansible-doc-text'; describe('vectors', (): void => { const data = readFileSync('test-vectors.yaml', 'utf8'); @@ -56,5 +57,12 @@ describe('vectors', (): void => { expect(toRST(parse(test_data.source, test_data.parse_opts), test_data.rst_opts)).toEqual(test_data.rst); }); } + if (test_data.source !== undefined && test_data.ansible_doc_text !== undefined) { + it(`${test_name} (Ansible doc => ansible-doc text output)`, (): void => { + expect( + toAnsibleDocText(parse(test_data.source, test_data.parse_opts), test_data.ansible_doc_text_opts), + ).toEqual(test_data.ansible_doc_text); + }); + } } }); diff --git a/test-vectors.yaml b/test-vectors.yaml index 40aa2a7..f16ccd6 100644 --- a/test-vectors.yaml +++ b/test-vectors.yaml @@ -10,12 +10,14 @@ test_vectors: html_plain: '' rst: '' md: '' + ansible_doc_text: '' empty_content: source: [''] html:

html_plain:

md: ' ' rst: '\ ' + ansible_doc_text: '' simple: source: |- This is a C(test) I(module) B(markup). @@ -27,6 +29,7 @@ test_vectors: This is a test module markup. rst: |- This is a \ :literal:`test`\ \ :emphasis:`module`\ \ :strong:`markup`\ . + ansible_doc_text: This is a `test' `module' *markup*. module: source: |- The M(a.b.c) module. @@ -48,6 +51,7 @@ test_vectors: lambda plugin_data: f"https://docs.ansible.com/ansible/devel/collections/{plugin_data.fqcn.replace('.', '/')}_{plugin_data.type}.html" rst: |- The \ :ref:`a.b.c `\ module. + ansible_doc_text: The [a.b.c] module. module_no_link: source: |- The M(a.b.c) module. @@ -59,6 +63,7 @@ test_vectors: The a.b.c module. rst: |- The \ :ref:`a.b.c `\ module. + ansible_doc_text: The [a.b.c] module. plugin: source: |- The P(a.b.c#lookup) lookup plugin. @@ -80,6 +85,7 @@ test_vectors: lambda plugin_data: f"https://docs.ansible.com/ansible/devel/collections/{plugin_data.fqcn.replace('.', '/')}_{plugin_data.type}.html" rst: |- The \ :ref:`a.b.c `\ lookup plugin. + ansible_doc_text: The [a.b.c] lookup plugin. plugin_no_link: source: |- The P(a.b.c#lookup) lookup plugin. @@ -91,6 +97,7 @@ test_vectors: The a.b.c lookup plugin. rst: |- The \ :ref:`a.b.c `\ lookup plugin. + ansible_doc_text: The [a.b.c] lookup plugin. link_and_url: source: |- An URL U(https://example.com) and L(a link, https://example.org). @@ -102,6 +109,7 @@ test_vectors: An URL [https\://example.com](https\://example.com) and [a link](https\://example.org). rst: |- An URL \ https://example.com\ and \ `a link `__\ . + ansible_doc_text: An URL https://example.com and a link . rst_ref: source: |- A R(RST reference, ansible_collections.community.general.ufw_module). @@ -113,6 +121,7 @@ test_vectors: A RST reference. rst: |- A \ :ref:`RST reference `\ . + ansible_doc_text: A RST reference. horizontal_line: source: |- foo HORIZONTALLINE bar @@ -129,6 +138,10 @@ test_vectors:
+ bar + ansible_doc_text: |- + foo + ------------- bar semantic_markup: source: |- @@ -141,6 +154,7 @@ test_vectors: foo FOOBAR bar foo.bar.baz has value foo\)\,bar\\bam . rst: |- foo \ :envvar:`FOOBAR`\ bar \ :ref:`foo.bar.baz `\ has value \ :ansval:`\ foo),bar\\bam \ `\ . + ansible_doc_text: foo `FOOBAR' bar [foo.bar.baz] has value ` foo),bar\bam '. option_name_no_current_plugin: source: - |- @@ -219,6 +233,30 @@ test_vectors: \ :ansopt:`foo=`\ \ :ansopt:`bar.baz[123].bam[len(x) - 1]=`\ \ :ansopt:`foo=bar`\ \ :ansopt:`bar.baz[123].bam[len(x) - 1]=bar`\ + ansible_doc_text: |- + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' option_name_current_plugin: source: - |- @@ -301,6 +339,30 @@ test_vectors: current_plugin: fqcn: foo.bar.baz.bam type: boo + ansible_doc_text: |- + `foo' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]' (of boo plugin foo.bar.baz.bam) + + `foo=' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=' (of boo plugin foo.bar.baz.bam) + + `foo=bar' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=bar' (of boo plugin foo.bar.baz.bam) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' option_name_current_role: source: - |- @@ -402,6 +464,36 @@ test_vectors: fqcn: foo.bar.baz type: role role_entrypoint: main + ansible_doc_text: |- + `foo' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role foo.bar.baz, main entrypoint) + + `foo=' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role foo.bar.baz, main entrypoint) + + `foo=bar' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role foo.bar.baz, main entrypoint) + + `foo' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo=' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo=bar' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' option_name_no_current_plugin_w_links: source: - |- @@ -490,6 +582,30 @@ test_vectors: \ :ansopt:`foo=`\ \ :ansopt:`bar.baz[123].bam[len(x) - 1]=`\ \ :ansopt:`foo=bar`\ \ :ansopt:`bar.baz[123].bam[len(x) - 1]=bar`\ + ansible_doc_text: |- + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' option_name_current_plugin_w_links: source: - |- @@ -582,6 +698,30 @@ test_vectors: current_plugin: fqcn: foo.bar.baz.bam type: boo + ansible_doc_text: |- + `foo' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]' (of boo plugin foo.bar.baz.bam) + + `foo=' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=' (of boo plugin foo.bar.baz.bam) + + `foo=bar' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=bar' (of boo plugin foo.bar.baz.bam) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' option_name_current_role_w_links: source: - |- @@ -693,6 +833,36 @@ test_vectors: fqcn: foo.bar.baz type: role role_entrypoint: main + ansible_doc_text: |- + `foo' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role foo.bar.baz, main entrypoint) + + `foo=' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role foo.bar.baz, main entrypoint) + + `foo=bar' (of role foo.bar.baz, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role foo.bar.baz, main entrypoint) + + `foo' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo=' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo=bar' (of role foo.bar.baz, other_entrypoint entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role foo.bar.baz, other_entrypoint entrypoint) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]' (of role bam.baz.foo, main entrypoint) + + `foo=' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=' (of role bam.baz.foo, main entrypoint) + + `foo=bar' (of role bam.baz.foo, main entrypoint) `bar.baz[123].bam[len(x) - 1]=bar' (of role bam.baz.foo, main entrypoint) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' return_value_no_current_plugin: source: - |- @@ -753,6 +923,24 @@ test_vectors: \ :ansretval:`foo=`\ \ :ansretval:`bar.baz[123].bam[len(x) - 1]=`\ \ :ansretval:`foo=bar`\ \ :ansretval:`bar.baz[123].bam[len(x) - 1]=bar`\ + ansible_doc_text: |- + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' return_value_current_plugin: source: - |- @@ -817,6 +1005,24 @@ test_vectors: current_plugin: fqcn: foo.bar.baz.bam type: boo + ansible_doc_text: |- + `foo' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]' (of boo plugin foo.bar.baz.bam) + + `foo=' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=' (of boo plugin foo.bar.baz.bam) + + `foo=bar' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=bar' (of boo plugin foo.bar.baz.bam) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' return_value_no_current_plugin_w_links: source: - |- @@ -887,6 +1093,24 @@ test_vectors: \ :ansretval:`foo=`\ \ :ansretval:`bar.baz[123].bam[len(x) - 1]=`\ \ :ansretval:`foo=bar`\ \ :ansretval:`bar.baz[123].bam[len(x) - 1]=bar`\ + ansible_doc_text: |- + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' return_value_current_plugin_w_links: source: - |- @@ -961,6 +1185,24 @@ test_vectors: current_plugin: fqcn: foo.bar.baz.bam type: boo + ansible_doc_text: |- + `foo' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]' (of boo plugin foo.bar.baz.bam) + + `foo=' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=' (of boo plugin foo.bar.baz.bam) + + `foo=bar' (of boo plugin foo.bar.baz.bam) `bar.baz[123].bam[len(x) - 1]=bar' (of boo plugin foo.bar.baz.bam) + + `foo' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]' (of lookup plugin bam.baz.foo) + + `foo=' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=' (of lookup plugin bam.baz.foo) + + `foo=bar' (of lookup plugin bam.baz.foo) `bar.baz[123].bam[len(x) - 1]=bar' (of lookup plugin bam.baz.foo) + + `foo' `bar.baz[123].bam[len(x) - 1]' + + `foo=' `bar.baz[123].bam[len(x) - 1]=' + + `foo=bar' `bar.baz[123].bam[len(x) - 1]=bar' errors: source: - P(foo) @@ -982,3 +1224,9 @@ test_vectors: \ :strong:`ERROR while parsing`\ : While parsing C() at index 1 of paragraph 2: Cannot find closing ")" after last parameter\ \ :strong:`ERROR while parsing`\ : While parsing R() at index 1 of paragraph 3: Cannot find closing ")" after last parameter\ + ansible_doc_text: |- + [[ERROR while parsing: While parsing P() at index 1 of paragraph 1: Parameter "foo" is not of the form FQCN#type]] + + [[ERROR while parsing: While parsing C() at index 1 of paragraph 2: Cannot find closing ")" after last parameter]] + + [[ERROR while parsing: While parsing R() at index 1 of paragraph 3: Cannot find closing ")" after last parameter]]