neiam
/diogramos
diogramos
public · Issues · Pulls · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
Credo: atom-or-string keys read through one helper
d62a15b · Gabe Morell · 2026-11-04 21:18
Files changed
modified
lib/diogramos/accounts/user_token.ex
+4
−1
@@ -188,12 +188,15 @@ defmodule Diogramos.Accounts.UserToken do
| 188 | 188 | end |
| 189 | 189 | |
| 190 | 190 | defp normalize_label(attrs) do |
| 191 | − case Map.get(attrs, :label) || Map.get(attrs, "label") do | |
| 191 | + case attr(attrs, :label) do | |
| 192 | 192 | str when is_binary(str) -> str |> String.trim() |> nil_if_empty() |
| 193 | 193 | _ -> nil |
| 194 | 194 | end |
| 195 | 195 | end |
| 196 | 196 | |
| 197 | + # `attrs` may be atom- or string-keyed. | |
| 198 | + defp attr(attrs, key), do: Map.get(attrs, key) || Map.get(attrs, Atom.to_string(key)) | |
| 199 | + | |
| 197 | 200 | defp nil_if_empty(""), do: nil |
| 198 | 201 | defp nil_if_empty(str), do: str |
| 199 | 202 |
modified
lib/diogramos/diagrams/canvases.ex
+4
−1
@@ -235,6 +235,9 @@ defmodule Diogramos.Diagrams.Canvases do
| 235 | 235 | %{"elements" => %{}, "order" => [], "connectors" => %{}} |
| 236 | 236 | end |
| 237 | 237 | |
| 238 | + # `attrs` may be atom- or string-keyed. | |
| 239 | + defp attr(attrs, key), do: attrs[key] || attrs[Atom.to_string(key)] | |
| 240 | + | |
| 238 | 241 | defp fresh_token do |
| 239 | 242 | :crypto.strong_rand_bytes(18) |> Base.url_encode64(padding: false) |
| 240 | 243 | end |
@@ -242,7 +245,7 @@ defmodule Diogramos.Diagrams.Canvases do
| 242 | 245 | defp ensure_folder_writable(_scope, attrs) when attrs == %{}, do: :ok |
| 243 | 246 | |
| 244 | 247 | defp ensure_folder_writable(scope, attrs) do |
| 245 | − folder_id = attrs[:folder_id] || attrs["folder_id"] | |
| 248 | + folder_id = attr(attrs, :folder_id) | |
| 246 | 249 | |
| 247 | 250 | if folder_id do |
| 248 | 251 | case Repo.get(Diogramos.Diagrams.Folder, folder_id) do |
modified
lib/diogramos/diagrams/folders.ex
+4
−1
@@ -103,7 +103,7 @@ defmodule Diogramos.Diagrams.Folders do
| 103 | 103 | defp ensure_parent_writable(_scope, %{"parent_id" => nil}), do: :ok |
| 104 | 104 | |
| 105 | 105 | defp ensure_parent_writable(scope, attrs) do |
| 106 | − parent_id = attrs[:parent_id] || attrs["parent_id"] | |
| 106 | + parent_id = attr(attrs, :parent_id) | |
| 107 | 107 | |
| 108 | 108 | if is_nil(parent_id) do |
| 109 | 109 | :ok |
@@ -115,6 +115,9 @@ defmodule Diogramos.Diagrams.Folders do
| 115 | 115 | end |
| 116 | 116 | end |
| 117 | 117 | |
| 118 | + # `attrs` may be atom- or string-keyed. | |
| 119 | + defp attr(attrs, key), do: attrs[key] || attrs[Atom.to_string(key)] | |
| 120 | + | |
| 118 | 121 | defp ensure_no_cycle(_folder, nil), do: :ok |
| 119 | 122 | |
| 120 | 123 | defp ensure_no_cycle(%Folder{id: id}, new_parent_id) when id == new_parent_id, |
Parents: 9a276fb