#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="${rule.sourceUrl}" 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><a href="$expander.expandRef("build-ref#name")">Name</a>; required</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>${attribute.synopsis}</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
