Packages

A high-performance, extensible expression evaluation engine for Elixir.

Current section

Files

Jump to
excellerate lib excellerate functions general right.ex
Raw

lib/excellerate/functions/general/right.ex

defmodule ExCellerate.Functions.General.Right do
@moduledoc """
Returns the last *n* characters from a string.
When called with one argument, returns the last character. With two
arguments, returns the last *n* characters.
## Examples
right('Hello World', 5) → 'World'
right('Hello') → 'o'
right('Hi', 10) → 'Hi'
"""
@behaviour ExCellerate.Function
import ExCellerate.Functions.Guards
@impl true
def name, do: "right"
@impl true
def arity, do: 1..2
@impl true
def call([str]) do
ensure_string!(str, name())
len = String.length(str)
if len == 0, do: "", else: String.slice(str, len - 1, 1)
end
def call([str, n]) do
ensure_string!(str, name())
ensure_integer!(n, name())
len = String.length(str)
if n >= len do
str
else
String.slice(str, len - n, n)
end
end
end