summaryrefslogtreecommitdiffstats
path: root/docs/content/functions/math.md
blob: 6375ad738e72f91d3dd12634f6639ee39be4d2c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
title: Math
description: Hugo provides six mathematical operators in templates.
godocref:
date: 2017-02-01
publishdate: 2017-02-01
lastmod: 2017-02-01
#tags: [math, operators]
categories: [functions]
menu:
  docs:
    parent: "functions"
toc:
signature: []
workson: []
hugoversion:
relatedfuncs: []
deprecated: false
draft: false
aliases: []
---

There are 6 basic mathematical operators that can be used in Hugo templates:

| Function | Description              | Example                       |
| -------- | ------------------------ | ----------------------------- |
| `add`    | Adds two integers.       | `{{add 1 2}}` → 3        |
| `div`    | Divides two integers.    | `{{div 6 3}}` → 2        |
| `mod`    | Modulus of two integers. | `{{mod 15 3}}` → 0       |
| `modBool`| Boolean of modulus of two integers. Evaluates to `true` if = 0. | `{{modBool 15 3}}` → true |
| `mul`    | Multiplies two integers. | `{{mul 2 3}}` → 6        |
| `sub`    | Subtracts two integers.  | `{{sub 3 2}}` → 1        |

## Use `add` with Strings

You can also use the `add` function with strings. You may like this functionality in many use cases, including creating new variables by combining page- or site-level variables with other strings.

For example, social media sharing with [Twitter Cards][cards] requires the following `meta` link in your site's `<head>` to display Twitter's ["Summary Card with Large Image"][twtsummary]:

```
<meta name="twitter:image" content="https://example.com/images/my-twitter-image.jpg">
```

Let's assume you have an `image` field in the front matter of each of your content files:

```
---
title: My Post
image: my-post-image.jpg
---
```

You can then concatenate the `image` value (string) with the path to your `images` directory in `static` and leverage a URL-related templating function for increased flexibility:

{{< code file="partials/head/twitter-card.html" >}}
{{$socialimage := add "images/" .Params.image}}
<meta name="twitter:image" content="{{ $socialimage | absURL }}">
{{< /code >}}

{{% note %}}
The `add` example above makes use of the [`absURL` function](/functions/absurl/). `absURL` and its relative companion `relURL` is the recommended way to construct URLs in Hugo.
{{% /note %}}

[cards]: https://dev.twitter.com/cards/overview
[twtsummary]: https://dev.twitter.com/cards/types/summary-large-image