# Backward

{% hint style="info" %}
You can easily import all the functions from the <mark style="color:yellow;">`backward`</mark> registry by including the following import statement in your code

```go
import "github.com/go-sprout/sprout/registry/backward"
```

{% endhint %}

## <mark style="color:red;">Deprecated functions</mark>

### fail ⚠️

The `Fail` function creates an error with a specified message and returns a `nil` pointer along with the error. It is generally used to indicate failure in functions that return both a pointer and an error.

{% hint style="warning" %}
**\[DEPRECATED]** No replacement are scheduled yet. If you need this function, open an issue to clearly explain the usage.
{% endhint %}

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">Fail(message string) (*uint, error)
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ fail "Operation failed" }} // Error with "Operation failed"
```

{% endtab %}
{% endtabs %}

### urlParse ⚠️

The function parses a given URL string and returns a map containing its components, such as the scheme, host, path, query parameters, and more, allowing easy access and manipulation of the different parts of a URL.

{% hint style="warning" %}
**\[DEPRECATED]** No replacement are scheduled yet. If you need this function, open an issue to clearly explain the usage.
{% endhint %}

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">UrlParse(v string) (map[string]any, error)
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ "https://example.com/path?query=1#fragment" | urlParse }}
// Output: map[fragment:fragment host:example.com hostname:example.com path:path query:query scheme:https]
```

{% endtab %}
{% endtabs %}

### urlJoin ⚠️

The function constructs a URL string from a given map of URL components, assembling the various parts such as scheme, host, path, and query parameters into a complete URL.

{% hint style="warning" %}
**\[DEPRECATED]** No replacement are scheduled yet. If you need this function, open an issue to clearly explain the usage.
{% endhint %}

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">UrlJoin(d map[string]any) (string, error)
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ dict scheme="https" host="example.com" path="/path" query="query=1" opaque="opaque" fragment="fragment" | urlJoin }}
// Output: "https://example.com/path?query=1#fragment"

```

{% endtab %}
{% endtabs %}

### getHostByName⚠️

The function returns a random IP address associated with a given hostname, providing a way to resolve a hostname to one of its corresponding IP addresses.

{% hint style="warning" %}
**\[DEPRECATED]** No replacement are scheduled yet. If you need this function, open an issue to clearly explain the usage.
{% endhint %}

<table data-header-hidden><thead><tr><th width="164">Name</th><th>Value</th></tr></thead><tbody><tr><td>Signature</td><td><pre class="language-go"><code class="lang-go">GetHostByName(name string) (string, error)
</code></pre></td></tr></tbody></table>

{% tabs %}
{% tab title="Template Example" %}

```go
{{ getHostByName "localhost" }} // Output: "127.0.0.1"
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.atom.codes/sprout/registries/backward.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
