构建的宏配方。

zc.recipe.macro的Python项目详细描述


宏快速启动

macro是一组允许部分甚至部分 从宏节和参数节动态创建。这使得 使其数据与其输出格式分离的构建。

基本用途

在宏的最基本用法中,节调用自身的宏,并且 使用自身作为参数提供程序。 构建:

[buildout]
parts = hard-rocker

[rock]
question = Why do I rock $${:rocking-style}?

[hard-rocker]
recipe = zc.recipe.macro
macro = rock
rocking-style = so hard

结果:

[hard-rocker]
recipe = zc.recipe.macro:empty
result-sections = hard-rocker
rocking-style = so hard
question = Why do I rock so hard?

配方更改为zc.recipe.macro:empty,这是一个什么都不做的配方, 因为调用secion必须是执行recipes的一部分,并且 buildout要求零件有一个配方,所以不能清空。

默认值

可以在宏中包含参数的默认值。

构建:

[buildout]
parts = hard-rocker

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = so hard

[hard-rocker]
recipe = zc.recipe.macro
macro = rock

结果:

[hard-rocker]
recipe = zc.recipe.macro:empty
result-sections = hard-rocker
rocking-style = so hard
question = Why do I rock so hard?

创建部件

当然,如果只能创建部分,这就没有什么意义了 用一个假食谱。这就是result recipe选项出现的地方。

构建:

[buildout]
parts = hard-rocker

[rock]
question = Why do I rock $${:rocking-style}?

[hard-rocker]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:test1
macro = rock
rocking-style = so hard

结果:

[hard-rocker]
recipe = zc.recipe.macro:test1
result-sections = hard-rocker
question = Why do I rock so hard?
rocking-style = so hard

目标

通常,人们希望创建多个新分区。这是可能的 目标选项。但是,只有当一个可以提供多个 参数的来源。幸运的是,你可以。每个新部分都可以选择 后跟冒号和用于参数的节的名称。

构建:

[buildout]
parts = rockers hard-rocker socks-rocker tired-rocker

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}

[hard-rocker-parameters]
rocking-style = so hard

[socks-rocker-parameters]
rocking-style = my socks

[tired-rocker-parameters]
rocking-style = all night

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:empty
macro = rock
targets =
    hard-rocker:hard-rocker-parameters
    socks-rocker:socks-rocker-parameters
    tired-rocker:tired-rocker-parameters

结果:

[rockers]
recipe = zc.recipe.macro:empty
result-sections = hard-rocker socks-rocker tired-rocker

[hard-rocker]
recipe = zc.recipe.macro:empty
rocking-style = so hard
question = Why do I rock so hard?

[socks-rocker]
recipe = zc.recipe.macro:empty
rocking-style = my socks
question = Why do I rock my socks?

[tired-rocker]
recipe = zc.recipe.macro:empty
rocking-style = all night
question = Why do I rock all night?

在前面的例子中,我们在 ${buildout:parts}。这很脆弱,因为有人可能会更改 目标或按字母顺序排列明细表。调用将有一个 它在result sections变量中修改的节,在 宏被执行。

构建:

[buildout]
parts = ${rockers:result-sections}

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}

[hard-rocker-parameters]
rocking-style = so hard

[socks-rocker-parameters]
rocking-style = my socks

[tired-rocker-parameters]
rocking-style = all night

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:test1
macro = rock
targets =
    hard-rocker:hard-rocker-parameters
    socks-rocker:socks-rocker-parameters
    tired-rocker:tired-rocker-parameters

结果:

[rockers]
result-sections = hard-rocker socks-rocker tired-rocker

[hard-rocker]
question = Why do I rock so hard?
recipe = zc.recipe.macro:test1
rocking-style = so hard

[socks-rocker]
question = Why do I rock my socks?
recipe = zc.recipe.macro:test1
rocking-style = my socks

[tired-rocker]
question = Why do I rock all night?
recipe = zc.recipe.macro:test1
rocking-style = all night

结果部分配方的优先顺序

result部分的recipe选项的源具有 优先顺序如下:

1) recipe in the parameters section of the macro target
2) result-recipe in the parameters section for the macro target
3) result-recipe in the macro invocation
4) recipe in the macro definition

以下测试将说明这些规则,从规则4和 越来越多。

在下面的构建中,rock:recipe将用于[硬摇滚] 因为第4条的规定,我们把它作为菜谱。 构建:

[buildout]
parts = rockers

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}
recipe = zc.recipe.macro:test4

[hard-rocker-parameters]
rocking-style = so hard

[rockers]
recipe = zc.recipe.macro
macro = rock
targets = hard-rocker:hard-rocker-parameters

结果:

[hard-rocker]
question = Why do I rock so hard?
recipe = zc.recipe.macro:test4
rocking-style = so hard

在下面的构建中,由于规则3,将使用${rockers:result recipe}。 构建:

[buildout]
parts = rockers

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}
recipe = zc.recipe.macro:test4

[hard-rocker-parameters]
rocking-style = so hard

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:test3
macro = rock
targets = hard-rocker:hard-rocker-parameters

结果:

[hard-rocker]
question = Why do I rock so hard?
recipe = zc.recipe.macro:test3
rocking-style = so hard

在下面的构建中,由于规则2,将使用${hard rocker parameters:result recipe}。 构建:

[buildout]
parts = rockers

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}
recipe = zc.recipe.macro:test4

[hard-rocker-parameters]
result-recipe = zc.recipe.macro:test2
rocking-style = so hard

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:test3
macro = rock
targets = hard-rocker:hard-rocker-parameters

结果:

[hard-rocker]
question = Why do I rock so hard?
recipe = zc.recipe.macro:test2
rocking-style = so hard

在下面的构建中,由于规则1,将使用${hard rocker parameters:recipe}。 构建:

[buildout]
parts = rockers

[rock]
question = Why do I rock $${:rocking-style}?
rocking-style = $${:rocking-style}
recipe = zc.recipe.macro:test4

[hard-rocker-parameters]
recipe = zc.recipe.macro:test1
result-recipe = zc.recipe.macro:test2
rocking-style = so hard

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:test3
macro = rock
targets = hard-rocker:hard-rocker-parameters

结果:

[hard-rocker]
question = Why do I rock so hard?
recipe = zc.recipe.macro:test1
rocking-style = so hard

特殊变量

macro使用“name”来表示宏所在节的名称 被调用。这使得人们不知道特定的 但仍在输出中使用。

构建:

[buildout]
parts = rockers

[rock]
question = Why does $${:__name__} rock $${:rocking-style}?

[hard-rocker-parameters]
rocking-style = so hard

[socks-rocker-parameters]
rocking-style = my socks

[tired-rocker-parameters]
rocking-style = all night

[rockers]
recipe = zc.recipe.macro
result-recipe = zc.recipe.macro:empty
macro = rock
targets =
    hard-rocker:hard-rocker-parameters
    socks-rocker:socks-rocker-parameters
    tired-rocker:tired-rocker-parameters

结果:

[rockers]
recipe = zc.recipe.macro:empty
result-sections = hard-rocker socks-rocker tired-rocker

[hard-rocker]
question = Why does hard-rocker rock so hard?
recipe = zc.recipe.macro:empty

[socks-rocker]
question = Why does socks-rocker rock my socks?
recipe = zc.recipe.macro:empty

[tired-rocker]
question = Why does tired-rocker rock all night?
recipe = zc.recipe.macro:empty

更改

1.3.0(2009-07-22)

  • 结果部分的配方选项现在从下面的 来源,按以下顺序:

    1. recipe in the parameters section of the macro target
    2. result-recipe in the parameters section for the macro target
    3. result-recipe in the macro invocation
    4. recipe in the macro definition
  • 更正一个rest错误,该错误阻止软件包与 文件编号0.4。

1.2.5(2009-03-05)

  • 已从文档中删除版本部分。
  • 提高了测试覆盖率。
  • 使用manuel测试quickstart.txt。
  • 宏调用将增加一个列出节的result sections值 他们修改或创造。
  • readme.txt现在主要是手工制作的。

1.2.4(2008-07-18)

  • 修正了当宏使用 默认值和选项n读到默认值,选项就出来了 首先迭代,添加回归测试。
  • 更改测试设置,以便通过调用方法而不是 而不是创建子流程。这使得覆盖鞭子可以在 bin/test,并对测试输出进行调试和模拟 更容易的。
  • 修正了目标的添加,这样当一个调用时它们将正确显示 buildout.keys()。

1.2.3(2008-07-11)

  • 修复了更改rest中的一个错误

1.2.2(2008-07-11)

  • 修复了setup.py中未导入setuptools的错误
  • 将changes.txt中的日期格式更改为yyyy-mm-dd

1.2.1(2008-07-10)

  • 修复了快速启动中的一个错误

1.2.0(2008-07-10)

  • 首次发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Java中使用BufferedReader类读取文本文件的子字符串   java如何在JSP页面上包含来自另一台服务器的动态JSP   使用单表策略的java持久化Hibernate继承映射   java报告状态失败达600秒。谋杀!报告hadoop的进展   java将字符串解析为形状   使用JTable的java ClassCastException?   java在Spring引导中关闭数据库   java Android Studio调试错误(Ubuntu)   java如何区分apache beam中KV实例中的两个键?   java将RealmObjectChangeListener添加到异步下载的RealmObject   java匹配模式之前的所有内容,包括新行和/或回车   java使用JAXB在XML中动态更改元素序列   java如何在MACOS中找到动态库(.dylib文件)的版本   Android中的java Nanohttpd服务器   java libGDX:3d动画不工作