Skip to content

Commit ee11a29

Browse files
authored
chore: remove unneeded trailing whitespace (#1496)
1 parent a60894d commit ee11a29

21 files changed

+33
-33
lines changed

_includes/categories-list.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ <h3 class="widget-title">Blog Categories</h3>
99
<a class="spec" href="/cases.html">{{ category_first }}</a>
1010
{% else %}
1111
<a class="spec" href="/blog/categories.html#{{ category_first }}">{{ category_first }}</a>
12-
{% endif %}
12+
{% endif %}
1313
</li>
1414
{% endfor %}
1515
</ul>

_includes/pagination.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{% endif %}
88
{% endif %}
99

10-
10+
1111
{% if paginator.page == 1 %}
1212
<span class="page-numbers current">1</span>
1313
{% else %}

_includes/search.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ <h3>
77
<div class="widget search">
88
<form method="post" role="search" id="search-form" class="search-form" action="https://duckduckgo.com/?kg=p" onsubmit="document.getElementById('searchq').value = document.getElementById('searchfield').value + ' site:elixir-lang.org | site:hexdocs.pm/elixir | site:hexdocs.pm/mix | site:hexdocs.pm/eex | site:hexdocs.pm/logger | site:hexdocs.pm/iex | site:hexdocs.pm/ex_unit'; return true;">
99
<input type="hidden" id="searchq" name="q" value="" aria-hidden="true">
10-
10+
1111
<input class="search-text" type="search" placeholder="Search..." id="searchfield" aria-label="Search box">
1212
<input class="search-submit button" name="submit" type="submit" value="Search" aria-label="Search button">
1313
</form>

_layouts/post.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ <h2>{{ page.subtitle }}</h2>
1616
<a class="category" href="/cases.html">{{ category }}</a>
1717
{% else %}
1818
<a class="category" href="/blog/categories.html#{{ category }}">{{ category }}</a>
19-
{% endif %}
19+
{% endif %}
2020
{% endfor %}</div>
2121
</div>
2222

_posts/2020-08-20-embedded-elixir-at-farmbot.markdown

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,20 @@ Connor says that the Nerves Platform and what eventually became NervesHub was a
3131

3232
### 1. Nerves supports lean systems and operates well in low-bandwidth areas
3333

34-
Because Nerves bundles entire applications into relatively small archives in terms of firmware images for full Linux systems, Farmbot can use NervesHub to send over-the-air updates more quickly and users can download them faster. For comparison, an Android update generally clocks in at around 4 GB, but a Nerves update can be packed into as little as 12 MB.
34+
Because Nerves bundles entire applications into relatively small archives in terms of firmware images for full Linux systems, Farmbot can use NervesHub to send over-the-air updates more quickly and users can download them faster. For comparison, an Android update generally clocks in at around 4 GB, but a Nerves update can be packed into as little as 12 MB.
3535

36-
This is especially helpful for Farmbot users who operate in more remote locations with lower bandwidth and less reliable access to Wi-Fi. When an internet connection is available, NervesHub will connect and check if there's an update, and then prompt the user to install the update.
36+
This is especially helpful for Farmbot users who operate in more remote locations with lower bandwidth and less reliable access to Wi-Fi. When an internet connection is available, NervesHub will connect and check if there's an update, and then prompt the user to install the update.
3737

3838
### 2. Nerves adds convenience with low overhead
3939

40-
For devices that are already connected to the internet, connecting to Nerves requires no additional configuration because NervesHub is compatible with the current public key infrastructure for device-to-cloud communication. Since Farmbot already had internet-connected devices when they brought Nerves onboard, they were able to use the same "key" to sign in to NervesHub that they use for their cloud service.
40+
For devices that are already connected to the internet, connecting to Nerves requires no additional configuration because NervesHub is compatible with the current public key infrastructure for device-to-cloud communication. Since Farmbot already had internet-connected devices when they brought Nerves onboard, they were able to use the same "key" to sign in to NervesHub that they use for their cloud service.
4141

4242
### 3. Nerves has all the benefits of Elixir and Erlang
4343

4444
Because it's written in Elixir and built within the Erlang runtime system, Nerves retains the qualities of that language and framework — notably that they are distributed, fault-tolerant, soft real-time, and highly available. Connor also says that with Nerves, it's easy to reason about the things you build with Nerves because you only input what you need into a Nerves application, helping you to avoid unnecessary complexities or unforeseen security vulnerabilities. You can check up on devices as they're running and debug them without disruption to the user experience.
4545

4646
## The result
4747

48-
FarmBot now has around 300 devices live in NervesHub, with a different deployment for each of their device models. Nerves is built to scale, so as Farmbot continues to grow its user base and expand their product capabilities, they'll be able to continue developing and releasing reliable firmware updates using Nerves.
48+
FarmBot now has around 300 devices live in NervesHub, with a different deployment for each of their device models. Nerves is built to scale, so as Farmbot continues to grow its user base and expand their product capabilities, they'll be able to continue developing and releasing reliable firmware updates using Nerves.
4949

5050
*This case study has first been published on [Nerves' website](https://www.nerves-project.org/customer-farmbot)*.

_posts/2020-09-24-paas-with-elixir-at-Heroku.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ The growth of both Elixir teams has been mostly organic. Given there are multipl
6161

6262
According to Matthew Peck, "the paradigm shift from Object-Oriented languages to Functional Programming was our biggest challenge when first learning Elixir". However, the team agrees the investment was worth it: "Learning Elixir has made us better programmers. We have found that immutability made our code more readable, easier to test, and simpler to make concurrent. Now when we go back to an Object-Oriented language, we are thinking about how we can apply the same concepts there" - said Mike Hagerdon.
6363

64-
Amanda Dolan added some remarks on Elixir's capabilities for writing concurrent and fault-tolerant applications: "One other challenge when learning Elixir is fully grasping concurrency and the Erlang/OTP patterns". Some of them felt it took longer to master those concepts than they first expected.
64+
Amanda Dolan added some remarks on Elixir's capabilities for writing concurrent and fault-tolerant applications: "One other challenge when learning Elixir is fully grasping concurrency and the Erlang/OTP patterns". Some of them felt it took longer to master those concepts than they first expected.
6565

6666
Taylor Mock has his take on the challenges teams may face when adopting Elixir: "Another difference between Elixir and our previous stacks, Ruby and Node.js, is in the ecosystems". They were initially concerned that the Elixir ecosystem would lack when it comes to third-party tools, but that was not what they saw. Taylor continues: "We found out that we can get really far with the concepts and mechanisms that the language itself provides. This shift can be scary, but we are now past it, and we find ourselves with leaner applications and fewer dependencies".
6767

_posts/2020-10-08-real-time-communication-at-scale-with-elixir-at-discord.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Discord has also explored other technologies along the way, Go and Rust being tw
2626

2727
## Communication at scale
2828

29-
Effective communication plays an essential role when handling millions of connected users concurrently. To put things into perspective, some of Discord's most popular servers, such as those dedicated to Fortnite and Minecraft, are nearing six hundred thousand users. At a given moment, it is not unlikely to encounter more than two hundred thousand active users in those servers. If someone changes their username, Discord has to broadcast this change to all connected users.
29+
Effective communication plays an essential role when handling millions of connected users concurrently. To put things into perspective, some of Discord's most popular servers, such as those dedicated to Fortnite and Minecraft, are nearing six hundred thousand users. At a given moment, it is not unlikely to encounter more than two hundred thousand active users in those servers. If someone changes their username, Discord has to broadcast this change to all connected users.
3030

3131
Overall, Discord's communication runs at impressive numbers. They have crossed more than 12 million concurrent users across all servers, with more than 26 million WebSocket events to clients per second, and Elixir is powering all of this.
3232

_posts/2020-11-17-real-time-collaboration-with-elixir-at-slab.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ The trial went better than expected, and Jason's journey with Slab had officiall
2929

3030
## Growing with the platform
3131

32-
Shortly after, Slab was in a private beta with a handful of companies as users. For each major feature they had along the way, Elixir and Phoenix provided the building blocks for it. When they implemented real-time comments, they used Phoenix Channels and Phoenix PubSub. The pattern goes on: "for asynchronous processing, we simply use [Elixir tasks](https://hexdocs.pm/elixir/Task.html)". Later on, to track users editing a document and give each a different cursor color, they used [Phoenix Presence](https://hexdocs.pm/phoenix/Phoenix.Presence.html), a tool that no other web framework offers out-of-the-box.
32+
Shortly after, Slab was in a private beta with a handful of companies as users. For each major feature they had along the way, Elixir and Phoenix provided the building blocks for it. When they implemented real-time comments, they used Phoenix Channels and Phoenix PubSub. The pattern goes on: "for asynchronous processing, we simply use [Elixir tasks](https://hexdocs.pm/elixir/Task.html)". Later on, to track users editing a document and give each a different cursor color, they used [Phoenix Presence](https://hexdocs.pm/phoenix/Phoenix.Presence.html), a tool that no other web framework offers out-of-the-box.
3333

3434
Another leap in Jason's journey with Slab and Elixir was when he had to learn Erlang/OTP, a group of behaviors that ship as part of Erlang's standard library for building distributed and fault-tolerant applications.
3535

atom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ elixir_url: http://elixir-lang.org
44
---
55
<?xml version="1.0" encoding="utf-8"?>
66
<feed xmlns="http://www.w3.org/2005/Atom">
7-
7+
88
<title>Elixir Lang</title>
99
<link href="{{ page.elixir_url }}/atom.xml" rel="self"/>
1010
<link href="{{ page.elixir_url }}"/>
@@ -25,5 +25,5 @@ elixir_url: http://elixir-lang.org
2525
<content type="html">{{ post.content | xml_escape }}</content>
2626
</entry>
2727
{% endfor %}
28-
28+
2929
</feed>

development.markdown

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ José Valim created Elixir in 2012 as a Research and Development project inside
1212

1313
Elixir runs on top of the Erlang Virtual Machine, which provides a scalable and fault-tolerant foundation. Elixir was designed to leverage this foundation without performance costs and aims to contribute to the wider ecosystem whenever possible.
1414

15-
Elixir's source code is under the [Apache 2 License](https://github.com/elixir-lang/elixir/blob/master/LICENSE) and is maintained by the Elixir Core team, composed of six members: Aleksei Magusev, Andrea Leopardi, Eric Meadows-Jönsson, Fernando Tapia Rico, James Fish, and José Valim. The Elixir team works towards an even understanding of the Elixir codebase across all members so it never depends on a single person. The source code and information for contributors can be found on [the language repository](https://github.com/elixir-lang/elixir).
15+
Elixir's source code is under the [Apache 2 License](https://github.com/elixir-lang/elixir/blob/master/LICENSE) and is maintained by the Elixir Core team, composed of six members: Aleksei Magusev, Andrea Leopardi, Eric Meadows-Jönsson, Fernando Tapia Rico, James Fish, and José Valim. The Elixir team works towards an even understanding of the Elixir codebase across all members so it never depends on a single person. The source code and information for contributors can be found on [the language repository](https://github.com/elixir-lang/elixir).
1616

1717
Elixir v1.0 was released in September 2014 and a new minor version is released every 6 months, around January and July of every year. New releases are announced in the read-only [announcements mailing list](https://groups.google.com/group/elixir-lang-ann) with a link to the complete CHANGELOG. All security releases [will be tagged with "[security]"](https://groups.google.com/forum/#!searchin/elixir-lang-ann/%5Bsecurity%5D%7Csort:date). Security vulnerabilities should be disclosed to [elixir-security@googlegroups.com](mailto:elixir-security@googlegroups.com). Our [compatibility and deprecation policies](https://hexdocs.pm/elixir/compatibility-and-deprecations.html#content) are also documented.
1818

@@ -21,7 +21,7 @@ Since v1.0, the language development has become focused to provide a compact and
2121
1. are necessary for developing the language itself
2222
2. bring important concepts/features to the community in a way its effect can only be maximized or leveraged by making it part of the language
2323

24-
The language development is open, both in terms of source code and of collaborations. All features and bug fixes planned for the next releases can be found [in the issues tracker](https://github.com/elixir-lang/elixir/issues). Features that may cause a larger impact on the ecosystem are first proposed to the community in [the Elixir mailing list](https://groups.google.com/group/elixir-lang-core) as well as in [the "Elixir News" section in the Elixir Forum](https://elixirforum.com/c/elixir-news).
24+
The language development is open, both in terms of source code and of collaborations. All features and bug fixes planned for the next releases can be found [in the issues tracker](https://github.com/elixir-lang/elixir/issues). Features that may cause a larger impact on the ecosystem are first proposed to the community in [the Elixir mailing list](https://groups.google.com/group/elixir-lang-core) as well as in [the "Elixir News" section in the Elixir Forum](https://elixirforum.com/c/elixir-news).
2525

2626
Community members are welcome to propose new features for Elixir. Before submitting a proposal, members are encouraged to gather feedback from around the community in whatever venues seem best. However, in order for a proposal to be considered for inclusion by the Elixir Core team, it must go through the Elixir mailing list. This often includes discussion and refinement of the proposal. The Elixir Core team has the final say on whether a proposal is accepted or rejected. While members are encouraged to gain support from the rest of the community, popularity does not mean that a proposal will be accepted.
2727

getting-started/alias-require-and-import.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ defmodule AssertionTest do
134134
end
135135
```
136136

137-
Behind the scenes, `use` requires the given module and then calls the `__using__/1` callback on it allowing the module to inject some code into the current context. Some modules (for example, the above `ExUnit.Case`, but also `Supervisor` and `GenServer`) use this mechanism to populate your module with some basic behaviour, which your module is intended to override or complete.
137+
Behind the scenes, `use` requires the given module and then calls the `__using__/1` callback on it allowing the module to inject some code into the current context. Some modules (for example, the above `ExUnit.Case`, but also `Supervisor` and `GenServer`) use this mechanism to populate your module with some basic behaviour, which your module is intended to override or complete.
138138

139139
Generally speaking, the following module:
140140

getting-started/meta/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!DOCTYPE html>
22
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
33
<head>
4-
<title>Quote and unquote - Elixir</title>
4+
<title>Quote and unquote - Elixir</title>
55
<meta http-equiv="refresh" content="0; url=/getting-started/meta/quote-and-unquote.html" />
66
</head>
77
</html>

getting-started/mix-otp/dependencies-and-umbrella-projects.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ deps_path: "../../deps",
198198
lockfile: "../../mix.lock",
199199
```
200200

201-
Those options mean all dependencies will be checked out to `kv_umbrella/deps`, and they will share the same build, config and lock files. We haven't talked about configuration yet, but from here we can build the intuition that all configuration and dependencies are shared across all projects in an umbrella, and it is not per application.
201+
Those options mean all dependencies will be checked out to `kv_umbrella/deps`, and they will share the same build, config and lock files. We haven't talked about configuration yet, but from here we can build the intuition that all configuration and dependencies are shared across all projects in an umbrella, and it is not per application.
202202

203203
The second change is in the `application` function inside `mix.exs`:
204204

getting-started/mix-otp/ets.markdown

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ iex> :ets.lookup(table, "foo")
2929
When creating an ETS table, two arguments are required: the table name and a set of options. From the available options, we passed the table type and its access rules. We have chosen the `:set` type, which means that keys cannot be duplicated. We've also set the table's access to `:protected`, meaning only the process that created the table can write to it, but all processes can read from it. The possible access controls:
3030

3131
`:public` — Read/Write available to all processes.
32-
32+
3333
`:protected` — Read available to all processes. Only writable by owner process. This is the default.
34-
34+
3535
`:private` — Read/Write limited to owner process.
3636

3737
Be aware that if your Read/Write call violates the access control, the operation will raise `ArgumentError`. Finally, since `:set` and `:protected` are the default values, we will skip them from now on.

getting-started/module-attributes.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ defmodule Foo do
119119
Module.register_attribute __MODULE__, :param, accumulate: true
120120

121121
@param :foo
122-
@param :bar
122+
@param :bar
123123
# here @param == [:bar, :foo]
124124
end
125125
```

getting-started/sigils.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def convert(...)
161161

162162
Elixir offers several sigils to deal with various flavors of times and dates.
163163

164-
### Date
164+
### Date
165165

166166
A [%Date{}](https://hexdocs.pm/elixir/Date.html) struct contains the fields `year`, `month`, `day`, and `calendar`. You can create one using the `~D` sigil:
167167

getting-started/structs.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ iex> %User{}
137137
Doing it in reverse order will raise a syntax error:
138138

139139
```elixir
140-
iex> defmodule User do
140+
iex> defmodule User do
141141
...> defstruct [name: "John", age: 27, :email]
142142
...> end
143143
** (SyntaxError) iex:107: syntax error before: email

getting-started/typespecs-and-behaviours.markdown

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ You can see all the built-in types provided by Elixir [in the typespecs docs](ht
2929

3030
### Defining custom types
3131

32-
Defining custom types can help communicate the intention of your code and increase its readability. Custom types can be defined within modules via the `@type` attribute.
32+
Defining custom types can help communicate the intention of your code and increase its readability. Custom types can be defined within modules via the `@type` attribute.
3333

3434
A simple example of a custom type implementation is to provide a more descriptive alias of an existing type. For example, defining `year` as a type makes your function specs more descriptive than if they had simply used `integer`:
3535

@@ -39,7 +39,7 @@ defmodule Person do
3939
A 4 digit year, e.g. 1984
4040
"""
4141
@type year :: integer
42-
42+
4343
@spec current_age(year) :: integer
4444
def current_age(year_of_birth), do: # implementation
4545
end
@@ -130,7 +130,7 @@ defmodule Parser do
130130
Parses a string.
131131
"""
132132
@callback parse(String.t) :: {:ok, term} | {:error, String.t}
133-
133+
134134
@doc """
135135
Lists all supported file extensions.
136136
"""
@@ -150,7 +150,7 @@ defmodule JSONParser do
150150

151151
@impl Parser
152152
def parse(str), do: {:ok, "some json " <> str} # ... parse JSON
153-
153+
154154
@impl Parser
155155
def extensions, do: ["json"]
156156
end
@@ -162,7 +162,7 @@ defmodule YAMLParser do
162162

163163
@impl Parser
164164
def parse(str), do: {:ok, "some yaml " <> str} # ... parse YAML
165-
165+
166166
@impl Parser
167167
def extensions, do: ["yml"]
168168
end
@@ -178,7 +178,7 @@ defmodule BADParser do
178178

179179
@impl Parser
180180
def parse, do: {:ok, "something bad"}
181-
181+
182182
@impl Parser
183183
def extensions, do: ["bad"]
184184
end

install.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ If your distribution contains an old Elixir/Erlang version, see the sections bel
5656

5757
- **Slackware**
5858
* Using **Sbopkg**:
59-
* Run: `sbopkg -ki "erlang-otp elixir"`
59+
* Run: `sbopkg -ki "erlang-otp elixir"`
6060
* **Manually**:
6161
* Download, build and install from SlackBuilds.org: [`erlang-otp`](https://slackbuilds.org/repository/14.2/development/erlang-otp/), and [`elixir`](https://slackbuilds.org/repository/14.2/development/elixir)
6262

0 commit comments

Comments
 (0)