#if (!$singlePage)
<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/_book.yaml">
</head>
<body>
#end
#if (!$singlePage)
#parse("com/google/devtools/build/docgen/templates/be/header.vm")
<html>
<body>
#end

<h1 class="page-title">${ruleFamily.name} Rules</h1>

{% dynamic setvar source_file "src/main/java/com/google/devtools/build/docgen/templates/be/rules.vm" %}
{% include "_buttons.html" %}

${ruleFamily.summary}

#if (!$singlePage)
<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>
#end

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

    <a class="button button-with-icon" href="https://github.com/bazelbuild/bazel/blob/master/${rule.workspaceRelativeFileName}" target="_blank">
  View rule source<span class="material-icons icon-after" aria-hidden="true">open_in_new</span>
  </a>
  
  <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="$expander.expandRef("build-ref#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>
#end

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