<!-- 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.   |  <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 |  "" |


