Skip to content

Commit ba9f0a0

Browse files
committed
Thank you Jason
Merge branch 'axelson-update-nimble-options-0.4'
2 parents bdebc65 + f904f7d commit ba9f0a0

File tree

6 files changed

+34
-9
lines changed

6 files changed

+34
-9
lines changed

lib/scenic/primitive.ex

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,24 @@ defmodule Scenic.Primitive do
228228

229229
tx =
230230
case NimbleOptions.validate(tx, Transform.opts_schema()) do
231-
{:ok, tx} -> tx
231+
{:ok, tx} -> apply_opts_shortcuts(tx)
232232
{:error, error} -> raise Exception.message(error)
233233
end
234234

235235
{:ok, id, st, tx, op}
236236
end
237237

238+
# Work around NimbleOptions rename_to deprecation
239+
# https://github.com/dashbitco/nimble_options/issues/78
240+
defp apply_opts_shortcuts(opts) do
241+
Enum.map(opts, fn
242+
{:t, val} -> {:translate, val}
243+
{:s, val} -> {:scale, val}
244+
{:r, val} -> {:rotate, val}
245+
{key, val} -> {key, val}
246+
end)
247+
end
248+
238249
# ============================================================================
239250
# styles
240251

lib/scenic/primitive/transform/transform.ex

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,12 @@ defmodule Scenic.Primitive.Transform do
5656
}
5757

5858
@opts_schema [
59-
# Note: Due to https://github.com/dashbitco/nimble_options/issues/68 any
60-
# `:rename_to` entries need to come before the keys that they are renaming
61-
t: [rename_to: :translate],
62-
s: [rename_to: :scale],
63-
r: [rename_to: :rotate],
59+
# Note: the shortcut versions are translated to the full versions in Scenic.Primitive
60+
t: [type: {:custom, Transform.Translate, :validate, []}],
6461
translate: [type: {:custom, Transform.Translate, :validate, []}],
62+
s: [type: {:custom, Transform.Scale, :validate, []}],
6563
scale: [type: {:custom, Transform.Scale, :validate, []}],
64+
r: [type: {:custom, Transform.Rotate, :validate, []}],
6665
rotate: [type: {:custom, Transform.Rotate, :validate, []}],
6766
pin: [type: {:custom, Transform.Pin, :validate, []}],
6867
matrix: [type: {:custom, Transform.Matrix, :validate, []}]

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ defmodule Scenic.Mixfile do
4747
defp deps do
4848
[
4949
{:font_metrics, "~> 0.5.0"},
50-
{:nimble_options, "~> 0.3.4"},
50+
{:nimble_options, "~> 0.3.4 or ~> 0.4.0"},
5151
{:ex_image_info, "~> 0.2.4"},
5252
{:truetype_metrics, "~> 0.5"},
5353

mix.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
2323
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
2424
"msgpax": {:hex, :msgpax, "2.2.4", "7b3790ef684089076b63c0f08c2f4b079c6311daeb006b69e4ed2bf67518291e", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "b351b6d992d79624a8430a99d21a41b36b1b90edf84326a294e9f4a2de11f089"},
25-
"nimble_options": {:hex, :nimble_options, "0.3.7", "1e52dd7673d36138b1a5dede183b5d86dff175dc46d104a8e98e396b85b04670", [:mix], [], "hexpm", "2086907e6665c6b6579be54ef5001928df5231f355f71ed258f80a55e9f63633"},
25+
"nimble_options": {:hex, :nimble_options, "0.4.0", "c89babbab52221a24b8d1ff9e7d838be70f0d871be823165c94dd3418eea728f", [:mix], [], "hexpm", "e6701c1af326a11eea9634a3b1c62b475339ace9456c1a23ec3bc9a847bca02d"},
2626
"nimble_parsec": {:hex, :nimble_parsec, "1.1.0", "3a6fca1550363552e54c216debb6a9e95bd8d32348938e13de5eda962c0d7f89", [:mix], [], "hexpm", "08eb32d66b706e913ff748f11694b17981c0b04a33ef470e33e11b3d3ac8f54b"},
2727
"parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"},
2828
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"},

test/scenic/primitive/transform_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ defmodule Scenic.Primitive.TransformTest do
4545
tx = [s: 0.6]
4646

4747
assert NimbleOptions.validate(tx, Transform.opts_schema()) ==
48-
{:ok, [s: 0.6, scale: {0.6, 0.6}]}
48+
{:ok, [s: {0.6, 0.6}]}
4949
end
5050

5151
test "combine calculates the local matrix in the right order" do

test/scenic/primitive_test.exs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,21 @@ defmodule Scenic.PrimitiveTest do
177177
}
178178
end
179179

180+
test "merge_opts supports t translate shortcut" do
181+
assert Primitive.merge_opts(@primitive, t: {10, 42}).transforms ==
182+
Primitive.merge_opts(@primitive, translate: {10, 42}).transforms
183+
end
184+
185+
test "merge_opts supports s scale shortcut" do
186+
assert Primitive.merge_opts(@primitive, s: 1.2).transforms ==
187+
Primitive.merge_opts(@primitive, scale: 1.2).transforms
188+
end
189+
190+
test "merge_opts supports r rotate shortcut" do
191+
assert Primitive.merge_opts(@primitive, r: 1.4).transforms ==
192+
Primitive.merge_opts(@primitive, rotate: 1.4).transforms
193+
end
194+
180195
test "merge_opts rejects invalid style" do
181196
assert_raise RuntimeError, fn ->
182197
Primitive.merge_opts(@primitive, fill: :invalid)

0 commit comments

Comments
 (0)