Packages
git_hub_actions
0.3.5
0.4.2
0.4.1
0.4.0
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.27
0.2.26
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A little tool to write GitHub actions in Elixir
Current section
Files
Jump to
Current section
Files
lib/git_hub_actions/sigils.ex
defmodule GitHubActions.Sigils do
@moduledoc """
This module defnies the sigils for `GitHubActions`.
"""
@doc """
Handles the sigile `~e` for GitHub actions expressions.
Quotes the given string as a GitHub expression.
## Examples
iex> ~e[github.sha]
"${{ github.sha }}"
"""
@spec sigil_e(String.t(), list()) :: String.t()
def sigil_e(string, _opts), do: String.replace("${{ #{string} }}", "\\\n", "")
@doc """
Marks the given string as quoted.
This sigil can be used to force quotes in the YAML output.
## Modifiers
* `d`: forces a double quoted string (default)
* `s`: forces a single quoted string
* `e`: escapes newlines
"""
@spec sigil_q(String.t(), list()) :: {:quoted, String.t()}
def sigil_q(string, opts) do
char =
cond do
?d in opts -> ?"
?s in opts -> ?'
true -> ?"
end
by = if ?e in opts, do: "\\\n", else: "\n"
string =
[char, string, char]
|> IO.iodata_to_binary()
|> String.replace("\\n", by)
{:quoted, string}
end
end