<!-- Generated with Stardoc: http://skydoc.bazel.build -->

<a name="#example_rule"></a>

## example_rule

<pre>
example_rule(<a href="#example_rule-name">name</a>, <a href="#example_rule-first">first</a>, <a href="#example_rule-second">second</a>)
</pre>

Small example of rule using a markdown template.

**ATTRIBUTES**


| Name  | Description | Type | Mandatory | Default |
| :-------------: | :-------------: | :-------------: | :-------------: | :-------------: |
| <a name="example_rule-name"></a>name |  A unique name for this target.   | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required |  |
| <a name="example_rule-first"></a>first |  This is the first attribute   | String | optional | "" |
| <a name="example_rule-second"></a>second |  -   | String | optional | "2" |


<a name="#ExampleProviderInfo"></a>

## ExampleProviderInfo

<pre>
ExampleProviderInfo(<a href="#ExampleProviderInfo-foo">foo</a>, <a href="#ExampleProviderInfo-bar">bar</a>, <a href="#ExampleProviderInfo-baz">baz</a>)
</pre>

Small example of provider using a markdown template.

**FIELDS**


| Name  | Description |
| :-------------: | :-------------: |
| <a name="ExampleProviderInfo-foo"></a>foo |  A string representing foo    |
| <a name="ExampleProviderInfo-bar"></a>bar |  A string representing bar    |
| <a name="ExampleProviderInfo-baz"></a>baz |  A string representing baz    |


<a name="#example_function"></a>

## example_function

<pre>
example_function(<a href="#example_function-foo">foo</a>, <a href="#example_function-bar">bar</a>)
</pre>

Small example of function using a markdown template.

**PARAMETERS**


| Name  | Description | Default Value |
| :-------------: | :-------------: | :-------------: |
| <a name="example_function-foo"></a>foo |  This parameter does foo related things.   |  none |
| <a name="example_function-bar"></a>bar |  This parameter does bar related things.<br><br>For example, it does things that require **multiple paragraphs** to explain.<br><br>Note: we should preserve the nested indent in the following code:<br><br><pre><code>json {     "key": "value" } </code></pre>   |  <code>"bar"</code> |


<a name="#example_aspect"></a>

## example_aspect

<pre>
example_aspect(<a href="#example_aspect-name">name</a>, <a href="#example_aspect-first">first</a>, <a href="#example_aspect-second">second</a>)
</pre>

Small example of aspect using a markdown template.

**ASPECT ATTRIBUTES**


| Name | Type |
| :-------------: | :-------------: |
| deps| String |
| attr_aspect| String |


**ATTRIBUTES**


| Name  | Description | Type | Mandatory | Default |
| :-------------: | :-------------: | :-------------: | :-------------: | :-------------: |
| <a name="example_aspect-name"></a>name |  A unique name for this target.   | <a href="https://bazel.build/docs/build-ref.html#name">Name</a> | required |   |
| <a name="example_aspect-first"></a>first |  -   | <a href="https://bazel.build/docs/build-ref.html#labels">Label</a> | required |   |
| <a name="example_aspect-second"></a>second |  This is the second attribute.   | String | optional |  "" |


