Current section
3 Versions
Jump to
Current section
3 Versions
Compare versions
4
files changed
+27
additions
-20
deletions
| @@ -3,11 +3,11 @@ | |
| 3 3 | {<<"description">>,<<"A small package for creating 2D markup.">>}. |
| 4 4 | {<<"elixir">>,<<"~> 1.12">>}. |
| 5 5 | {<<"files">>, |
| 6 | - [<<"lib">>,<<"lib/markex">>,<<"lib/markex/element.ex">>, |
| 7 | - <<"lib/markex/element">>,<<"lib/markex/element/operators.ex">>, |
| 6 | + [<<"lib">>,<<"lib/markex">>,<<"lib/markex/element">>, |
| 7 | + <<"lib/markex/element/operators.ex">>,<<"lib/markex/element.ex">>, |
| 8 8 | <<".formatter.exs">>,<<"mix.exs">>,<<"README.md">>,<<"LICENSE">>]}. |
| 9 9 | {<<"licenses">>,[<<"MIT">>]}. |
| 10 10 | {<<"links">>,[{<<"GitHub">>,<<"https://github.com/wmean-spec/markex">>}]}. |
| 11 11 | {<<"name">>,<<"markex">>}. |
| 12 12 | {<<"requirements">>,[]}. |
| 13 | - {<<"version">>,<<"1.1.0">>}. |
| 13 | + {<<"version">>,<<"1.1.1">>}. |
| @@ -3,10 +3,12 @@ defmodule Markex.Element do | |
| 3 3 | Creating and working with elements for 2D markup |
| 4 4 | """ |
| 5 5 | |
| 6 | + alias __MODULE__ |
| 7 | + |
| 6 8 | @typedoc """ |
| 7 9 | List of strings, where all string the same length |
| 8 10 | """ |
| 9 | - @type element :: list(String.t()) |
| 11 | + @type t :: list(String.t()) |
| 10 12 | |
| 11 13 | @doc """ |
| 12 14 | Creates new element using regular string or list of strings |
| @@ -16,7 +18,7 @@ defmodule Markex.Element do | |
| 16 18 | ## Examples |
| 17 19 | |
| 18 20 | iex> Markex.Element.new("Hello, world!") |
| 19 | - ["Hello, wordl!"] |
| 21 | + ["Hello, world!"] |
| 20 22 | |
| 21 23 | iex> Markex.Element.new(["Hello, world!", "or something idk", "."]) |
| 22 24 | [ |
| @@ -26,13 +28,13 @@ defmodule Markex.Element do | |
| 26 28 | ] |
| 27 29 | """ |
| 28 30 | @doc since: "1.0.0" |
| 29 | - @spec new(String.t()) :: element |
| 31 | + @spec new(String.t()) :: Element.t() |
| 30 32 | def new(content) when is_binary(content) do |
| 31 33 | [content] |
| 32 34 | end |
| 33 35 | |
| 34 36 | @doc since: "1.0.0" |
| 35 | - @spec new(list(String.t())) :: element |
| 37 | + @spec new(list(String.t())) :: Element.t() |
| 36 38 | def new(content) when is_list(content) do |
| 37 39 | width = Enum.reduce(content, 0, &max(String.length(&1), &2)) |
| 38 40 | Enum.map(content, &String.pad_trailing(&1, width)) |
| @@ -53,7 +55,11 @@ defmodule Markex.Element do | |
| 53 55 | ] |
| 54 56 | """ |
| 55 57 | @doc since: "1.0.0" |
| 56 | - @spec new(String.t(), non_neg_integer(), non_neg_integer()) :: element |
| 58 | + @spec new(String.t(), non_neg_integer(), non_neg_integer()) :: Element.t() |
| 59 | + def new(_ch, 0, _h) do |
| 60 | + [] |
| 61 | + end |
| 62 | + |
| 57 63 | def new(ch, w, h) do |
| 58 64 | ch |
| 59 65 | |> String.duplicate(w) |
| @@ -68,7 +74,7 @@ defmodule Markex.Element do | |
| 68 74 | "##\\n##" |
| 69 75 | """ |
| 70 76 | @doc since: "1.0.0" |
| 71 | - @spec to_string(element) :: String.t() |
| 77 | + @spec to_string(Element.t()) :: String.t() |
| 72 78 | def to_string(element) do |
| 73 79 | Enum.join(element, "\n") |
| 74 80 | end |
| @@ -79,7 +85,7 @@ defmodule Markex.Element do | |
| 79 85 | Also see `Markex.Element.size/1` |
| 80 86 | """ |
| 81 87 | @doc since: "1.0.0" |
| 82 | - @spec height(element) :: non_neg_integer() |
| 88 | + @spec height(Element.t()) :: non_neg_integer() |
| 83 89 | def height(element) do |
| 84 90 | length(element) |
| 85 91 | end |
| @@ -90,7 +96,7 @@ defmodule Markex.Element do | |
| 90 96 | Also see `Markex.Element.size/1` |
| 91 97 | """ |
| 92 98 | @doc since: "1.0.0" |
| 93 | - @spec width(element) :: non_neg_integer() |
| 99 | + @spec width(Element.t()) :: non_neg_integer() |
| 94 100 | def width(element) do |
| 95 101 | if height(element) != 0 do |
| 96 102 | String.length(List.first(element)) |
| @@ -109,7 +115,7 @@ defmodule Markex.Element do | |
| 109 115 | {4, 5} |
| 110 116 | """ |
| 111 117 | @doc since: "1.0.0" |
| 112 | - @spec size(element) :: {non_neg_integer(), non_neg_integer()} |
| 118 | + @spec size(Element.t()) :: {non_neg_integer(), non_neg_integer()} |
| 113 119 | def size(element) do |
| 114 120 | {width(element), height(element)} |
| 115 121 | end |
| @@ -124,7 +130,7 @@ defmodule Markex.Element do | |
| 124 130 | ] |
| 125 131 | """ |
| 126 132 | @doc since: "1.1.0" |
| 127 | - @spec wider(element, pos_integer(), :center | :left | :right) :: element |
| 133 | + @spec wider(Element.t(), pos_integer(), :center | :left | :right) :: Element.t() |
| 128 134 | def wider(element, n, align \\ :center) |
| 129 135 | def wider(element, n, :center) do |
| 130 136 | add_space = n - width(element) |
| @@ -160,7 +166,7 @@ defmodule Markex.Element do | |
| 160 166 | ] |
| 161 167 | """ |
| 162 168 | @doc since: "1.1.0" |
| 163 | - @spec higher(element, pos_integer(), :center | :top | :bottom) :: element |
| 169 | + @spec higher(Element.t(), pos_integer(), :center | :top | :bottom) :: Element.t() |
| 164 170 | def higher(element, n, align \\ :center) |
| 165 171 | def higher(element, n, :center) do |
| 166 172 | add_space = n - height(element) |
| @@ -210,7 +216,7 @@ defmodule Markex.Element do | |
| 210 216 | ] |
| 211 217 | """ |
| 212 218 | @doc since: "1.1.0" |
| 213 | - @spec over(element, element, :center | :left | :right) :: element |
| 219 | + @spec over(Element.t(), Element.t(), :center | :left | :right) :: Element.t() |
| 214 220 | def over(this, that, align \\ :center) do |
| 215 221 | w = max(width(this), width(that)) |
| 216 222 | this = wider(this, w, align) |
| @@ -235,7 +241,7 @@ defmodule Markex.Element do | |
| 235 241 | ] |
| 236 242 | """ |
| 237 243 | @doc since: "1.1.0" |
| 238 | - @spec beside(element, element, :center | :top | :bottom) :: element |
| 244 | + @spec beside(Element.t(), Element.t(), :center | :top | :bottom) :: Element.t() |
| 239 245 | def beside(this, that, align \\ :center) do |
| 240 246 | h = max(height(this), height(that)) |
| 241 247 | this = higher(this, h, align) |
| @@ -1,13 +1,13 @@ | |
| 1 1 | defmodule Markex.Element.Operators do |
| 2 2 | import Markex.Element, only: [over: 2, beside: 2] |
| 3 3 | |
| 4 | - @type element :: Markex.Element.element() |
| 4 | + alias Markex.Element |
| 5 5 | |
| 6 6 | @moduledoc """ |
| 7 7 | Pretty operators for actions with elements |
| 8 8 | """ |
| 9 9 | |
| 10 | - @spec element <~> element :: element |
| 10 | + @spec Element.t() <~> Element.t() :: Element.t() |
| 11 11 | @doc """ |
| 12 12 | See `Markex.Element.over/2` |
| 13 13 | """ |
| @@ -15,7 +15,7 @@ defmodule Markex.Element.Operators do | |
| 15 15 | over(top, bottom) |
| 16 16 | end |
| 17 17 | |
| 18 | - @spec element <|> element :: element |
| 18 | + @spec Element.t() <|> Element.t() :: Element.t() |
| 19 19 | @doc """ |
| 20 20 | See `Markex.Element.beside/2` |
| 21 21 | """ |
| @@ -4,7 +4,7 @@ defmodule Markex.MixProject do | |
| 4 4 | def project do |
| 5 5 | [ |
| 6 6 | app: :markex, |
| 7 | - version: "1.1.0", |
| 7 | + version: "1.1.1", |
| 8 8 | elixir: "~> 1.12", |
| 9 9 | start_permanent: Mix.env() == :prod, |
| 10 10 | deps: deps(), |
| @@ -32,6 +32,7 @@ defmodule Markex.MixProject do | |
| 32 32 | defp deps do |
| 33 33 | [ |
| 34 34 | {:ex_doc, "~> 0.24", only: :dev, runtime: false}, |
| 35 | + {:dialyxir, "~> 1.0", only: :dev, runtime: false}, |
| 35 36 | ] |
| 36 37 | end |
| 37 38 | end |