使用 Asciidoctor,如何在 "include::" 期间排除标签之间的代码?

With Asciidoctor, how to exclude code between tags during an "include::"?

我知道如何在 include 期间通过使用标签在 Asciidoctor 中获取代码摘录。

您在代码中添加标签:

# tag::function[]
def get_something():
    return "Smile"
# end::function[]

if __name__ == "__main__":
    res = get_something()
    print(res)

并在您的 adoc 文件中指定这些标签:

[source, python]
----
include::my_code.py[tags=function]
----

我想做的是通过使用相同的标记机制来排除一些代码。

我的代码是这样的

def get_something():
    return "Smile"

# tag::main[]
if __name__ == "__main__":
    res = get_something()
    print(res)
# end::main[]

Asciidoc 文件可能如下所示:

[source, python]
----
include::my_code.py[exclude-tags=main]
----

知道怎么做吗?

实际上这个功能已经在问题 1516 中被请求并实现了。

mojavelinux 优雅地实现的解决方案是为要排除的标签添加 !

因此,解决方案是:

[source, python]
----
include::my_code.py[tags=!main]
----

关于本期语法的更多详细信息包括:

  • 使用多个标签 (tags=tag1;tag2)
  • 使用通配符(tags=*tags=!*tags=**