#if (!$singlePage)
---
layout: documentation
title: ${ruleFamily.name} Rules
---
#end
#if (!$singlePage)
#parse("com/google/devtools/build/docgen/templates/be/header.vm")
#end

<h1>${ruleFamily.name} Rules</h1>

<div class="toc">
  <h2>Rules</h2>
  <ul>
#foreach ($rule in $ruleFamily.rules)
    <li>
      <a href="#${rule.ruleName}">
        ${rule.ruleName}#if($rule.isDeprecated()) (deprecated)#end
      </a>
    </li>
#end
  </ul>
</div>

#foreach ($rule in $ruleFamily.rules)
  <h2 id="${rule.ruleName}"#if($rule.isDeprecated()) class="deprecated"#end>
    ${rule.ruleName}
  </h2>

  <pre class="rule-signature">${rule.attributeSignature}</pre>

  $rule.htmlDocumentation

  <h3 id="${rule.ruleName}_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="${rule.ruleName}.name"><code>name</code></td>
        <td>
          <p><code><a href="../build-ref.html#name">Name</a>; required</code></p>
          <p>A unique name for this target.</p>
          ${rule.nameExtraHtmlDoc}
        </td>
      </tr>
    #foreach ($attribute in $rule.attributes)
      #if (!$attribute.isCommonType())
      <tr>
        <td id="${rule.ruleName.toLowerCase()}.${attribute.attributeName}"#if($attribute.isDeprecated()) class="deprecated"#end>
          <code>${attribute.attributeName}</code>
        </td>
        <td>
          #if (!$attribute.synopsis.isEmpty())
          <p><code>${attribute.synopsis}</code></p>
          #end
          $attribute.htmlDocumentation
        </td>
      </tr>
      #end
    #end
    </tbody>
  </table>
  #if ($rule.isPublicByDefault())
    The default visibility is public: <code>visibility = ["//visibility:public"]</code>.
  #end
#end

#if (!$singlePage)
#parse("com/google/devtools/build/docgen/templates/be/footer.vm")
#end
